Tools Features Pricing Blog
Log in Start for free
← All articles

Why Your HubSpot CSV Import Keeps Failing (and How to Fix It)

HubSpot CSV imports fail for three predictable reasons: wrong column names, rejected picklist values, and incompatible date formats. Here's how to fix each one before you upload.

You’ve exported your data, cleaned it up in Excel, and dragged it into HubSpot’s import wizard. The progress bar fills. Then: errors. Rows skipped. Fields blank. Or worse — the import “succeeds” but the data is wrong.

This isn’t a HubSpot bug. It happens because HubSpot validates every row against its own strict schema before writing anything to your CRM. If your file doesn’t match that schema exactly, rows are silently skipped or fields are imported as blank.

The good news: HubSpot imports fail for three predictable reasons, and all three are fixable before you upload.

Reason 1: You re-map the same columns every single import

HubSpot’s import wizard does include a column mapping step — you can match any column in your file to any property in HubSpot. So COMPANY_NAME and company name and Company will all appear in the mapper and you can point them at the right field.

The problem isn’t that it fails — it’s that you have to do this manually, every time, for every column.

If your file has 25 columns, that’s 25 dropdowns to click through. If you’re importing every week from the same source, you’re repeating the exact same 25 decisions every week. Miss one and that field imports as blank across all rows, silently.

HubSpot has no native way to save and reuse a column mapping. Every import starts from scratch.

The fix: Rename your columns to match HubSpot’s property names before you upload. When column names match exactly, HubSpot auto-maps them in the wizard and you skip the manual step entirely. You can find the internal names in HubSpot’s property settings — they’re the lowercased, no-space versions shown under “Internal name”. For a contact import, the most common ones are:

Column to useHubSpot property
firstnameFirst Name
lastnameLast Name
emailEmail
companyCompany Name
lifecyclestageLifecycle Stage

If you regularly export from another system and import into HubSpot, pre-renaming the columns before upload eliminates the mapping step entirely and removes the risk of getting it wrong.

Reason 2: Your picklist values don’t match what HubSpot expects

HubSpot picklist fields (Dropdown Select, Radio Select, Checkbox) only accept the exact values defined in the property settings. If your CSV contains a value that isn’t in the allowed list, HubSpot imports the field as blank rather than throwing an error.

This is the most dangerous failure mode because the import appears to succeed. You won’t notice until you try to filter by deal stage and half your pipeline is missing.

HubSpot matches imported picklist values against the option labels defined in the property settings — not the internal names. The match is exact and case-sensitive. If your CSV value doesn’t match the label character for character, the field imports as blank.

Common examples:

  • Your file has closed won — HubSpot’s label is Closed Won → imports blank
  • Your file has Marketing Qualified Lead — HubSpot’s label is Marketing qualified lead → imports blank
  • Your file has Technology — a custom Industry property has the option Tech → imports blank
  • Your file has Open (trailing space) — HubSpot’s label is Open → imports blank

The problem compounds when data comes from multiple sources. A Salesforce export, a LinkedIn export, and a manually-built spreadsheet will all have different conventions for the same concepts. Before any of that data can go into HubSpot, every value needs to match HubSpot’s exact picklist definitions.

The fix: For each picklist column in your file, get the list of allowed values from HubSpot and standardise every cell to match. For default properties like Deal Stage and Lifecycle Stage, the allowed values are documented. For custom properties, check the property settings in HubSpot.

The tedious part is that this needs to happen at the cell level across potentially thousands of rows. A single column might contain twenty different spellings of five valid values. Doing this manually with find & replace works once — but it doesn’t scale when the same file arrives weekly.

Reason 3: Your date formats are incompatible

HubSpot accepts dates in a specific format: YYYY-MM-DD for date fields, or a Unix timestamp in milliseconds for datetime fields. Most exports don’t use either.

Common formats that will cause HubSpot to reject or blank a date field:

  • 15/01/2024 (DD/MM/YYYY — common in European exports)
  • 01/15/2024 (MM/DD/YYYY — common in American exports)
  • Jan 15, 2024 (human-readable, not machine-parseable)
  • 2024-01-15T00:00:00Z (ISO 8601 datetime — close, but not what HubSpot expects for a simple date field)

If HubSpot can’t parse the date, the field is imported as blank. If you’re importing Close Date across a thousand deals, that’s a thousand deals with no close date in your pipeline.

The fix: Convert all date columns to YYYY-MM-DD before uploading. In Excel, you can use a custom format or the TEXT() function. In Google Sheets, =TEXT(A1,"YYYY-MM-DD") works for most cases. If your export mixes multiple formats in the same column (which happens with manually-filled spreadsheets), you need to handle each format separately.

Why this keeps happening on every import

Each of these issues — column names, picklist values, date formats — has to be fixed from scratch every time a new file arrives, even if it’s the same type of data you imported last month.

The underlying problem is that there’s no persistent mapping between your source data and HubSpot’s schema. Every import is a one-off. You fix it, upload it, and then repeat the same work next time.

The more sustainable approach is to treat the mapping as a reusable asset:

  1. Define HubSpot’s expected column names and picklist values once
  2. Build a transformation that maps your source columns to those names
  3. Apply that transformation automatically every time the same file format arrives

This is what Asphorem’s CSV Importer does. You configure the mapping once — source columns → HubSpot fields, source picklist values → HubSpot allowed values — and save it as a named template. The next time the same export arrives, you select the template and skip straight to download. The AI handles picklist normalisation automatically, catching typos, language variants, and capitalisation differences across the whole file.

Your file rows are never uploaded to our servers — only the unique values from picklist columns are processed by the AI, not the full data.

Quick checklist before your next HubSpot import

  • Columns are pre-renamed to HubSpot’s internal names so they auto-map in the wizard
  • Picklist values exactly match what’s defined in each HubSpot property
  • All date fields are formatted as YYYY-MM-DD
  • Custom property internal names are confirmed in HubSpot’s property settings
  • Required fields (Email for contacts, Deal Name for deals) are present and non-empty

If you’re importing contacts, also check: phone numbers are in a consistent format, and Lifecycle Stage values match HubSpot’s default options (subscriber, lead, marketingqualifiedlead, salesqualifiedlead, opportunity, customer, evangelist, other).

HubSpot imports fail for predictable reasons. Once you’ve fixed them once for a given file format, you shouldn’t have to fix them again.

Stop fixing the same CSV problems every week

Asphorem maps your columns, standardises picklist values, and normalises dates — so your next import works first time. Free plan included.

Start for free →