Importing your leads
CSV import with column mapping and duplicate detection — and how to avoid the two mistakes everyone makes.
Go to Settings → Import.
Preparing your file
A CSV with a header row. The importer will show you every column and let you map it, so the column *names* do not need to match anything.
The only genuinely required field is a name. Everything else is optional — but a lead with no phone number and no email cannot be contacted, so the importer will warn you if a row has neither.
A minimal file looks like this:
Name,Phone,Email,City,Source,Notes
Aarav Patel,9812300045,aarav@example.com,Mumbai,Google Ads,Asked about pricing
Diya Shah,9820011122,diya@example.com,Pune,Referral,Referred by existing customerMapping columns
The importer guesses from your header names and shows you what it matched. Check the guesses — "Contact" could reasonably mean a name or a phone number, and it will pick one.
You can map to:
- Standard fields — name, phone, email, city, state, source, stage, owner, estimated value
- Any custom field you have created
- Skip — for columns you do not want
Duplicate handling
Before creating anything, the importer checks every row against your existing leads. Matching is on phone number and email, normalised — so +91 98123 00045 and 9812300045 are recognised as the same person.
You choose what happens to a match:
| Option | Behaviour |
|---|---|
| Skip | Leave the existing lead untouched |
| Update | Fill in blank fields on the existing lead, keep what is already there |
| Create anyway | Import as a new lead and flag it as a possible duplicate |
Update is the right default for most imports.
The two mistakes everyone makes
Importing before setting up stages
If your CSV has a Stage column with values that do not exist in your workspace, those leads land in your entry stage instead. Create your stages first, then import.
Importing with distribution switched on
Turn distribution off, import, assign historical leads in bulk to whoever should own them (or to nobody), then turn distribution back on.
After the import
The importer shows a summary: created, updated, skipped and failed, with a downloadable file of any rows that failed and why.
Failed rows are almost always a date in an unexpected format or a required custom field left blank. Fix the file and re-import just those rows — the duplicate check means you cannot accidentally double up.
Larger migrations
For more than about 50,000 rows, or if you are moving from another CRM with activity history and attachments, contact support. We do these regularly and it is included on Growth and above.
Something unclear or missing? Tell us and we will fix the page — send us a note.