Clean a CSV before a HubSpot import
To clean a CSV for a HubSpot import, fix the phone column to E.164, lowercase and validate the email column, then remove duplicate rows by email — in that order. Sigmera does all three in your browser, so your contact list is never uploaded to a server and stays GDPR-safe by design.
Not sure what HubSpot means by a valid phone value? Here is what E.164 format is, with examples.
Last updated: October 2026
Why messy exports break the import
A CSV exported from a webform, an old spreadsheet, or another CRM almost never lines up with what HubSpot expects. Phone numbers arrive as (415) 555-0132, 415.555.0132, and +1 415 555 0132 all in the same column. Emails have stray capitals and trailing spaces. The same person appears three times. When you push that into HubSpot, the import either fails outright, silently drops rows, or — worse — creates duplicate contacts that pollute your database and inflate your seat count. Cleaning up afterwards inside HubSpot is slow and error-prone. It is far cheaper to fix the file first.
If your list is still an Excel workbook, save it as a CSV first — HubSpot imports comma-separated files, and working in plain text keeps every cleanup step below predictable.
Step by step: prep your CSV for HubSpot
- 1. Clean the phone-number column. Open the phone-number cleaner and convert the whole column to E.164 (
+14155550132) so HubSpot stores it as a valid phone property. - 2. Normalise the email column. Open the email-column cleaner to lowercase, trim, and validate addresses, dropping the ones HubSpot would reject.
- 3. Remove duplicate contacts. Open the duplicate remover and match on the email column so each contact appears once.
- 4. Preview, download, and import. Check the cleaned preview, download the file, and map the columns in HubSpot’s import wizard.
How to import a CSV to HubSpot once it is clean
The cleaning above is the hard part. To import a CSV to HubSpot, open CRM → the object you are importing (Contacts, Companies, Deals) → Import, choose “Start an import”, pick a file from your computer, and select one object and one file. HubSpot then asks you to map each column header to a property, and flags any header it cannot match so you can map it by hand or skip it.
For a one-off import, doing those browser steps yourself is usually fastest. If the same handoff repeats, a file cleaner stops where the clean CSV ends; a desktop agent can continue into the importer. See how Lapu AI can automate the browser side of the workflow while keeping form submissions behind an approval step.
Two details decide whether the import updates records or duplicates them. First, contacts are keyed on Email or Record ID — HubSpot marks the unique identifier with a key icon in the mapping screen. If your email column is inconsistent, rows that should match an existing contact will instead create a new one, which is exactly why the dedupe step runs on email. Second, the file has to fit HubSpot’s limits.
HubSpot import file limits
- Format: a
.csv,.xlsx, or.xlsfile containing only one sheet. - Size: up to 20 MB on free tools, up to 512 MB on Starter, Professional, and Enterprise.
- Rows: up to 500,000 per day on free tools; paid tiers allow up to 10,000,000 per day with a limit of 1,048,576 rows per file.
- Columns: fewer than 1,000, with a header row whose column headers correspond to HubSpot properties. Header order does not matter.
Limits per HubSpot’s import file requirements (checked July 2026). If your file is an Excel workbook with several sheets, split it or export the one sheet you need as CSV first. HubSpot keys contacts on separate First name and Last name properties, so a single Full Name column has to be split into first and last name before the mapping step. If the list is still in a workbook, Text to Columns or Flash Fill does the same split — see how to separate names in Excel.
Date, currency, and phone formats HubSpot accepts
Phone and email get all the attention, but a date column is the quieter way an import goes wrong: nothing errors, the records just land on the wrong day. HubSpot is generous about the shape of a date and unforgiving about mixing shapes. Its import guide accepts day month year (28/10/2023), month day year (10-28-23), and year month day (2023.OCT.28); months may be a number, three letters, or a full name (10, OCT, October); years may be two digits or four; and the separator may be a slash, hyphen, or period.
The trap is a single column that holds more than one convention — typically because rows came from two exports. 03/04/2026 is 3 April to one system and 4 March to another, and HubSpot cannot tell which you meant. Settle the whole column on one order before you import; a find-and-replace pass over the CSV is enough to normalise stray separators without touching the rest of the file.
Two smaller rules from the same page. Currency must use one of the account’s accepted currencies and be written with decimals — 123.45, no symbol and no thousands separator. Phone numbers go in as +[country code][number], with an extension appended as ext[number] (+11234567890 ext123) — the same E.164 shape step 1 produces, which is the reason that step comes first.
Date, currency, and phone rules per HubSpot’s import file requirements (checked August 2026).
Importing contacts and companies in one job
A single import can create the records and the links between them. HubSpot calls this importing multiple objects, and it takes one of two shapes. In a one-file import, each row carries the columns for both objects and you map the unique identifier for each. In a two-file import you choose Multiple files, select a file per object, and then tell HubSpot which common column appears in both. That route is capped: two objects, or one object and one activity, per import.
The common column is where these imports quietly fail, and the fix belongs in the CSV rather than in HubSpot. One file has to hold a unique value per row in that column — company name, typically — and the other file repeats those exact values to say which record each row attaches to. If the company file lists Acme Ltd once while the contact file spells it Acme Ltd., ACME LTD, and Acme Ltd across three rows, those three contacts associate with nothing and import as orphans. Settling the spelling with a find-and-replace pass over that one column, then confirming the object file has no repeated values in its key column, is the whole job.
Reading the errors HubSpot hands back
Errors surface twice. During mapping HubSpot counts the problems it can already see and lets you correct the values or skip those rows before the job runs. On the summary screen afterwards, Download errors as file gives you a CSV of the affected rows with a reason attached to each. Start there rather than in the CRM — the error names are specific enough to point at the column at fault.
- Invalid email and Could not parse date — one column is inconsistent. These are the two the cleaning steps above are designed to prevent.
- Invalid enumeration option — a value that is not one of the dropdown’s existing options. Match the spelling in the CSV to the property, or add the option in HubSpot first.
- Duplicate unique property value and Duplicate row content — the same key appears twice in the file. Deduplicating on email before the upload removes this class outright.
- Association record not found — the linking column did not match anything, which is the common-column mismatch described above.
- Property definition not found — a column header that maps to no HubSpot property. Rename the header or skip the column at the mapping step.
Association and error behaviour per HubSpot’s guide to importing records for multiple objects and its list of import errors (both checked September 2026).
Make dropdown values match HubSpot’s options
“Invalid enumeration option” is the error a cleaning pass can prevent most cheaply. HubSpot’s import-file guide says each value in a dropdown or radio select column must match either the label or the internal value of one of the property’s options; for default properties such as Lifecycle stage and Industry, that means the internal value or the English label. A multiple-checkbox column takes several options separated by a semicolon with no spaces, and a single checkbox reads True or Yes as checked and False or No as unchecked (checked October 2026).
Exports from other systems rarely use those exact strings. Before the import, list the distinct values in the column, then add a replace step per variant with Match entire cell only ticked: Hot lead to the label your property defines, Y to Yes. Whole-cell matching matters here, because a plain replace of Y would also rewrite every other value that contains the letter. For a multiple-checkbox column, a plain replace of ; with ;, whole-cell matching off, removes the space after each separator before HubSpot reads it.
Before and after
| Field | Messy export | HubSpot-ready |
|---|---|---|
| Phone | (415) 555-0132 | +14155550132 |
| Jane@Acme.COM | jane@acme.com | |
| Duplicate rows | 3 rows, same email | 1 row |
| Import result | Errors / duplicate contacts | Clean import, no duplicates |
🔒 Your contact list stays on your device. Every step runs in your browser’s memory — no file is uploaded, which keeps customer PII GDPR-safe by design.
Check the HubSpot file layout before importing
Use one sheet, a header row, and one property per column. Save text containing accented or non-Latin names in UTF-8. If the source has one Full Name column, split it into first and last nameand map the resulting columns to HubSpot's corresponding properties. The reverse case turns up just as often — a downstream tool that wants one display field, or an address spread across street, city, and postcode columns. Joining those columns into one takes a couple of clicks and leaves the originals in place, so the same file still satisfies HubSpot's separate properties.
Keep the primary Email column separate from Additional email addresses. HubSpot's import-file guide describes semicolon-separated values for additional addresses and other multi-value properties. Check the property-specific format rather than combining every address into the primary email field.
Sigmera works on your file, not your HubSpot account: no connector, OAuth grant, or account access is needed. Download the cleaned file and import it through HubSpot. Review the current import-file requirementsfor supported formats, column limits, and the limits of your subscription.
Frequently asked questions
- Why does my HubSpot import keep failing?
- The most common causes are phone numbers in inconsistent formats, invalid or blank email addresses, and duplicate rows that collide on the same email. Cleaning the phone column to E.164, validating emails, and removing duplicates before you upload fixes the majority of failed HubSpot imports.
- What phone format does HubSpot expect?
- HubSpot stores and validates phone numbers best in E.164 format — a plus sign, country code, then the number with no spaces or brackets, like +14155550132. Sigmera's phone cleaner converts a messy column to E.164 in your browser before you import.
- Will this upload my contact list anywhere?
- No. Every step runs inside your web browser using client-side JavaScript. Your contact CSV is never sent to a server and never leaves your device, so handling customer PII this way is GDPR-safe by design.
- How do I import a CSV to HubSpot?
- In HubSpot, go to CRM, open the object you are importing (for example Contacts), click Import, then "Start an import", and choose a file from your computer. Select one object and one file, upload the CSV, and map each column header to a HubSpot property. Clean the file first — fixing phone formats, emails, and duplicates before the upload is what keeps the mapping step from failing.
- What are HubSpot's CSV import limits?
- The file must be a .csv, .xlsx, or .xls containing a single sheet, with fewer than 1,000 columns and a header row that maps to HubSpot properties. Free tools accept files up to 20 MB and 500,000 rows per day; Starter, Professional, and Enterprise accept up to 512 MB and 10,000,000 rows per day, capped at 1,048,576 rows per file.
- What file encoding does HubSpot need for a CSV import?
- HubSpot asks that the file be UTF-8 encoded if it contains foreign language characters. This is where accented names and non-Latin scripts get mangled: Excel's default Save As on Windows writes a locale codepage rather than UTF-8, so "Müller" arrives in HubSpot as "Müller". Exporting the file as UTF-8 CSV before you import avoids the whole class of problem — Sigmera's converter writes comma-delimited UTF-8 every time.
- How do I undo a HubSpot import that went wrong?
- Only partly, which is why cleaning the file first matters. HubSpot lets you open a past import, select the records it created, and delete them. But records that the import updated cannot be rolled back that way — HubSpot's own guidance is that you would need to run another import with the correct information or edit the properties manually. A bad phone format or a duplicate-heavy file is far cheaper to fix in the CSV than in the CRM afterwards.
- What date format does HubSpot need for a CSV import?
- HubSpot is flexible about the shape but strict about consistency. It accepts day-month-year (28/10/2023), month-day-year (10-28-23), or year-month-day (2023.OCT.28); months can be a number, three letters, or a full name; years can be two digits or four; and the separator can be a slash, hyphen, or period. What breaks an import is mixing conventions inside one column — 03/04/2026 is ambiguous, so a column holding both UK and US ordering will silently land some records months away from the real date. Pick one order for the whole column before you import.
- How should currency and phone values be formatted?
- HubSpot expects currency data in one of the account's accepted currencies, formatted with decimals — 123.45 for USD, with no thousands separator or currency symbol. Phone numbers go in as +[country code][number], with an extension appended as ext[number] (for example +11234567890 ext123). That is the same E.164 shape the phone cleaner produces, which is why the phone step runs before the import rather than after.
- Can I import contacts and companies in the same import?
- Yes, and the associations get created with them. You can put both objects in one file and map a unique identifier for each, or choose “Multiple files”, give HubSpot a file per object, and nominate a common column that appears in both — company name, for example. One file needs a unique value per row in that column; the other repeats those values to say which record each row belongs to. A two-file import covers two objects, or one object and one activity, and no more.
- How do I see which rows failed in a HubSpot import?
- HubSpot shows errors at two points. During mapping it counts the problems it can already see and lets you correct the values or skip those rows before the job runs. After the import finishes, the summary screen offers “Download errors as file”, which gives you a CSV of the affected rows with the reason attached to each. The error names point at a column — “Invalid email”, “Could not parse date”, “Invalid enumeration option” for a value missing from a dropdown, “Duplicate unique property value”, or “Association record not found” when the linking column does not match.
- Should I deduplicate on email or on the whole row?
- For a HubSpot import, deduplicate on the email column. HubSpot uses email as the primary key for contacts, so two rows with the same email are the same contact even if other fields differ. Matching on email removes the duplicates HubSpot would otherwise merge or reject.