You can add your own leads to a campaign from a CSV file. Open the campaign's Leads tab and click Import leads, or pick Import CSV as the data source when you create a campaign. Press G then C to open Campaigns.
Before you start
- Your role. You need edit access to Campaigns and the Import leads and accounts feature. Admins and Editors have both; Viewers and client seats don't.
- The file. A
.csvfile with the column names in the first row, up to 400 MB and 100,000 rows. Split a bigger file and import each part. - What each row needs. An email or a LinkedIn URL, a name (full, or first and last) and a company (name, domain or company LinkedIn URL). Kenso skips rows without a name or company, and the Leads tab import also skips rows with no email or LinkedIn URL.
- Block first. Kenso skips anyone on your blocklist, so add customers, partners and competitors before you import.
Import leads into a campaign
- Press G then C and open the campaign.
- Open the Leads tab and click Import leads next to the filter.
- Drop your file on Drop a CSV here, or choose a file, or click Choose file. Kenso reads it and opens Columns.
- Check the Kenso field next to each of your columns, and fix any marked Check.
- Click Check list. Kenso runs the List check on your file.
- Turn fixes on or off, then click Next.
- Read Adds, Skips and Expected bounce, then click the import button, for example Import 1,240 leads.
- Watch the progress bar, or click Close: the import keeps running.
When it ends, Kenso shows Import finished with the leads added and skipped, and why. Download skipped rows gives you a CSV of the rows the check skipped, with a Skipped because column. If you closed the dialog, a message says how many Kenso added and skipped.
Map your columns
Kenso matches each column from its values, not only its header, and says why under each field. It remembers how you mapped a header in this workspace and suggests it next time. A column marked Check is a guess: confirm it or change it.
For each column, pick one of these:
- A Kenso field, such as First name, Job title or Company domain. Each field takes one column, except Email: map several email columns and Kenso keeps each address.
- Skip this column to leave it out. A column with no matching field starts skipped.
- Custom variable (provide name below), then type a name such as
pain_point. Use it in your emails like any other variable.
A campaign holds up to 50 custom variables. Kenso turns the name into the key you write in emails, so "Pain point" becomes {pain_point}. The key must start with a letter, and it can't be a name Kenso already uses for a field, such as first_name or company.
Kenso also tidies names, emails, titles, companies, domains, LinkedIn URLs and phone numbers, and notes under a column what it will change.
Read the List check
The List check compares your file with what Kenso knows, before anything is added, and costs no credits. Expected hard bounce estimates the bounce rate: under 2% is safe to send, 2 to 5% wears on your domains, over 5% will hurt them. Will add counts the rows that go in.
Under Fixes, clearly bad rows start on and judgement calls start off.
| Fix | Starts | What it drops |
|---|---|---|
| Known invalid address | On | Addresses Kenso already marked invalid |
| Domain takes no mail | On | Emails on a domain with no MX record |
| Catch-all domain | Off | Domains that accept every address |
| Personal address | Off, or on when the campaign skips personal emails | Gmail, Outlook.com and other personal addresses |
| Role address | Off | Addresses such as info@, sales@ and ops@ |
| Company emailed in the last 90 days | Off | People at a company you emailed recently. The campaign's own window, if set, replaces 90 days |
| More than 5 people at one company | Off | Keeps the first 5 at each company |
If the campaign skips people emailed recently, already contacted counts the ones another campaign emailed. They're skipped unless you turn the switch off.
Kenso skips these rows anyway: no name or company, no email or LinkedIn URL, on your blocklist (people who unsubscribed are on it), a duplicate inside the file (it keeps the first row with that email or LinkedIn URL), already in this campaign, and already in another campaign unless your workspace allows that. It also skips rows in a country the campaign excludes. On a bigger file the check reads the first 25,000 rows; your fixes apply to every row.
Import a CSV when you create a campaign
- On Campaigns, click New campaign or press C.
- Pick Sales and With AI.
- On Data source, under Where do the leads come from?, pick Import CSV.
- Drop your file or click Choose file, then check each field under Columns. Here you need First name, Last name, and Company name or Company domain.
- Click Continue through the steps, then Create campaign on Review.
Kenso creates the campaign, starts Ken's build, imports the file and opens the build. Manually has no Data source step, so create the campaign first and import from its Leads tab. This path has no List check: Kenso skips duplicates and blocked people but keeps risky emails and rows with no email or LinkedIn URL. For the full check, import from the Leads tab instead.
A list of companies
If your file lists companies and no people, Kenso says This is a company list. Ken finds up to 1, 2 or 3 buyers at each company, matched to the campaign's ideal customer. The preview is free and covers the first 200 companies. Clear anyone you don't want, check People, Companies and Lead credits (one per person) on Add, and click Add 42 to campaign (your number). The same checks apply.
Other sources and cost
Under Or import from, the dialog also takes leads from Google Sheets, Sales Navigator, Airtable and your Lists.
Uploading and the List check cost no credits. After the import, Kenso enriches the new leads and checks their emails in the background. See How credits work.
Claude, Cursor and other AI tools connected to Kenso can import a CSV into a campaign too; ChatGPT can't. See Use Kenso from Claude or ChatGPT.
If something goes wrong
- "Choose a .csv file." Save or export the sheet as CSV.
- "This file is over 400 MB." or "The CSV contains more than the configured 100,000-row import limit." Split the file and import each part.
- "This file has no header row." or "This file has a header row but no one under it." Put the column names in row 1 and the leads below them.
- "Map an Email or LinkedIn URL column to import.", "Map a Full name column, or First name and Last name." or "Map a Company name, Company domain or Company LinkedIn URL column." Pick that field for the right column.
- "Mapping must include "First Name"." (new campaign) This path needs separate First name and Last name columns; a full name isn't enough.
- "Campaign custom variables are limited to 50 custom variables" or "is a reserved field name". Skip some custom variable columns, or pick another name.
- "Import of ... profiles would exceed this campaign's profile cap." A campaign with a Contact limit (see its Settings tab) holds at most 10 times that many leads. Import no more rows than the message says.
- "The daily CSV import quota was reached." or "Background queue is full. Please retry the CSV import shortly." Wait, then import again.
- "Created ... and started the build, but the CSV import failed:" Fix the reason it gives, then click Import the CSV.
- "Kenso could not check this list. You can still import it." Click Next and import. Duplicates and blocked people are still skipped.
Related: Build a sequence, Keep companies and people off your lists, Keep your email out of spam, How credits work