Skip to content
AgentSDR
Star

Lead database

A B2B lead database that every channel shares

Import leads from a CSV or XLSX, keep every column, and run email, LinkedIn and WhatsApp from the same list. People and companies exist once, however many campaigns they are in.

Map columns leads-q4.csv
Your columnPlatform field
  • EmailChoose…
    Email
  • First NameChoose…
    First name
  • Job TitleChoose…
    Job title
  • WebsiteChoose…
    Company domain
  • Linkedin UrlChoose…
    LinkedIn URL
  • Company SizeChoose…
    Keep as variable{{companySize}}
6 of 6 columns mapped
412 imported9 duplicate3 suppressed2 failed

One list

Lead management for outbound, without copies

Most stacks keep a list per tool, so the same person gets an email, an invite and a WhatsApp message from three systems that never compare notes.

Shared by every channel

One person, however many campaigns

The Leads page is the single list of everyone you can reach. Each row shows which channels you have, the campaign they are in and, after a reply, their CRM stage.
  • A person is stored once across email, LinkedIn and WhatsApp
  • Companies are created and matched by domain as people arrive
  • A reply on any channel marks their enrollments replied and stops email follow-ups
People · 1 record

Hannah Weiss

Head of Growth · lumen-freight.example

    Email · Freight ops, step 2Replied
    LinkedIn · Freight opsReplied
    WhatsApp · Warm introReplied
CRMReply on LinkedIn: enrollments marked replied, remaining emails cancelled
rows per import file, on the Leads page or in a campaign
5,000
field types for custom lead fields
11
channels that share each person: email, LinkedIn, WhatsApp
3
per contact, per seat or per list
$0

Import

Import leads from CSV or XLSX

Bring a list in from a spreadsheet, match it to who you already have, and keep the columns you care about.

Headers are recognised, not guessed at

Headers are matched ignoring case, spaces and punctuation, so Job Title, job_title and JOBTITLE are the same column. Every row needs an email or a LinkedIn URL. Rows with neither are dropped before the import starts.

Phone numbers typed without a country code use your organization's default phone country. A malformed phone number is dropped and the rest of the row is imported.

Column headers the importer recognises
Lead fieldAccepted headers
Emailemail, email address
LinkedIn URLlinkedin, linkedin url, linkedin profile
Full namename, full name
First name / Last namefirst name, last name
Job titletitle, job title, headline
Company namecompany, company name
Company domaindomain, company domain, website, company website, company url
Phonephone, phone number, mobile, mobile phone, mobile number, whatsapp, whatsapp number, work phone
Notesnotes

Duplicates

Match on email, then LinkedIn

Each row is looked up in your organization first. A match is updated, no match creates a person, and two people are never merged by accident.
  • Email is matched case-insensitively, then the LinkedIn profile
  • Blank cells never erase stored data
  • A row whose email and profile belong to two people fails with a clear reason
Import resultleads-q4.xlsx

    [email protected]

    Email matches Hannah WeissUpdated

    linkedin.com/in/rcosta (no email)

    LinkedIn matches Rafael CostaUpdated

    [email protected]

    Nobody with this email or profileCreated

    [email protected] + a profile of someone else

    Email and LinkedIn belong to two peopleFailed

    Merge them first

A blank cell never erases what is already stored. One bad row never blocks the rest.

Custom fields

Custom lead fields that stay yours

Store a plan tier, a region or a renewal date on a person or company, typed, per organization, without touching the database.

Typed, per organization

Rename freely. Change types carefully.

Fields are added from Settings, Lead columns. Each gets a permanent key, so a rename never breaks anything that points at it, and a type change is checked against your stored values before it is made.
  • Text, Number, Currency, Checkbox, Date, URL, Email, Image from URL, Select, Multi-select and JSON
  • Any type to Text, or Text to Number, Checkbox, Date or Multi-select
  • Remove keeps the data and can be restored; delete is permanent and strips the values
Lead columns · PeoplePeopleCompanies
EmailemailBuilt-inEmail
Job Titlejob_titleBuilt-inText
Plan tierx_plan_tierSelect
Sales regionx_regionText
Seatsx_seatsNumber

Removed fields

Legacy idx_legacy_idText

Remove hides a field everywhere and keeps its data. Restore brings it back.

Protect your list

Do Not Contact is one flag, enforced everywhere

The people you must not message should be impossible to message by accident, from any tool.

Do Not Contact

Mark it once, every channel refuses

Do Not Contact belongs to the person, not a campaign. Email sequences, LinkedIn replies, WhatsApp and CRM sends all check it on the server. A separate suppression list holds unsubscribed, bounced, manual and complaint addresses.
  • Global to the person, across email, LinkedIn and WhatsApp
  • Suppressed addresses are skipped on email imports
  • Clear the flag from the same menu to allow sending again
CRM record

Samir Haddad

COO · parcelly.example

Do Not Contact
  • Email step 3 Refused
  • LinkedIn message Refused
  • WhatsApp message Refused

Enforced by the server before each send, not just hidden in the UI. Clear the flag from the same menu to send again.

People · 4,812 leads-q4.xlsx
NameJob titleSource
Hannah WeissLumen FreightHead of GrowthCSV import
Rafael CostaBrightloopVP SalesLinkedIn search
Aiko TanakaKestrel HealthGrowth LeadTable
Samir HaddadParcellyCOOCSV import
Add a column — text, number, date, select…

Rows land one at a time

Imported people appear on the Leads page with their company, job title and source, ready to add to a campaign.

Find the right people fast

Search covers email, LinkedIn URL, name, title, company and domain, plus imported extra columns. Filters narrow People down further.

  • Campaign: all, email, LinkedIn or not in a campaign
  • CRM category and subcategory, and CRM state
  • Has email, has LinkedIn
  • Sort by last updated, date added, name, company, title or email

The details

What the lead list does for you

The small things that keep a list usable as it grows.

  • Straight into campaigns

    Pick people from your lead database for a campaign, or import a file straight into an email, LinkedIn or WhatsApp campaign.
  • Extra columns kept

    In a campaign import, unmapped columns are camelCased and stored on the person: Job Title becomes {{jobTitle}}.
  • Companies by domain

    Companies are matched by domain. If a row has a company name but no domain, the domain comes from the email unless it is webmail.
  • Lead categories

    Replies sort people into CRM categories: Customer, Interested, Not interested and Other, each with its own stages.
  • Reach at a glance

    Three icons per person show whether you have an email, a LinkedIn profile and a phone. Click to copy or open.
  • Suppression list

    Unsubscribed, bounced, manual and complaint addresses are checked before every email.
  • Per organization

    Leads, fields and uniques are scoped to an organization. Another organization never sees them.
  • No silent merges

    Conflicting identities fail the row instead of overwriting a person.
  • Import runs

    Each campaign import records the file, the campaign, whether you mapped columns and the counts.

Get started

From spreadsheet to campaign

  1. 01

    Import your list

    On People, click Import people and choose a CSV or XLSX. Download the template first if you like.
  2. 02

    Check the result

    See created, updated and failed rows, with the reason and row number for each failure.
  3. 03

    Add your own fields

    Open Lead columns to add typed fields for people or companies.
  4. 04

    Launch from the list

    Add people to a campaign, or import a file straight into one. Replies come back classified.

FAQ

Questions, answered

What is a B2B lead database in AgentSDR?

One list of people and companies for your whole organization. A person exists once, no matter how many email, LinkedIn or WhatsApp campaigns they are in, and a company is identified by its domain. The Leads page shows who you can reach, which campaign they are in and their CRM state.

How do I import leads from a CSV or Excel file?

On the Leads page, open Import people and choose an .xlsx, .xls or .csv file. The first sheet is read and the first row must be the headers. Every row needs an email or a LinkedIn URL. Imports take up to 5,000 rows per file, and the summary lists processed, created, updated and failed rows, with the reason for each failure.

Can I map my own column names?

Yes, in a campaign import. A mapping screen shows each column with a sample value and a Platform field dropdown, pre-selected where the header looks familiar. A column can map to one field only. Choose Keep as variable for any column you want to use in messages, so Job Title becomes {{jobTitle}}.

How are duplicate leads handled?

Each row is matched to an existing person by email, ignoring case, then by LinkedIn profile. A match is updated and no match creates a new person, so importing the same list twice does not duplicate anyone. A blank cell never erases stored data. If a row's email and LinkedIn profile belong to two different people, that row fails and asks you to merge them first. In an email campaign, an address already in the campaign is counted as a duplicate and not enrolled twice.

What are custom lead fields?

Fields you add to people or companies beyond the built-in ones, such as plan tier or renewal date. They are defined per organization, typed (Text, Number, Currency, Checkbox, Date, URL, Email, Image from URL, Select, Multi-select or JSON), and keep a permanent key that starts with x_. You can rename a field, change its type where the values convert, remove it and restore it, or delete it permanently.

Can I stop contacting a lead on every channel at once?

Yes. Mark a person Do Not Contact from their CRM record and sending is refused on every channel: email sequences, LinkedIn replies, WhatsApp and CRM sends. Separately, a suppression list of unsubscribed, bounced, manual and complaint addresses is checked before every email, and email imports skip suppressed addresses.

Can different clients or teams keep separate lead lists?

Leads belong to an organization. Someone in another organization never sees them and you never see theirs, which is how an agency keeps one deployment with a separate organization per client.

Keep your list, and your data

Clone the repo, import a CSV and launch from one list. It runs in your own database, with no per-contact pricing and no one else holding your leads.