Bulk lead import
Paste a list.
Drop a file.
Done.
Import 1,000 leads as fast as you can paste them. Headers auto-detected. Duplicates skipped with reasons. Phones normalised to E.164.
Paste list
name,email,phone,company,job title Ava Patel,ava@acme.com,+14155551234,Acme,Head of Growth Mia Sun,mia@kite.io,+919876543210,Kite,VP Sales Bo Lin,,+447700900123,Northwind,Founder Diego Torres,diego@nimbus.co,,Nimbus,CRO
Or upload CSV
Drag a CSV here
Up to 5MB · 5,000 rows
Importing leads should not be a project. It should be a paste.
Smart parsing
Headers it understands without asking.
Auto-detected column names
→ field 1
namefull namefirst name→ field 2
emailemail address→ field 3
phonephone numbermobile→ field 4
companyorganizationorg→ field 5
job titletitleroleposition→ field 6
sourceHonesty about errors
Per-row reasons when a row fails.
Bulk add result
Inserted, skipped, with the reason.
The bulk add modal closes only if every row landed cleanly. Otherwise it switches to a results view that lists exactly which row was skipped and why.
Fix the row, paste again. No silent failures.
Bulk add complete
412 added · 8 skipped
Added 412
Skipped 8
row 47: Duplicate email/phone for product
row 102: No email or phone
row 188: Duplicate email/phone for product
What lands in the database
Normalised, deduped, ready to send.
Ava Patel
Acme · ava@acme.com
Mia Sun
Kite · mia@kite.io
Bo Lin
Northwind · +447700900123
Diego Torres
Nimbus · diego@nimbus.co
Ship-stoppers we handle
The real-world stuff.
Phone formats from anywhere
"(415) 555-1234" becomes "+14155551234". Powered by libphonenumber.
Empty rows
Skipped silently with a reason in the result.
Duplicate within product
Skipped, surface the row number so you can dedupe upstream.
Missing email AND phone
Rejected. A lead without either is a row of nothing.