Why your HubSpot import is failing
What each import error actually means and how to fix it, plus the imports that do not fail at all and quietly overwrite what you already had.
By Operelio team · Updated July 2026
On this page11
- 1.First, get the real error
- 2.The file itself was rejected
- 3.Your columns did not match HubSpot
- 4.Individual values were rejected
- 5.Duplicates and identifiers
- 6.It said it worked, but nothing changed
- 7.The ones you cannot fix in the file
- 8.The imports that do not fail
- 9.A checklist that prevents most of it
- 10.Fixing it once instead of per error
- 11.Frequently asked questions
First, get the real error
HubSpot does not fail an import as one lump. It imports the rows it can and lists the rows it could not, with a reason against each. That list is the useful part, and it is easy to miss.
Open the import from the imports list and download the error file. It gives you the failing rows with the error name attached, which turns a vague failure into a specific fix. Everything below is keyed to those error names.
Worth knowing before you go back to the spreadsheet: some of it can be fixed inside the import tool. At the mapping stage you can replace a value and HubSpot applies the change to every row in that column where it appears, which handles a misspelling repeated across hundreds of rows. That works well for one or two bad values. It stops being the quicker route when several columns need work, or when the same file arrives every month.
If the whole import was rejected before it got to the rows, it is almost always one of the file-level problems in the next section. HubSpot checks the shape of the file before it looks at the contents.
The file itself was rejected
These stop the import before a single row is read. They are the quickest to fix and the most common cause of a file that will simply not upload.
| Error | What it means | The fix |
|---|---|---|
| Incorrect number of columns | At least one column has data in it but no header | Give every column a header, or delete the stray column. A single value pasted into an unlabeled column does this. |
| Invalid file type | The file is not a .csv, .xls, or .xlsx | Save or convert it. A .numbers, .tsv, or Google Sheets link will be refused. |
| Invalid sheet count | The workbook has more than one sheet | Send one sheet. Export the sheet you want on its own. |
| Invalid spreadsheet | The file is corrupt or not really a spreadsheet | Open it, save it again as .csv or .xlsx, and retry. |
| Row data too large | A single cell or row holds more than 1 MB | Find the offending cell. It is usually a note or description field with something pasted into it. |
Your columns did not match HubSpot
These are about the header row and the properties behind it. HubSpot has to turn each of your column names into one of its own properties, and it will tell you when it cannot.
| Error | What it means | The fix |
|---|---|---|
| Property definition not found | A column header does not match any HubSpot property | Map it to an existing property during the import, or create the property first. Renaming the column to the exact property name avoids the question. |
| Missing required property | A property HubSpot requires has no value in some rows | Fill the gaps, or filter those rows out and handle them separately. |
| Invalid required property | A required property has a value HubSpot will not accept | Check the format that property expects. This is usually email, a date, or a number. |
| Property validation rule error | A value breaks a validation rule set on the property | Look at the rule on the property in HubSpot. Someone on your team set it, and the file has to satisfy it. |
Individual values were rejected
These are the ones that let most of the import through and quietly drop the rest, which is why an import can look successful and still leave you short.
| Error | What it means | The fix |
|---|---|---|
| Invalid enumeration option | A dropdown value does not match any existing option | Either correct the values in the file or add the option in HubSpot. This is the classic one behind a country column with fourteen spellings. |
| Ambiguous enumeration option | The value matches more than one option, or uses the label where HubSpot wants the internal value | Use the internal value, not the display label. |
| Could not parse date | The date does not match the format you picked during the import | HubSpot asks you to choose a date format when you import. Pick the one your file actually uses, or convert the column to match. |
| Could not parse number | A number property contains something that is not a number | Strip the currency symbols, commas, and any text such as n/a. |
| Could not parse row | The row cannot be processed at all | Usually a stray delimiter or line break inside a cell. Re-save the file as CSV and check that row. |
| Failed validation of Email | The address is not shaped like an email | Fix or remove it. Dead addresses import fine, so this is about format, not deliverability. |
| Could not find owner | The owner value does not match an active HubSpot user | Use the owner's email address rather than their name. |
| Multiple owners found | The owner name matches more than one user | Use the email address instead. |
Duplicates and identifiers
HubSpot matches on a unique identifier, usually email for contacts and domain for companies. Most of these errors mean your file disagrees with itself about which record is which.
| Error | What it means | The fix |
|---|---|---|
| Duplicate unique property value | Two rows carry the same unique identifier | Deduplicate the file before importing. HubSpot will not choose between them for you. |
| Duplicate record ID | The same record ID appears more than once | Keep one row per record, the most recent one. |
| Invalid record ID | A record ID does not exist in HubSpot | Export the current records to get real IDs, or match on email instead. |
| Multiple companies with this domain | The domain matches several company records | Merge the duplicates in HubSpot first, then re-import. |
Email matching is case-insensitive in HubSpot, but a leading or trailing space is not the same address. If updates are landing as new contacts, check for whitespace before you check anything else.
It said it worked, but nothing changed
This is not really an error, and it catches people out more than the errors do. HubSpot asks whether the import should create records, update them, or both, and it does exactly what you chose.
Create only import means your file matched existing records and HubSpot left them alone, as instructed. Update only import means the opposite: rows that matched nothing were skipped rather than created. If you meant to do both, choose create and update, and run it again.
The ones you cannot fix in the file
Some errors are about your HubSpot account rather than your spreadsheet, and no amount of cleaning will move them.
Association errors mean the identifiers linking records to each other are missing, repeated, or too long, and association labels have to exist in HubSpot before an import can use them. Limit exceeded means you have hit your record allowance. GDPR blocklisted email means those contacts cannot be added by import at all, whatever the file says. Those four are HubSpot-side decisions, and the file is not the lever.
The imports that do not fail
Every error above announces itself. The imports that cause real trouble are the ones that succeed. Nothing is rejected, the summary looks healthy, and the damage only surfaces days later when a report is wrong or a rep asks why a contact went cold.
Experienced HubSpot admins consistently name the same handful. An import can overwrite Original Source, which is the field your attribution reporting rests on. It can move Lifecycle Stage, sometimes backwards. It can replace tidy dropdown values with free text typed by whoever built the file. It can break company associations, change record owners and the routing that depends on them, and land values in the wrong property entirely because two columns had similar names.
The one that surprises people most: an import can trigger workflows. If enrollment criteria match the records you just touched, automation fires on all of them at once, and that can mean live emails going out to a few thousand people who were not expecting them.
The question worth asking before any import is not whether the file is clean. It is: what is this file allowed to change? Everything else follows from the answer.
A checklist that prevents most of it
None of this is difficult. It is the difference between an import you can undo and one you cannot.
Export a backup of the records you are about to touch
Before anything else. HubSpot has no undo for an import, and property history only tells you what changed one record at a time. An export you already have is worth more than any amount of care afterwards.
Run a sample first
Twenty or thirty rows. Import them, then open two or three of those records and read the property history to see exactly which fields the import wrote. This is the step people skip and then wish they had not.
Decide what the file is allowed to change
Map only the columns you intend to update. A column that is in the file but should not overwrite anything is safer left unmapped than mapped and hoped about. Treat Original Source, Lifecycle Stage, and owner fields as protected unless changing them is the actual goal.
Check what automation will fire
Look at which workflows enroll on the properties you are about to write. If the import should not set anything off, turn those workflows off for the duration, or import into a staging property instead.
Put untrusted data in its own field
When a list comes from a conference badge scanner or a bought file, the job title in it is a claim, not a fact. Writing it into a separate imported or submitted field keeps your clean data clean and still gets the new information in.
Fixing it once instead of per error
Most of the list above comes from three things: a header row that does not match, values that do not match a dropdown, and duplicates. HubSpot lets you patch some of these in the import tool one value at a time, which is fine once. It is the wrong shape when the same export arrives every month, because you are redoing the same corrections by hand each time.
Clean Headers standardizes the header row and removes the blank and duplicate names behind Incorrect number of columns and Property definition not found. Find and Replace collapses the spelling variants behind Invalid enumeration option. Deduplicate removes the repeated identifiers behind Duplicate unique property value. Excel to CSV takes one sheet out of a multi-sheet workbook, which is Invalid sheet count. The CRM Formatter maps your columns onto HubSpot's real property names and shows a preview of what will be created and updated before anything is written.
Dates have two fixes and it is worth knowing both. HubSpot asks you to pick a date format during the import, so choosing the one your file already uses often solves it without touching a cell. When the column itself is inconsistent, which is the harder case, Health Check flags the mixed formats and its Standardize dates fix converts the whole column to YYYY-MM-DD.
Map your columns onto HubSpot's real property names and see what will be created and updated before it writes.
Related
Frequently asked questions
Why does my import say Incorrect number of columns when the columns look fine?
There is data in a column with no header. It is often a single stray value pasted to the right of your real data, or a formatting mark Excel kept. Delete the empty column entirely rather than clearing the cell, then save again.
Why did HubSpot import the contacts but leave some fields empty?
Those values were rejected individually while the row itself succeeded. It is almost always Invalid enumeration option on a dropdown property, or Could not parse number or date. The error file lists them.
Why is my update creating new contacts instead of updating existing ones?
The unique identifier is not matching. Check that the email column is mapped as the identifier, and check for leading or trailing spaces, which make an otherwise identical address a different one.
Can I import into HubSpot from Excel, or does it have to be CSV?
Both work. HubSpot accepts .csv, .xls, and .xlsx, but the workbook must contain only one sheet. Multi-sheet workbooks are rejected with Invalid sheet count.
What date format does HubSpot want?
There is no single one. You choose the format during the import, and the error appears when the file does not match your choice. If the column is consistent, pick the matching format. If the column has mixed formats, which is the usual cause, Health Check flags it and converts the column to YYYY-MM-DD.
Can an import trigger my workflows?
Yes, and this catches people out badly. If a workflow enrolls on a property your import writes, it fires for every record you touched, which can mean live emails to thousands of contacts at once. Check which workflows enroll on the properties you are mapping before you import, and turn them off for the run if they should not fire.
How do I check what an import actually changed?
Open a few of the affected records and read the property history, which shows the previous value and what the import wrote over it. Do this on a small sample import before running the full file. HubSpot has no undo, so the only real safety net is the export you took beforehand.
Why did my import create new contacts when the emails already existed?
Usually the unique identifier was not set to email, or the import mode was create-only. Differences in capitalization are also reported as a cause. Lowercasing the column and trimming stray spaces costs nothing and removes the question entirely.
Will importing overwrite data already in HubSpot?
It can, depending on the mode you pick and whether the column has a value. If you are pushing from Operelio, the preview shows how many records will be created, updated, and skipped, and you can choose to fill only fields that are currently empty.
Ready to get started?
Upload a file and run your first transformation. Free, no credit card required.