HubSpot import problems: how to fix duplicates and errors

Why HubSpot imports create duplicate contacts and companies, miss associations, or overwrite data, and how to fix and prevent each problem.

The short answer: Most HubSpot import problems come from rows HubSpot can't match to an existing record, because they have no Email, Company domain name, or Record ID, and from mapping choices made in the import wizard. Fix them by adding identifiers to every row, choosing the right import mode, and testing a small batch before you load the full file.

Symptom Likely cause Fix
Duplicate contacts Rows had no Email or Record ID Add Record IDs for existing contacts before import
Duplicate companies Rows had a company name but no domain Add a clean Company domain name or Record ID
Contacts not on their company Row missing an identifier for one of the two objects Put identifiers for both objects on every row
Updated when you meant to create, or the reverse Wrong import mode, or Record IDs in the file Pick create only, update only, or create and update deliberately
Good data overwritten Every column was mapped Skip columns, or use Don't overwrite
Rows failed Values HubSpot couldn't parse Download the error file and fix each reason

How HubSpot decides whether a row is new or existing

Every problem below traces back to one mechanic. On import, HubSpot matches contacts by Email or Record ID, and companies by Company domain name or Record ID. If a row has none of those, HubSpot has nothing to compare it to and creates a new record. HubSpot's documentation says it directly: without Email or another unique identifier, each row is imported as a new contact.

Vendor files and partner lists are full of rows like that, so in practice they fall through and become duplicates. Quill matches every row of a file to your existing records before it reaches HubSpot, but you can do the same work by hand with the steps below.

Why did my HubSpot import create duplicate contacts?

Cause. The duplicated rows either had no email, or had an email that doesn't match the one on the existing contact. There is one more trap: if you include a Record ID column, any row where that column is blank creates a new record.

Fix.

  1. Export your HubSpot contacts with Record ID, first name, last name, email, and company.
  2. In the import file, look up each row that has no email by last name and company, then confirm the first name.
  3. Paste the Record ID onto each confident match. Record ID supersedes any other identifier in the file, so the row updates that contact.
  4. Keep uncertain matches in a separate tab for a person to review.
  5. Merge the duplicates that were already created. Check the merge preview carefully, because HubSpot doesn't let you unmerge records.

Prevent it. Trim stray spaces from emails and keep one email per cell. If you know a contact's other address is stored as an additional email in HubSpot, you can use it as the identifier, but be careful: when the file has both secondary email and Record ID columns and you use the secondary email as the identifier, it replaces the contact's primary email.

Why did my HubSpot import create duplicate companies?

Cause. The file identified companies by name. HubSpot deduplicates companies on import by the primary and additional values of Company domain name, not by company name. A row that says "Acme Inc." with no domain becomes a new company even if "Acme" already exists.

Messy domains cause the same result. Vendor files often put a full website URL, a subsidiary site, or a regional domain in the website column. HubSpot's Company domain name property only keeps values up to the top-level domain and strips anything after it, such as a page path, but the domain itself still has to match the one on your existing company.

A one-person RevOps team we work with loads a vendor file every quarter with tens of thousands of contacts across thousands of companies. It took them about a full day each time, and messy website and domain fields were one of the main reasons company matches failed or created duplicates.

Two other sources of duplicate companies often show up at the same time:

  • The automatic create-and-associate setting. When it's on, HubSpot can create a company from a contact's email domain if no company with that domain exists. Different subdomains, such as example.com and info.example.com, create separate companies.
  • API and sync apps. HubSpot doesn't deduplicate companies created through the API by Company domain name, and that includes installed third-party sync apps. If an integration created companies before your import, you may have two companies with the same domain. The import then returns a "Multiple companies with this domain" error for those rows.

Fix. Normalize every website value to a bare domain (example.com), confirm it against the domain on the existing company, and add the company's Record ID where the domain is ambiguous. Merge the duplicate companies that were created.

Prevent it. Never import companies by name alone. Match names to existing companies and add Record IDs or domains first.

Why didn't my HubSpot import associate contacts with their companies?

Cause. In a multiple object import, HubSpot associates the contact and company on each row using the unique identifiers for both objects. If a row has an Email but no Company domain name or company Record ID, the contact imports with no association, or with an association to a newly created company. HubSpot reports several of these as association errors, such as "Invalid association identifier," where the records import but aren't associated.

The automatic create-and-associate setting won't fill the gap. HubSpot says it doesn't override associations from a multiple object import, and it won't create a company for a contact that had no company in that import. For freemail contacts, it looks at the Website URL property and makes no association if that's empty.

Fix. Re-import the affected rows in update mode with the contact's Email or Record ID and the company's domain or Record ID on each row.

Prevent it. Before import, filter the file for rows missing either identifier. If you're importing a conference or trade show list, where this gap is especially common, we cover that case in how to import event leads into HubSpot.

Why did my import update records when I meant to create them, or the reverse?

Cause. HubSpot has three import modes:

  • Create and update creates new records and updates existing ones it identifies.
  • Create only creates new records and ignores rows that match existing ones.
  • Update only updates existing records and ignores rows that don't match.

If you used create only on a file that contained existing contacts, those rows were skipped and show up as "Create only import" errors. If you used update only, rows that didn't match anything were skipped as "Update only import" errors. With create and update, a row whose Email or Record ID matches an existing record updates it, even if you thought of it as a new lead.

Fix and prevent it. Download the rows with errors and re-import them in the right mode. Next time, decide the mode before you open the wizard. For a vendor refresh where most rows should already exist, update only is safer, and you can then import the leftovers as a separate create only file after review.

Why did my HubSpot import overwrite good data?

Cause. Every mapped column updates the matched record. If your file has an older job title, a stale phone number, or a vendor's version of the industry, it replaces the value your team entered. Blank cells are not the problem: HubSpot ignores blank cells and won't clear an existing value with them.

The team with the quarterly vendor file found that most companies hadn't changed since the last load. The real work was the small share that had changed, and that's where the mistakes hid. A file can be almost entirely accurate and still overwrite good values with the small share that is wrong.

Fix. Open a few affected records and use View property history to see each property's previous values, when they changed, and the source. To roll back many records at once, HubSpot's restore tool can return records to an earlier state within the last 14 days, filtered to a specific import. It needs Super Admin permissions and a Starter, Professional, or Enterprise subscription.

Prevent it. In the mapping step, choose Don't import column for anything you don't need, and select Don't overwrite for properties your team owns. Deciding which source should win for each field is a survivorship question, and we cover it in CRM survivorship rules.

Why did rows fail in my HubSpot import?

Cause. HubSpot couldn't parse or validate a value. After the import, click View rows with errors to see each row and its error, and download the rows as a file. The errors we see most in bulk files are:

  • Failed validation of Email: the email isn't a valid format.
  • Invalid enumeration option: a dropdown value in the file doesn't match any option. Values must match the option's label or internal value.
  • Ambiguous enumeration option: the value matches more than one option.
  • Could not parse date: the dates don't match the format you selected in the date format dropdown.
  • Could not parse number: a number column contains text or symbols.
  • Duplicate record ID: the same Record ID appears on more than one row.

Fix and prevent it. Correct the values in the downloaded error file and import it again. Next time, compare every dropdown column to the property's options, confirm the date format, and strip currency symbols and commas from number columns.

How do I undo a HubSpot import?

HubSpot has no single undo button for an import. What it does support:

  1. Delete records the import created. From the imports page, hover over the import and choose View records to see every record from that file, then select and delete them. Record Source Detail 1 is also set to the import name on records an import creates, which helps you filter for them.
  2. Reverse updates with the restore tool within 14 days, as described above. HubSpot says deleting records does not reverse updates an import made to existing records. Outside the restore window, you have to re-import the correct values or edit them by hand.
  3. Restore deleted records from the recycling bin within 90 days if you deleted the wrong ones.

Merges are the exception. If you merged records to clean up after an import, HubSpot doesn't let you unmerge them.

If your import is part of a larger move between systems, the same identifier problems apply at scale, and we cover them in Salesforce to HubSpot migration duplicates.

A checklist before every HubSpot import

  • Every contact row has an Email or Record ID.
  • Every company row has a clean Company domain name or Record ID.
  • Multiple object files have identifiers for both objects on every row.
  • The file has no duplicate rows or repeated Record IDs.
  • You chose the import mode on purpose.
  • Columns you don't need are set to Don't import column.
  • Properties your team owns are set to Don't overwrite.
  • Dropdown values match the property options, and the date format is confirmed.
  • You tested 10 to 20 rows and checked matches, associations, and values before importing the rest.

How Quill helps

Quill runs an agent that takes your file as-is and matches each row to existing HubSpot contacts and companies, including rows with no email or only a company name. It flags uncertain matches for a person to review and imports the rest without overwriting values you trust. See CRM Hygiene, or book 15 minutes to walk through one of your files.

Frequently asked questions

Does HubSpot deduplicate contacts on import?

Yes, but only by Email or Record ID. A row with neither, or with an email that differs from the existing contact's, creates a new contact.

Does HubSpot deduplicate companies by name on import?

No. HubSpot deduplicates companies on import by the primary and additional Company domain name values, or by Record ID. A row with only a company name creates a new company.

Will blank cells in my import file erase existing values?

No. HubSpot ignores blank cells, so an empty cell leaves the existing value in place. Only cells with a value overwrite what's in HubSpot.

Can I undo a HubSpot import?

Partly. You can delete records an import created from the import's record view, and reverse updates within 14 days with the restore tool if you're a Super Admin on a paid tier. Merges can't be undone.

Sources

  1. Deduplicate records in HubSpot, HubSpot Knowledge Base
  2. Import records for a single object, HubSpot Knowledge Base
  3. Import records for multiple objects, HubSpot Knowledge Base
  4. Format import files, HubSpot Knowledge Base
  5. Review and troubleshoot record import errors, HubSpot Knowledge Base
  6. View and analyze past imports, HubSpot Knowledge Base
  7. Restore CRM changes, HubSpot Knowledge Base
  8. Restore deleted records, HubSpot Knowledge Base
  9. Merge records, HubSpot Knowledge Base
  10. View a record's property history, HubSpot Knowledge Base
  11. Automatically create and associate companies with contacts, HubSpot Knowledge Base
  12. View and use record source properties, HubSpot Knowledge Base

See what we find in your data

It starts with a 15-minute call. Then we run a diagnostic, show you the issues in your data, and build agents for them.

Prefer email? Reach us at hello@tryquill.com. We respond to every message personally.

Tell us what's broken

We reply within one business day.

One last step

Everything you entered is filled in below. Pick where you'd like to send it from.