Leads & lists7 steps · 3 FAQ

Importing leads from a CSV

Upload a CSV, map each column to a field (only Email is required), and the import runs on our servers in the background — each new lead takes room in your workspace; updates are free.

Where: Leads → Import CSV (also on a campaign's Leads tab as "Import a CSV", where it always creates a fresh list and enrols it into that campaign)

How to do it

  1. Click Import CSV. Under Add to choose an existing list or "Create a new list…" and give it a New list name (default "Imported list").
  2. Click Choose file and pick a .csv. Smartlead and Instantly exports work as-is. The dialog reads the header row and a few sample rows and counts the rows in the file ("N rows ready").
  3. Check the Map columns table. Each CSV column has a badge — Auto mapped, Mapped, Custom field, Ignored or Needs mapping — a Maps to field dropdown and a Preview of up to three sample values.
  4. Fix anything that needs it with the dropdown: Email ✱, First name, Last name, Company, Job title, Industry, Employee count, City, Country, Website, Phone, LinkedIn URL, Timezone, Custom variable {{ }} or Don't import. Tick "Hide recognised columns" to see only the ones that still need a decision.
  5. Under Options leave "Merge into existing leads" on (default) to update people already in your workspace with these columns, or turn it off to skip them.
  6. Click Import N. The file uploads, then the right panel shows "Importing leads" with a percentage. You can close the window — the import keeps running on our servers.
  7. When it finishes you see "X added · Y updated · Z skipped" plus up to six issue lines (row number, email and reason).

Good to know

  • Only Email is required. If no header is recognised as an email column, the dialog picks the first column whose values look like email addresses.
  • Headers are recognised generously: e.g. email/work_email/email_address, first_name/first/given name, company/organization/account, title/job_title/role/position, employees/headcount/company_size, phone/mobile/direct_dial, linkedin/linkedin_url/profile_url, timezone/tz. Matching ignores case and punctuation ("# Employees", "Company-Name" and "Email Address" all map).
  • If two columns map to the same field, a warning explains that only the first will import and the other will be dropped — set the extra one to Custom variable or Don't import to keep its data.
  • Emails are lowercased. Rows are skipped with a reason when the email is missing, invalid, or a duplicate of an earlier row in the same file (the first occurrence wins).
  • Duplicates are checked across your whole workspace by email. With merge on, an existing lead is updated only with the fields your file supplies — blank cells never erase existing values — its custom variables are merged (your file wins on the same name), and it is moved into the target list. Its status is never changed, so a bounced or unsubscribed person stays suppressed.
  • With "Merge into existing leads" off, existing emails are skipped entirely (not updated, not moved) and reported as "Already in your workspace — skipped".
  • Addresses or company domains on your blocklist are refused and reported as "On your blocklist (Settings → Blocklist) — not imported".
  • LinkedIn URLs are normalised on import. A Timezone column (IANA name such as Europe/London) lets campaigns send at each lead's local time.
  • Room: each NEW lead takes room for one lead in your workspace (Basic and the trial 2,000, Pro 30,000, Scale unlimited). Updates, skipped rows, duplicates, invalid and blocklisted rows never take room.
  • If the file has more new leads than your workspace has room for, the first N that fit are imported and the rest are reported as not imported, with the reason. Delete leads you no longer need (Delete list) to make room, or move to a bigger plan. If your workspace already holds more leads than your plan keeps (after moving to a smaller plan, say), nothing is deleted, but new leads aren't added until you're back under. Once a 7-day trial has ended, importing is paused until you subscribe under Billing.
  • Files up to 80 MB are accepted; uploads go up in small chunks so large files do not time out. Up to 50 row-level issues are kept on the import record; the dialog shows the first 6.
  • Campaign imports only: the extra option "Skip contacts already in another campaign" (off by default) still imports everyone into your leads but does not enrol anyone who is currently active in another campaign.
  • If the dialog stops polling on a very long import you see "Import is still running in the background — your leads will appear shortly."

Questions people ask

Do I pay for leads I re-import?
No. A lead already in your workspace never takes extra room — it is updated (merge on) or skipped (merge off).
Will importing a stale list re-activate someone who unsubscribed?
No. Suppressed people keep their Bounced/Unsubscribed/Blocked status on re-import and are never sent to.
What happens if I close the window mid-import?
Nothing is lost — once the upload has finished the import continues on our servers and your leads appear when it completes.

Try it in your own workspace

7-day free trial · unlimited mailboxes · cancel anytime.