## TL;DR

The import ran but the email column never mapped to the email property, usually because the header name did not match (E-mail vs Email vs email_address). Check the import's column mapping, fix the header, and re-import just the affected rows with the contact id as the key.

## Error

```text
(No error; the symptom is contacts with blank email after a successful import.)
```

## Steps

1. Open the import record and review its column mapping. Expected: you see which CSV header mapped to the email property, or that none did.
2. Rename the CSV header to match exactly, or set the mapping manually in the import UI. Expected: email maps to the email property.
3. Export the affected contacts with their record ids. Expected: a file keyed by id for the fix-up import.
4. Re-import with the id as the dedupe key and the corrected email column. Expected: emails fill in on the existing contacts, no new duplicates.
5. Save the mapping as a template for future imports. Expected: the next import maps correctly on its own.

## When to use

- Contacts lack emails after a CSV import.
- An agent-generated CSV imports with blank fields.
- Re-imports to fix the gap.

## When not to use

- "invalid email address format" (bad values, not missing mapping).
- CONTACT_ALREADY_EXISTS (dedupe, not mapping).

## Tool compatibility

- HubSpot and Salesforce import UIs and APIs.
- CSV pipelines feeding either CRM.

## Variant phrasings

### import skipped the email column

The header did not match; map it manually.

### blank fields after import

General mapping problem; check every column, not just email.

## Why it happens

Import mappers guess from header names. Non-standard headers (E-mail Address, ContactEmail, e_mail) defeat the guesser silently, and the import "succeeds" with blanks.

## Edge cases

- Re-importing without the record id as key creates duplicates; always include the id.
- Some imports trim headers; a header with a trailing space maps to nothing.
- Encoded CSVs (BOM, semicolons) can shift columns; validate the parse before mapping.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_swwtWG3dZWPx8B3V0hUQjA
