If you import a spreadsheet without the right identifier column, HubSpot creates a new record for every row—even if half those contacts already exist in your account. Here’s how the matching works and where it can go wrong.

The three identifiers HubSpot accepts for contacts

HubSpot requires a unique identifier column to match an incoming row to an existing contact rather than create a duplicate. For contacts, three options are accepted:

  • Email — the contact-specific match key
  • Record ID — the internal HubSpot ID, available by exporting existing records
  • A custom property set to require unique values

Email is one accepted choice for contact imports and doesn’t require a prior export from HubSpot.

What Email matching actually does

When HubSpot finds a contact with the same email address as an incoming row, it updates that existing record rather than creating a new one. Only the properties you’ve mapped in the import are touched; nothing is deleted.

The failure case is worth knowing: if your file has no Email column (or no other identifier), every row is imported as a new contact. You also can’t import through an email collision—if multiple records in your account already share the same address, HubSpot returns an error for that row and skips it.

How Record ID behaves differently

Record ID lets you update contacts you’ve already exported from HubSpot, including contacts with no email address. The catch is that any row missing a Record ID value creates a new record, even if a matching contact exists. If you’re importing an external file rather than a re-import of HubSpot data, it’s worth checking for existing records first—HubSpot’s own documentation flags this specifically.

The secondary-email trap

There’s one scenario worth handling carefully. If your import file includes both a Secondary Email column and a Record ID column, and you use the secondary email as the identifier, HubSpot will overwrite the contact’s primary email with that secondary address. To avoid that, leave the Record ID column out when you’re importing secondary emails as identifiers.


In short: include a unique identifier for contact imports, use Record ID only when every row has a value, and don’t combine a secondary-email identifier with Record ID unless you intend to replace the primary address.