GuideFix itImportsSmart CRM

HubSpot import created duplicate contacts? Why it happens and how to fix it

You imported a list of people who were already in HubSpot, and now half of them exist twice. HubSpot did exactly what the file told it to. Here is how to confirm it, clean it up, and set up the next import so it updates instead of duplicating.

Subscription
Any tier (merge tool needs Professional)
Permissions
Import access; Data quality tools to merge
Time
15 min · Intermediate
Last verified

Short answer

HubSpot only matches an imported row to an existing record by a unique identifier: Email for contacts, Company domain name for companies, Record ID for any object, or a custom property set to require unique values. If that column is missing, empty, or mapped to the wrong property, every row becomes a new record. Check New versus Updated records on the import, isolate the import's records in a segment, merge, and map the identifier properly next time.

1. Confirm the import created the duplicates

Before merging anything, check what the import actually did. Go to Data integration (imports moved here from the old Imports page). The Import a file card starts new imports, and your past imports are listed underneath.

HubSpot Data integration page with the Import a file card highlighted
Imports now live under Data integration.

Scroll to Monitor your imports & syncs and look at the File imports tab. The two columns that matter are New records and Updated records. If you imported 500 people you already had and the import shows 500 new and 0 updated, that is your duplicate batch.

File imports list with the New records and Updated records columns highlighted
New records versus Updated records tells you whether the import matched anything.

Click the import's name for the summary. It shows import rows, new records, updated records, and new associations side by side, plus an Errors tab.

Import summary card showing import rows, new records, updated records, and new associations
The import summary. The uploader's name is blurred.
Check errors early

HubSpot stops showing error details for imports older than one year. The count stays, but the reasons are gone, so review a bad import while the details are still there.

2. Why HubSpot created new records instead of updating

HubSpot does not compare names. It matches an imported row to an existing record only through a unique identifier:

  • Email for contacts. If a contact with that email exists, the import updates it. Only mapped properties change, and nothing gets deleted.
  • Company domain name for companies, using both primary and secondary domains.
  • Record ID for any object. If you map Record ID, it overrides every other identifier in the file.
  • A custom property that requires unique values, which you set on the property's Rules tab. You can have up to ten per object.
Contact properties settings filtered to the Record ID property
Record ID is a default property on every object. Export it to update existing records by import.

So duplicates usually come from one of these:

  • No identifier column. Without Email (contacts) or Company domain name (companies), every row of the file becomes a new record.
  • The column is there but mapped to the wrong property. If your "Email Address" column was mapped to a custom text property instead of HubSpot's Email property, HubSpot has nothing to match on. On the mapping screen, the correct identifier property shows a key icon.
  • A Record ID column with blanks. Rows with an empty Record ID create new records, even if the email matches.
  • Companies created by the API or a sync app. Those are not deduplicated by domain at all, so an import can match the wrong one or none.

One more behavior that looks like a bug: if two contacts already share the same email, the import does not pick one. It errors on that row and skips it.

3. Isolate the records that import created

Do not go hunting through the whole database. On the import summary, click Actions and choose Add imported contacts to segment. Now you have a list of exactly the records this import touched, which you can review, export, or work through one by one.

Import summary Actions menu with Add imported contacts to segment highlighted
Turn the import into a segment so you only clean what it created.

4. Merge the duplicates

HubSpot's duplicate manager pairs up likely duplicates for you. On the Contacts page, open the more-actions menu (the three dots at the top right, which replaced the old Actions button) and select Manage duplicates.

Contacts page more-actions menu with Manage duplicates highlighted
Three-dot menu (1), then Manage duplicates (2). Contact details are blurred.

The duplicates tool lists suggested pairs and lets you merge or reject each one. It also shows duplicate alerts and any custom rules.

Data Quality duplicates tool with Duplicate alerts and Custom rules cards
The duplicates tool under Data Quality.
  • Reviewing pairs one at a time needs a Professional or Enterprise subscription and shows up to 10,000 pairs.
  • Bulk merging and custom duplicate rules need Data Hub Professional or Enterprise.
  • By default HubSpot compares first name, last name, email, IP country, phone number, zip code, and company name for contacts.
  • You need Data quality tools access plus edit access to all contacts (or Super Admin) to use it.
Merges are permanent

A merged record cannot be split back apart. Spot-check a few pairs before you merge in bulk, especially when two people share a generic inbox like info@ or sales@.

5. Set up the next import so it updates

  • Contacts: include an Email column and map it to HubSpot's Email property, the one with the key icon.
  • Companies: include Company domain name in the plain domain format (example.com, no https or www).
  • Updating anything else (deals, tickets, custom objects): export the records first with their Record ID, edit the export, and import it back with Record ID mapped.
  • No email or domain? Export existing records with Record ID, match them to your file with VLOOKUP, and split the file into one import of matched rows (with Record ID) and one of genuinely new rows.

Sources

New field notes by email

One email when a new article publishes.

Still stuck?

If this did not fix it, the problem is probably specific to your setup. Book a call and we will look at it together.

Book a call with Sam