# Importing Contacts

_Contacts_

Bring in contacts from CSV files, Google Contacts, Outlook, or other sources.

## Steps
1. Go to Contacts and click the "Import" button.
2. Upload a CSV file or connect a workspace sync (Google, Microsoft, iCloud). Any CSV works — no set format. If you'd like a starting point, click "Download the CSV template" under the upload box.
3. Map your CSV columns to CRM fields.
4. Review the preview and click "Import" to finish.
5. Check Import History under Tools to review past imports.

## Tips
- De-duplication runs automatically — matching on email and phone.
- You can undo an import from the Import History page.
- CSV row cap: 25,000 rows per file via the standard import flow (legacy API is capped at 1,000 per call). Files over the cap are rejected — split the CSV into batches of 25K or fewer.

## Example
After a trade show, Lin exports 380 booth-scan leads as a CSV. She drags it into Contacts > Import — the AI auto-maps "Company Name" → company, "Title" → jobTitle, and even guesses that the unmapped "Booth Visit Time" column should be a custom field. 47 already exist in the CRM (auto-merged), 333 are created with the tag "tradeshow-2026", and the import log shows exactly which row matched which existing contact.

## Troubleshooting
- **CSV import shows "0 contacts imported"** — All contacts in the CSV already exist (matched by email), or the column mapping was wrong. Fix: Check the import summary — it lists skipped duplicates. If column mapping was wrong, re-import with correct mappings. For a clean starting format, use "Download the CSV template" in Contacts > Import.
- **Contact import failed** — CSV format issues — wrong column headers, special characters in names, or duplicate emails. Fix: Go to Contacts > Import and click "Download the CSV template" under the upload box. Paste your data into the template columns. Ensure emails are unique and remove special characters from phone numbers, then re-upload.
- **Import created contacts but fields are missing** — Column headers in the CSV didn't match CRMown field names so they weren't mapped. Fix: Use the column-mapping screen during import. Map each CSV column to the correct CRMown field. Unmapped columns are ignored.
- **Phone numbers imported with wrong format** — CSV had phone numbers as integers (Excel stripped leading zeros / formatting). Fix: In Excel, format the phone column as Text before saving as CSV. Alternatively prefix numbers with a single quote in the CSV.
- **Re-importing the same list created duplicates of contacts I already merged** — De-duplication matches on email and phone, including contacts you previously merged or deleted (which are kept as hidden records). A re-import recognizes the match and restores+updates the existing contact rather than creating a new copy. Fix: Use Smart Merge (the default conflict mode) when re-importing. Matched contacts that were merged away are brought back and updated in place, so the same list can be re-imported safely without piling up duplicates.

## Error messages
- `File too large` — CSV exceeds the upload limit (25,000 rows for the standard import, 1,000 for the legacy API). Split into smaller files.
- `Invalid file type` — Only .csv files are accepted. If you have .xlsx, save as CSV first.
- `Import failed: invalid CSV format` — CSV has formatting issues. Use the provided template. Ensure UTF-8 encoding.
- `Import failed: duplicate emails found` — Multiple rows have the same email. Remove duplicates before uploading.
- `Import timeout` — Very large imports near the 25K cap may timeout on slow uploads. Split into smaller batches (e.g. 10K each).

## Plans
All plans support CSV import. Contact limits apply per plan (Starter 10K, Pro 25K, Max 100K).
