Help Center
DocsLeads & Import
Build lead lists, import from CSV, Excel, or JSON with dedupe and suppression, and attest your list source
Cold Outreach works from lead lists, prospects you intend to contact cold, which are kept separate from your CRM people. A cold lead does not become a CRM person automatically; that promotion happens only when a lead replies positively and you choose to promote them (see Cold Replies in Your Inbox). Keeping cold leads separate keeps unconsented prospects out of your CRM until they engage.
One lead, as many lists as you like. An email address is a single lead in your organization, whichever list you first met it in, and that one lead can sit in any number of lists at once. Putting it in a second list is not a copy: the same lead, with the same history, status and personalization fields, is in both, and editing it in one place edits it everywhere. Taking it out of one list leaves it in the others. Deleting a lead is the one action that is not per list: it deletes the lead everywhere and cancels any pending sends, which is why the confirmation says so.
From the Leads tab, choose Import and upload a file. We accept CSV, Excel (.xlsx), and JSON, up to 25,000 rows.
File structure. One row per person. The only column we need is their email address, and a file can hold up to 25,000 rows. Here is what we look for, and the column headings we recognize for each. Capitalisation and spacing do not matter, and you confirm every match on the next step.
| Field | Description |
|---|---|
| Email address* | email, email address, work email, contact email |
| First name | first name, first_name, fname, given name |
| Last name | last name, last_name, surname, family name |
| Company | company, company name, organization, account, employer |
| Job title | title, job title, position, role |
| Country | country, country code, country ISO. Two letters, like US or GB. |
| Time zone | time zone, timezone, tz, iana timezone. An IANA name like America/New_York. No time zone column? A State or Province column is used for United States and Canada leads.. |
Any other column is saved as a personalization field. An industry column becomes {{industry}}, ready to drop into your emails. Nothing in your file is thrown away. The upload step has a downloadable sample file with two example rows and every column we recognize.
Naming a personalization field. On the Map step, any column you send to Custom variable gets a Variable name you write however you like, spaces and capitals included. We show the tag it becomes right underneath, so “Company size” reads as {{company_size}} in your emails. The name is what you see in the Variables menu when you write a step; the tag is what gets swapped for the lead’s value when the email goes out. Import the same spreadsheet again later and the names you chose come back, because the name is remembered against the tag.
Two columns cannot quietly become one. If two columns would end up as the same tag, the Map step names both of them and the tag they would share, and asks you to give one a different name. Two columns pointed at the same built-in field are called out the same way, with the fix that applies there: skip one, or send it to a custom variable instead. And a column set to Custom variable with no name yet is named back to you and blocks the step until you either name it or skip it. Nothing is dropped on your behalf.
While it runs. An import has two parts, and the screen tells you which one you are in. First your file uploads from this browser: keep the window open until that finishes. After that the import runs on our side, so you can close the window and carry on. We let you know when it is done, and if you come back to Leads while it is still going, a quiet line at the top reads Import in progress with the running count and a View progress link. Dismiss it if you would rather not watch. The count is honest about which half it is reporting: rows uploaded during the upload, leads imported after it.
During import, Laureo runs several safeguards before any lead becomes eligible to send:
Dedupe
Existing-customer skip (with override)
Suppression subtraction
Address check
Blocked-domain exclusion
Addresses you already have. The Checks step counts the rows in your file that are already leads in your workspace and asks what this import should do with them, under Already in your outreach leads. There are three answers. Add to this list too is the default: they join this list and stay in every list they are already in. Move into this list takes them out of the lists they are in now, and holds back two groups it will not move, each named with its own count: leads that are active in a running campaign, and leads sitting in a teammate’s list. Skip them changes nothing at all for those addresses. Each answer shows the number it will really land in this list before you start, so the figure on the completion screen is the one you were shown.
What the completion screen says. When something landed, it reads Import complete and spells out each part on its own: leads imported, then added to this list under the add answer or moved from another list under move, then duplicate rows inside your file, then skipped, then any with errors. When nothing landed there is no green check and no anonymous number: it reads Import finished, Nothing was added to this list., and names the reasons the rows were skipped for. Under Skip them, the addresses you chose to leave alone are counted under Already in another list. See the import result opens the list this import was aimed at, not the index, and so does the Lead import complete notification we send when it finishes.
You do not need a file to add a prospect. Add lead sits on the Leads tab in both the All leads and Lists views, and on every list's own page. It opens the Add a lead panel, grouped as Lead, Company, Location, List, and Personalization fields. It collects every field an import can carry: email address (the only required one), first and last name, company, and job title, plus country as two letters. It also collects one thing a file cannot: a Time zone, picked from a searchable list rather than typed, so the send window can be read on that lead's own clock.
Under Personalization fields you can add your own named fields, exactly like the extra columns in an imported file. Each row takes a field name and a value, and Add field adds another. You write the name however reads best; the tag it becomes is shown underneath the row as Use it as followed by the tag itself, so naming a field Industry shows {{industry}} before you save. Name two fields so they would land on the same tag and the panel says so and asks you to rename one. A running size is shown beside Add field once you have typed something, so a very large set of fields is never refused without warning. A lead added by hand is a normal lead: it can be enrolled, sequenced, and promoted like any imported one.
Every lead needs a list, so the panel asks which one to add to. Pick an existing list, or choose Create a new list and name it. Creating a list here asks where the contacts came from at the same time, because a list cannot be used in a sequence until that is recorded (see below).
The same safeguards apply to a lead added by hand as to an imported one: an address on your suppression list, one marked do-not-contact in your CRM, one belonging to an existing customer, or one on a blocked domain is refused with the reason. An address you already have as a lead is not refused. The panel asks Add it to this list too?, naming the list it is already in when that is a list you can see, with Add to this list too beside Not now; answering yes puts the lead you already have in this list as well, rather than making a second one.
Every import requires you to attest to the source of your list: that you have a lawful basis to contact these people and did not buy a scraped list of unknown provenance. This attestation is recorded and is a hard requirement: a sequence cannot launch against leads imported without it. It exists to keep the whole platform's reputation clean and to give you a record for compliance purposes.
Wherever it is asked, the attestation is the same two questions: Where did this list come from?, with choices for contacts you collected yourself, a purchased or licensed list, an export from another tool you own, and Other; and a confirmation that the list was collected lawfully and holds business contacts you have a legitimate reason to email. A purchased list asks for the provider name and an Other list asks you to describe the source, in both cases at least a short sentence. The confirmation is never ticked for you.
The same applies to a list you built by hand. Creating a list from the Add-lead panel asks the same questions in place, so the list you just made is usable straight away. If a list has no source recorded, its page shows a line saying it cannot be used in a sequence until you record where the leads came from, with a Record list source action beside it, and the same action sits in the list header. Answer once and the line clears. Your answer is stored with the list for compliance records.
Your organization can have up to 10,000 leads active in cold sequences at once. The Leads tab shows a gauge of how much of that headroom you are using. When you launch a sequence, Laureo checks that enrolling its leads would not exceed the ceiling. If it would, the launch is blocked with a message telling you exactly how many leads over the ceiling you are. Resolve enrollments or finish existing sequences to free up headroom.
A lead list does not send anything on its own. It has to be attached to a sequence. Open the sequence builder and, in the Leads section at the top (above the Steps), use Attach a list to pick the lead list (or lists) this sequence emails. You can attach up to 20 lists to one sequence.
Attach a list shows your lists newest first, and Load more lists at the bottom of the menu brings in the next page. Type to search every list you have by name, archived ones excluded. Each row shows how many leads the list holds.
Once a list is attached, the builder shows how many of its leads are ready to enroll, written as Ready to enroll: 1 of 5. The first number is what this sequence will email. The second is how many leads the list holds, or how many rows your file had when the list came from an import.
The summary lists one line for every reason that applies to the lists you attached, with its own count beside it, and hides none of them. These are the reasons you will see most often.
| Field | Description |
|---|---|
| Already in this campaign | The lead is already enrolled in this sequence, so it is not enrolled a second time. |
| Paused leads | The lead is paused, and Resume these leads sits beside the count. |
| Already replied | The lead wrote back, so this sequence stops emailing them. |
| Unsubscribed or suppressed | The address opted out or sits on your suppression list, and can never be emailed again. |
| Bounced or reported as spam | An earlier email bounced or was reported as spam, so the address is out. |
| On your blocked-domain list | The address is at a domain, or a subdomain of one, on your blocked-domain list. |
| Blocked by your country rules | The lead is in a country your country rules are set to skip. |
Three more appear when they apply: Held by your per-company limit, when the sequence caps how many people it emails at one company; Suppressed earlier; and Promoted to a contact.
An import can add fewer leads than your file had rows. The notice when it finishes, and the builder whenever the two numbers differ, both end with See the import result, which opens that result on the page of the list you imported into: every skipped address is listed under the reason it was skipped for, a few at a time with Show all for the rest.
Two of those reasons are yours to overrule: Active in another campaign, and In a teammate’s list, which only an admin can reach. Both carry an Add anyway control in the import result, with the group’s own count in it. The confirmation tells you that the other campaign keeps running, so the same person can be emailed by two campaigns, and it asks you to write down why, which is kept with the import for your records. Unsubscribed, bounced, blocked and region-restricted addresses can never be overruled.
There is no rule that skips a lead for being contacted recently, and being in another list is no longer a reason on its own. Already in another list appears only when you chose Skip them at the Checks step, and it has no Add anyway: running the import again under Add to this list too is the change. Active in another campaign is read only when you chose Move into this list, because moving a lead mid-send is what that guard exists to stop, and adding one takes nothing away. Already in this list means the lead was in this list before the import started.
Two of these are settings on the campaign itself, in Review and launch, under the Leads line. Also contact leads active in another campaign is on to begin with, so a campaign contacts everyone on its lists even if some of them are already running in another one. Turn it off and those leads are left out of this campaign, and the line above the switch tells you how many that is and which campaigns they are in.
Do not contact leads who are already customers is off to begin with. Turn it on and a lead whose contact record is marked as a customer is left out. Both settings belong to one campaign, so turning either on changes nothing about any other campaign, and neither can widen who is contacted. Unsubscribed, bounced, blocked and region-restricted addresses are never contacted whatever these are set to.
The Leads tab opens on All leads, a single table of every cold lead across all your lists. Individual lists are one toggle away, and a Filter by list control narrows the all-leads view to any one list, alongside filters for status (Active, Replied, Paused, and more) and a search box. A muted note at the top restates that these are cold leads, kept separate from your CRM contacts and the CRM Lead stage.
Opening a lead reveals its activity timeline beside its imported fields: the emails sent to that lead, any reply, and its enrollment and opt-out events, drawn from the real send and consent history rather than a guess. From the same panel you can pause or resume, promote, unsubscribe, or remove that one lead.
A Variables list above the timeline reads everything back: email, the built-in fields, the picked Time zone, and every personalization field the lead carries, whether it arrived from a spreadsheet column or was typed into the Add-lead panel. Each one is captioned with the name you gave it rather than its tag, so a column you called “Company size” reads that way here too.
On a list’s own page the table adds a Time zone column at wider widths, and the lead panel carries the same answer at every width. It names the zone that lead’s send window is read on and, after a middle dot, where that zone came from: from your timezone column when your file carried one, from state or from country when it was worked out from where the lead is, set by you when you picked it by hand, and No time zone with sends in the sequence timezone when nothing answered. A zone worked out from a state or a country is a representative one for that place, which is why the line says where it came from.
Select rows to act in bulk. Add to list puts the selected leads in one more list and leaves every list they are already in alone. Move to list is the other verb: it puts them into one list and takes them out of the ones they are in now, and leads that are mid-sequence stay where they are. Promote to CRM promotes them all at once, which pairs naturally with the Replied filter: narrow to leads who wrote back, select them, and promote the batch into your CRM in one step. Leads already in the CRM are counted as such and skipped rather than duplicated.
Four ways to put a lead you already have into another list. On the page of the list you want it in, Add existing leads opens a picker of every lead that is not in that list yet, with a search box, a status filter, a filter that narrows to one other list, and a running count of what you have ticked; up to 100 go in at a time. From All leads, select rows and press Add to list. In the Add a lead panel, typing an address you already have offers Add to this list too instead of a refusal. And an import does it in bulk with Add to this list too on the Checks step. All four leave every other list the lead is in exactly as it was.
Deleting a list keeps its leads. Removing a list does not remove the people on it. A lead that is also in another list simply loses this one and carries on in the others. A lead whose only list was this one is moved into a new list named Unassigned followed by the deleted list’s name, so no lead is ever left with nowhere to be found, and the message afterwards names that list and how many leads went into it. Deleting a list does not stop a lead that is enrolled in a running or paused sequence: those leads keep sending, and the confirmation counts them before you decide.
The leads list has a Reply column. It shows what a lead’s last reply meant, in the same words the inbox uses, with the date under it. Where the last read was not a confident one, a short note beside the date says so, so a guess never looks like a certainty. A lead who has not written back shows a muted dot. The same answer sits on that lead’s own panel, beside Status.
The Reply filter beside the status pills narrows the list to one of those meanings. Two extra options answer the questions a label cannot: Never replied for everyone who has not written back at all, and Replied, no label for people who did write back but whose reply we could not read or have not read yet. Nothing in there is waiting on you to judge it: where the first read was unsure, a second read settles the label on its own.
With any filter on, the leads list offers Make a list from this filter. Matching leads are added to the new list. A lead can belong to several lists, so they stay in the lists they are in now and nothing is taken off anyone, including the leads that are part way through a sequence. Name the list, press Create list and add, and the cohort the filter described is a list you can send to. A large filter is added in batches, and the message says how many more match and are still to add, so you can run it again on the same list.