Skip to main content

Import leads from a CSV or Google Sheet

Import a CSV, Excel file or Google Sheet into a Cleanlist lead list: where the importer lives, the six fields it maps, what it costs, and how duplicates and unmatched rows are handled.

L
Written by Levon Adamyan

Who this is for: self-serve plans (Free, Starter, Pro, Enterprise). If you bought a Cleanlist AppSumo lifetime deal, your features, limits, and pricing are different. See the AppSumo documentation instead. Support agent: confirm whether the user is self-serve or AppSumo before giving plan-specific advice.

TL;DR: Open a list, press ⌘A (or click Actions), then Import → Import from CSV. Upload a CSV or Excel file, or pick a Google Sheet. Map a LinkedIn URL, or a name + company. Tick Email (1 credit per email found) and/or Phone (10 per phone found), or import without enrichment. A plain import looks each row up for title, company and location at 0.2 credits per row found (misses are free). Duplicates are always skipped.

Import leads from a CSV or Google Sheet

Cleanlist has no separate Bulk Enrichment page. Every import happens inside a lead list, from the list's Actions drawer. The importer reads a CSV, an Excel file or a Google Sheet, matches each row to a person, and can find work emails and phone numbers in the same pass.

Where the importer lives

Open Lead Lists in the sidebar, open a list (or create one with New → New Lead List), then use any of these:

  • Actions (or ⌘A) → Import tab → Import from CSV

  • On an empty list: Insert leads

  • The + on the first column header ("Add leads from source")

  • ⌘K while the list is open → Import leads

The importer always adds rows to the list you have open. There is no list picker inside it.

Prepare your file

  • One row per person, with a header row.

  • Formats: .csv, .xlsx or .xls. For Excel files, only the first sheet is read.

  • Each row needs one of these: a LinkedIn URL, or a name (full name, or first and last name) plus a company (company name or website domain).

  • Need a starting point? In the importer, open Don't have a file ready? → Start with our sample template and click Download template.

first_name,last_name,company,linkedin_url
John,Doe,Acme Corp,https://www.linkedin.com/in/johndoe
Jane,Smith,tech.io,

A LinkedIn URL gives the most reliable match. Rows with neither a LinkedIn URL nor a name plus company are skipped ("not enough info to match").

Step by step

1. Upload

In Provide CSV or Excel File, drag your file onto the box or click browse. The box reads "CSV or Excel · up to 20,000 rows", but that is a guide, not a limit (see [Limits](#limits)).

2. Map your columns

The Map your columns table has three columns: We need, In your file and Example. Cleanlist auto-maps headers it recognizes; change any row with its dropdown, or pick Not mapped.

The importer maps exactly six fields:

Field

Notes

LinkedIn URL

A personal profile URL (linkedin.com/in/...). Enough on its own.

Full name

Use this, or First name + Last name.

First name

Last name

Company name

Use this, or Domain / website.

Domain / website

The company's website.

Email, phone, job title and location columns are not mapped. What happens to them depends on your plan:

Plan

Other columns in your file

Pro, Enterprise, Pro trial

Kept as custom columns under their original headers

Free, Starter

Ignored ("Every other column is ignored")

A green banner ("You're good to go") shows how many people can be imported and how many rows will be skipped. A red banner explains what is missing.

3. Choose enrichment

Under Enrichment Type, tick what you want Cleanlist to find for every row:

Option

Cost

Email (ticked by default)

1 credit per work email found

Phone

10 credits per phone found

Both

up to 11 credits per row

Neither

No enrichment (the profile lookup below applies)

You are charged only for results found. If your balance does not cover every row, Cleanlist enriches as many rows as your credits cover, in file order, and imports the rest without enrichment. A message tells you how many rows were enriched.

4. Import

Click Start Enrichment (Email or Phone ticked) or Import Records (neither ticked). Large files are sent in batches. You can close the drawer while enrichment runs; rows keep arriving in the list.

When the import finishes, a message confirms how many leads were added and how many duplicates were skipped.

What it costs

What happens

Credits

Adding rows to the list

0

Profile lookup on a plain import (no enrichment, other columns not kept)

0.2 per row found, 0 if not found

Email at import

1 per email found

Phone at import

10 per phone found

About the profile lookup. When you import without enrichment on Free or Starter, Cleanlist looks every row up for its job title, company and location so the lead is complete. The lookup costs 0.2 credits per row found; rows that are not found are free. It does not run (and is not charged) when:

  • you tick Email or Phone for that row, or

  • your plan keeps your other columns (Pro, Enterprise, Pro trial). To fill title and location on those rows later, run Enrich Contact (0.2 credits per contact found) from Actions → Enrich.

Rows that could not be enriched because credits ran out are imported plainly, so they do get the lookup.

After the import: profile lookup and unmatched rows

While the lookup runs, the list shows Filling in profiles. It works through about 100 rows a minute. When it finishes, a message reads "Profiles filled for X of N rows" and lists the rest: not found, matching several people, missing a name and company, or not looked up because the workspace ran out of credits.

A row the lookup could not fill stays in the list with an amber triangle on the name. Hover it to see Profile not filled in and the reason:

Reason shown

What to do

No LinkedIn profile matched this name and company.

Check the spelling and company, or use Add LinkedIn URL on the row.

Several people match this name and company.

Pick the right person (below).

Not enough to look this person up: add a first and last name with a company, or a LinkedIn URL.

Use Add LinkedIn URL on the row.

Not looked up: your workspace ran out of credits.

Add credits in Settings → Plans & billing, then use Add LinkedIn URL on the row.

Choosing between several matches. When the lookup found more than one person, the name cell shows N matches. Click it to open "Which (name)?":

  • click This one on the right candidate, or

  • paste their URL under "Not listed? Paste their LinkedIn URL" and click Look up, or

  • click None of these.

Adding a LinkedIn URL by hand. On any unfilled row, open the row's ⋯ menu and choose Add LinkedIn URL, paste the profile URL and click Look up.

Both lookups cost 0.2 credits if found, nothing if not. You can also run Find Email on an unfilled row; Cleanlist resolves the person as part of finding the email.

Duplicates

There is no skip, update or overwrite choice: duplicates are always skipped and counted. A row counts as a duplicate when its LinkedIn URL, or its email, matches a lead already in the list. Imports that keep your other columns also compare name plus company.

After a plain import you see "Added N leads (M duplicates skipped)". If every row is already in the list, the importer says so and adds nothing.

Limits

There is no file size limit and no fixed row limit in the in-app importer. The limit that applies is your plan's leads per list:

Plan

Leads per list

Free

100

Starter

2,500

Pro

2,500

Enterprise

Unlimited

Pro trial

300 (and up to 5 lists)

If the file has more rows than the list has room for, the importer shows "Your plan allows N leads per list", tells you how many rows are over, and does not import until you remove rows or upgrade. AppSumo tiers have their own caps: see AppSumo plans. Legacy plans: see Legacy plans.

The 600-row / 150 KB limit you may see elsewhere applies only to imports through the public API and MCP, not to the in-app importer.

Import from Google Sheets

If you have connected Google Sheets on the Integrations page (your own Google account), the importer shows an Import from Google Sheets button under the upload box.

  1. Click Import from Google Sheets.

  2. Pick the spreadsheet in the Google picker.

  3. Cleanlist reads the first tab and continues with the same column mapping as a file upload.

Google Sheets is a Pro feature (also on Enterprise and the Pro trial) and is not part of AppSumo-only plans. Each member connects their own Google account; Cleanlist can only open sheets you pick. See Google, Airtable, Notion and Fathom.

Without a connection you can still download the sheet as .csv or .xlsx (File → Download in Google Sheets) and upload the file. In Clu, you can also paste a Google Sheets link and click Import on the card it shows.

Sales Navigator CSVs

A CSV of Sales Navigator leads you already hold and are allowed to use goes through Import from CSV like any other file. The importer uses the LinkedIn URL column, or the name plus company columns. See Sales Navigator CSV import.

Importing companies instead of people

Switch the list to its Companies sheet (bottom bar), then Actions → Import → Import Companies from CSV (Starter and above). Map Company Name, Company Domain or Company LinkedIn URL (one is required). Enrich firmographics after import is on by default and costs 1 credit per company enriched. Company files can be up to 25 MB. See Company enrichment.

Only have email addresses?

The CSV importer does not match people by email. Use Actions → Import → Reverse Email Lookup instead: it accepts a single email or a CSV/Excel file of emails and costs 2 credits per email, match or not. See Add and enrich single leads.

Troubleshooting

Problem

Fix

Many rows skipped as "not enough info to match"

Each row needs a LinkedIn URL, or a name plus a company name or domain. Check the mapping table.

My job title or email column disappeared

Only the six fields above are mapped. On Free and Starter other columns are ignored; on Pro, Enterprise and the Pro trial they are kept as custom columns.

Excel file imported the wrong data

Only the first sheet is read. Move your data to the first sheet.

Strange characters

Re-save the file as UTF-8 CSV.

Fewer leads than rows

Duplicates are skipped, and rows without enough info are dropped. Check the import message.

A row has an amber triangle

See [After the import](#after-the-import-profile-lookup-and-unmatched-rows).

"Your plan allows N leads per list"

Remove rows, split the file across lists, or upgrade in Settings → Plans & billing.

No Import from Google Sheets button

Connect Google Sheets on the Integrations page with your own account (Pro, Enterprise, Pro trial).

Need help? Email [[email protected]](mailto:[email protected]).

Related


Did this answer your question?