Help centre / Contacts and data quality

HubSpot import errors: why imports fail, skip rows or create duplicates

How to read HubSpot's import error file, fix the common errors, and stop imports creating duplicate records.

By Abdur Rahim Mostafa, HubSpot consultant · Updated 26 October 2026 · 5 min read

When a HubSpot import fails or only half works, the import itself tells you why. Every import has an error table and a downloadable error file with the error code, the reason and the values from each problem row. Duplicates are a separate problem. They happen when the file has no column HubSpot can match on, so every row is treated as a new record.

So check two things first. Open the import's summary and click Download errors as file, which gives you a zip with a CSV of every error. Then, if the import created duplicates, check whether the file had an Email column for contacts, a Company domain name column for companies, or a Record ID column, and whether that column was mapped as the unique identifier. HubSpot marks it with a key icon on the mapping screen.

Why HubSpot imports fail or create duplicates

The file doesn't meet HubSpot's requirements

HubSpot accepts .csv, .xlsx and .xls files with one sheet, a header row and fewer than 1,000 columns. Use UTF-8 encoding if the file has non-English characters. As of October 2026 a file can be up to 512 MB on paid plans and 20 MB on free tools, with up to 1,048,576 rows per file (import file requirements). Errors such as Invalid sheet count, Invalid file type and Row data too large point here. A column with no header gives you Incorrect number of columns, and its data is skipped.

Values HubSpot can't read

Dropdown values have to match an existing option's label or internal value, and HubSpot's own dropdowns, such as Lifecycle stage, need the internal value or the English label. Anything else shows as Invalid enumeration option or Ambiguous enumeration option, and the row comes in without that value. Dates that don't match the format you picked fail with Could not parse date, often because day and month are swapped. Owners must match an active user, so use the user's email if two people share a name. Multiple checkbox values are separated with a semicolon and no spaces. The full list of codes is in HubSpot's import errors article.

Required properties are missing

HubSpot lists Email as the property to include for contacts. New deals need a deal name, a pipeline and a deal stage that already exist, and the stage has to belong to that pipeline. New tickets need a name, a pipeline and a status. Rows without them fail with Missing required property and aren't imported.

The import mode doesn't fit the file

A Create new only import skips rows that match existing records, and an Update existing only import skips rows that don't match anything. If a large share of rows was skipped with Create only import or Update only import errors, run it again with Create and update.

No unique identifier, so every row is new

If a contacts file has no email or other unique identifier, HubSpot imports each row as a new contact. A Record ID column with blank cells creates new records for those rows. If you choose a custom unique property for companies, HubSpot stops enforcing unique domains, so duplicate domains can come in. Associating records in the same file also needs a unique identifier on every row. Without one, the import creates duplicate records. Repeated rows in the file show up as Duplicate row content or Duplicate record ID.

The import worked but nothing changed

Blank cells never clear an existing value. A property mapped with Don't overwrite ticked keeps its old data. And imports only move a lifecycle stage forward, which the lifecycle stage article explains.

You hit a limit

Paid plans can run 500 imports and 10,000,000 rows in a rolling 24 hours, and free tools 50 imports and 500,000 rows. Only three imports run at once and the rest queue. A Limit exceeded error means the account has reached its record limit for that object.

How to fix a failed import

  1. Read the errors. Download the error file from the import summary and sort it by error type. A single wrong date format or dropdown label can account for a lot of rows.
  2. Fix the source file. Swap dropdown labels for internal values, correct the date format, and use owner emails in place of names. If you spot errors on the mapping screen before you finish, you can use Edit column values there without uploading again.
  3. Clean up any duplicates the import made. On the contacts index page, use Advanced filters and the Import filter to show records from that import, or open the import's Records tab. Delete the new duplicates, or merge them if they already have activity. Deleting doesn't undo updates the import made to existing records (past imports).
  4. Re-import only the failed rows. Use Download rows with errors as file, fix those rows, and import them with Create and update and the right unique identifier mapped.
  5. For a big update, match IDs first. Export the existing records with their Record IDs, match them to your file in a spreadsheet, and split it into one file for updates and one for new records.

How to stop it happening again

Always include Email or Record ID, and confirm the key icon on the mapping screen before you finish. Try a file of ten rows before the full import. Tick Don't import data in unmapped columns so stray columns don't create surprises. Remember that imported contacts stay non-marketing unless you choose the marketing option in a single-object import, and multi-object imports are always non-marketing (how contacts become marketing).

From client work

For Kingstown College I imported more than 20,000 student and prospect profiles and more than 7,000 journeys from Full Fabric. Everyone came in as a non-marketing contact, and 1,734 unsubscribes were opted out of all email on import. For My Heating Engineer I loaded 747 historical jobs as deals, each keyed on Arthur Online's own job ID. Work order numbers can repeat across property managers, so matching on them could have updated the wrong agency's deal.

If you have a large or messy import coming up, I can check your portal and the file with you before it runs.

Questions

Can I undo a HubSpot import?

Not directly. You can delete the records an import created from its Records tab, but changes it made to existing records stay until you re-import the old values or edit them.

Why does HubSpot say my dropdown value is invalid when it looks right?

The value has to match the option's label or internal value exactly. Check the property's options in settings, and for HubSpot's default dropdowns use the internal value or the English label.

Why were fewer contacts created than rows in my file?

Rows that matched an existing email, or an existing contact's secondary email, updated that contact. Rows with errors such as a missing required property weren't imported at all.

Did this fix it?

Written by Abdur Rahim Mostafa. I'm an independent HubSpot consultant with 12 years of HubSpot work. I fix and build HubSpot portals, integrations and automation for teams in the US, UK and Australia. See my case studies or find me on LinkedIn.

Can't find your fix?

Book a free 30-minute call and show me what's happening in your portal. If it needs work, you get a written scope and one fixed price.

Book a free 30-minute call