Sales Lead Lists 101: How to Build a Prospecting List That Actually Gets Replies in 2026
A sales lead list is a working file of prospects who fit your ideal customer profile (ICP), with the reason each person is on it and a score for how well they fit. When a campaign stalls, SDRs and founders should check the list before rewriting the outreach copy, because the list decides who reads the message at all.
Across our outreach data, including 13.2 million connection requests, sales lead lists built from people who showed interest before you reached out earn above-average reply rates, while the choice between Sales Navigator and a CSV import barely moves acceptance.
Here’s what we’ll cover to make sure you’re getting replies from your sales lead lists:
- The fields a sales lead list needs, including a signal column and a fit score.
- Where to source a prospecting list, ranked from warmest to coldest, with Expandi’s cap for each source.
- A five-step build: rebuild the ICP, pull, score, filter and launch.
- When to build, when to buy, and why a bought CEO email list is a poor bet.
- How to keep the list clean once the campaign is live.
Key Takeaways
- Pick one signal source, pull it, score every row 1 to 5 in batches of about 100, and contact only the 4s and 5s.
- Signal beats source. Sales Navigator and CSV leads accepted at 19.8% and 18.5% in our data, with identical reply rates. Profile-visitor and event campaigns replied at 13.4% and 14.21%, against a 10.3% LinkedIn DM average.
- Run warm and cold sources as separate campaigns, and remove customers, already-contacted leads and 1st-degree connections before a cold campaign launches.
- Skip bought CEO email lists. S&P 1500 companies named 168 new CEOs in 2025, and an executive reached without context has no reason to reply.
- Expandi pulls lists from LinkedIn groups, events, post engagers, Sales Navigator searches and Lead Qualification rules, filters them with blacklists, and runs the campaign in the same place.
What should a sales lead list include?
A sales lead list should hold enough to decide two things for every row: whether this person fits, and why you’re contacting them now.
- Company and personal data answer the first question and belong in any B2B lead list.
- The reason to connect answers the second, and it’s the column that makes a list worth working, because it hands the first message its opener.
To build a sales lead list your reps can work from, capture these fields:
| Group | Fields | Why it matters |
|---|---|---|
| Company data | Company name, website, LinkedIn company URL | Matches each row to accounts in your CRM and to your exclusions |
| Company data | Industry, company size band, location | The segment filters your ICP is built on |
| Personal data | First name, last name, job title, LinkedIn profile URL | The profile URL is the one field Expandi needs to import a lead |
| Personal data | Work email (optional) | Added after launch, and only for leads you also plan to email |
| Reason to connect | The signal: the post they engaged with, the event they joined, the group you share | Gives the first message a specific opener |
| Score | 1 to 5, plus a one-line reason | Decides who gets contacted and keeps the call reviewable |
Lead temperature sits on top of those fields:
- Cold: fits the ICP, no signal yet.
- Warm: has shown a signal, such as commenting on your post.
- Hot: has replied or asked for a call.
An outbound sales lead list holds cold and warm leads, and a lead who turns hot moves into your pipeline.
Your CRM may also use stage labels: marketing-qualified leads (MQLs) have engaged with your marketing enough to pass its scoring threshold, and sales-qualified leads (SQLs) have been vetted by sales as ready for a conversation.

Where should your prospecting list come from?
Your prospecting list should come from the warmest source that still has enough of your ICP in it. Start with people who already showed interest in you or your topic, widen to searches next, and treat bought data as raw material you score like every other row.
The main routes for lead list building, from LinkedIn prospecting sources to broker files, compare like this:
| Method | Effort | Signal | Data quality | Compliance risk (data protection) |
|---|---|---|---|---|
| LinkedIn signal sources (engagers, attendees, groups, visitors) | Low once set up | Strong | Live profiles | Lower |
| LinkedIn or Sales Navigator search | Low | Only what your filters add | Live profiles, loose matches | Lower |
| CSV from your CRM or a website-visitor tool | Medium | Depends on the source | As good as your records | Lower for your own records |
| B2B database you filter yourself | Medium | Weak | Varies, needs checking | Medium |
| Bought list from a broker | Low | None | A dated snapshot | Highest |
Ranked from warmest signal to coldest, each source pulls into Expandi with its own list type and cap per list:
| Source, warmest first | Signal | How to pull it in Expandi | Cap per list | Best use |
|---|---|---|---|---|
| Profile and company page visitors | Looked you up | Signals action (Profile visited, or Company visited for pages you admin) | Syncs straight into a campaign | Fast, warm follow-up |
| Your network and former colleagues | Existing relationship | LinkedIn search URL list for 1st-degree connections, Sales Navigator Past company filter for former colleagues | 1,000 (search URL), 2,500 (Sales Navigator) | Warm intros and referrals |
| Post engagers | Reacted to or commented on a post | Post engagement URL list, or Signals for up to 3 posts | 2,500 to 3,000 per post | Openers about the post’s topic |
| Event attendees | Registered for an event | Event attendees URL list (you must attend or host) | 1,000 | Outreach before and after the event |
| Group members | Joined a niche community | Group URL list (owner or member) | 2,500 | Openers built on the shared group |
| Company page followers | Follows a page | Company followers list: every follower of your own page, only 1st-degree followers of other pages | 1,000 | Re-engaging your own audience |
| Website visitors | Visited your site | CSV of LinkedIn profile URLs from a visitor tool, filtered with an ICP Filter condition | 5,000 rows | Follow-up while intent is fresh |
| Sales Navigator or LinkedIn search | Fits your filters | Sales Navigator URL list, or a LinkedIn search URL list on a free account | 2,500 or 1,000 | Volume, sharpened with Sales Navigator filters like Changed jobs |
| Bought database | None | CSV with LinkedIn profile URLs | 5,000 rows | Raw starting point only |
Within the colder sources, the tool you pull from barely changes the result.
Our State of LinkedIn Outreach H2 2026 report, built on 13.2 million connection requests, compared nearly 11,000 campaigns fed by a single lead source: Sales Navigator leads accepted at 19.8% and CSV imports at 18.5%, with identical reply rates.
That gap works out to about one extra acceptance per 77 connection requests. The signal behind the list is what moves the reply rate.
In our State of LinkedIn Outreach H1 2026 report, Inbound Visitors campaigns, which reach people who viewed your profile, replied at 13.4%, and Event campaigns replied at 14.21%, against a 10.3% average for LinkedIn DMs.

Run warm and cold sources as separate campaigns, because each needs its own opener.
- A post engager gets one about the post.
- A Sales Navigator lead needs a reason built from their role or company.
Mix the two and both groups get the same generic message.
Expandi enforces part of that split: the Signals action must be a campaign’s first step and can’t share a campaign with search or CSV leads, as our guide to Expandi Signals explains.
Agencies can run the same split for each client with intent-centered campaigns.

How to build a sales lead list in 5 steps
Knowing how to build a lead list that gets replies starts with the ICP. After that, every row has to pass scoring and your exclusions before anything sends.
Step 1: Rebuild your ICP from conversations that worked
Start from the replies you already have. Pull the conversations that turned into meetings and write down what those people share: country, LinkedIn industry, company size band and role.
That pattern is your ICP, drawn from the people who said yes to a meeting. If you’re a founder starting from zero, run the first conversations yourself and let them write it.
Alex Vacca, founder and CEO of Frontal, which builds revenue systems for B2B companies, starts client work the same way: his team reads the last 50 closed-won deals and builds the ICP from what closed.
He explained why in a GTM Society fireside chat:
“You would be shocked by how many companies have still no clue about what’s their ICP, what’s the total addressable market.”
Alex Vacca, Frontal
Segment by LinkedIn industry first.
In our H2 2026 data, acceptance ran from 21.8% to 36.5% depending on the industry the sender works in, across the 38 industries with at least 50 sending accounts, while sender seniority and sender company size each stayed inside a 3-point band.

Compare your results with our LinkedIn outreach benchmarks by industry, and treat the 28.5% platform acceptance rate and 10.4% message reply rate as a rough midpoint.
Once a segment works, widen it one step at a time: the next adjacent industry or size band, with the same message.
Step 2: Pull the list from one signal source in Expandi
Pick one source from the table and pull it into Expandi as a lead list.
- Pulling a list means importing the public profile details your own searches and signals return, such as name, job title and profile URL, into a list you can work with.
- Bulk scraping is a different activity: it harvests profiles at scale to build a database for storage or resale.
In 2025, LinkedIn sued two software companies, alleging they ran millions of fake accounts to scrape and sell member data, and a September 2026 consent judgment now bars them from scraping LinkedIn for good.
LinkedIn’s terms prohibit third-party software that scrapes or automates activity on the site, so every automation tool carries some risk of a restricted LinkedIn account.
Conservative daily limits and a gradual warm-up keep that risk down.

Start with LinkedIn groups, the simplest signal source to pull, since every member chose to join a community built around your topic.
To pull a LinkedIn group’s members into Expandi:
- Join a group your buyers are active in.
- Copy the group’s URL from LinkedIn.
- In Expandi, open Lead lists and click +Add leads.
- Choose Group URL, paste the link, click Next.
- Name the list, choose whether to auto-refresh it, and click Confirm.

Post engagers and event attendees follow the same flow with a different list type:
- Post engagers: copy the post link, choose Post engagement URL, paste the link and the post ID, then pick reactions, comments or both. The post can be yours, a customer’s or a peer’s.
- Event attendees: open an event you’re attending, copy its URL (hosts click View as member first), and choose Event attendees URL. Past and upcoming events both work.

Profile visitors skip the lead list and go straight into a campaign through Signals.
In a Builder campaign, add the Signals action as the first step after Start, choose Profile visited, add an ICP Filter condition after it, and activate.
The campaign starts empty and fills as new visitors sync about every 24 hours. Profile visited needs LinkedIn Premium or Sales Navigator and runs in one active Builder campaign at a time.

If you pull from a search, a Sales Navigator list needs LinkedIn Premium with an active Sales Navigator subscription, plus two-factor authentication turned on in LinkedIn.
Each list imports up to 2,500 leads, the same ceiling LinkedIn puts on the results of a single Sales Navigator search, and our Sales Navigator guide covers building the search itself.
Expandi’s Lead Qualification list builds a list from rules you set, and you score it like any other list. Set include and exclude rules for:
- Location
- Industry
- Job title
- Connection degree
- Company size
- Company name
Then check the reach estimate, and let the list (up to 5,000 leads) refresh every 3, 14 or 30 days. Its rules lock once the list is created.

If you work from an AI assistant, Expandi’s MCP, currently in beta, connects Claude or ChatGPT to your account so you can create lead lists from a prompt. Nothing sends without your approval.
Step 3: Score every row 1 to 5 in batches of about 100
Score before you launch, because once a campaign is live, no AI rewrite can rescue messages that already reached the wrong people. A raw export carries people who match your filters on paper and still don’t belong in a campaign: the wrong role, the wrong company, profiles nobody has touched in years.
Ilija Cosic, Head of Sales at Expandi, reviews campaigns, and in our guide to AI for sales prospecting he described a 1,500-person Sales Navigator search this way:
“From 40 to 70% of people are just absolute garbage… LinkedIn is just hallucinating the search results.”
Ilija Cosic, Expandi
To score a sales lead list:
- Export the lead list as a CSV.
- Split it into batches of about 100 rows.
- Rate each row 1 to 5 against your ICP.
- Write one line on why each row scored that way.
- Keep the 4s and 5s for the campaign.
A shared rubric, set once by the sales leader or RevOps owner, keeps every SDR and BDR scoring the same way:
- ICP fit and a live signal, such as a comment on your post this month.
- ICP fit with a weaker signal or a specific reason to write, such as a shared group or a job change in the past 90 days.
- Partial fit, such as the right role at a company outside your size band, or a full fit with no reason to write yet.
- The wrong role or the wrong company.
- Can’t be verified, works at a competitor, or the profile looks abandoned.
The first batch shows you which filters let bad rows through, so fix the search before you pull the next one.
Signals leads skip this export, because the ICP Filter condition from Step 2 screens them as they arrive.
Enrich after scoring, and only the rows you keep.
Data enrichment fills in missing fields such as company size or tech stack from other data sources, and waterfall tools query several providers in turn to fill more of them.
Step 4: Apply exclusions and test the top-scored leads first
Before anything sends, remove the people who shouldn’t hear from this campaign. To apply exclusions in Expandi:
- Existing customers: blacklist them by company name or profile link before you assign the list, since the blacklist screens leads at assignment.
- Leads a teammate already contacted: Expandi’s company duplication settings stop a second account on your team from reaching a lead who’s already in a teammate’s campaign, unless you allow it. Expandi also skips anyone already in a campaign on your own account.
- 1st-degree connections in a cold campaign: Connector campaigns send connection requests, so they only reach people outside your network. Route your existing connections to a Messenger campaign with a message written for them.
- Competitors and roles you never sell to: blacklist them by company name or job title.

Then clean the fields your messages will use:
- Remove duplicate rows in Google Sheets with Data > Data cleanup > Remove duplicates.
- Split full names into first and last with Data > Split text to columns.
- Strip titles like Dr., LLC or Sr. by listing them in Expandi under LinkedIn Settings > General Settings > Ignore titles, which has separate fields for names, job titles and company names, so {first_name} prints John in place of Dr. John.

Upload the cleaned 4s and 5s back as a CSV, and Expandi shows how many rows it will import and skip, duplicates included, before you confirm.
Before the first 100 go out, open each profile yourself and check that the score holds up.
Then send them as one small campaign you watch closely, and let their replies tell you whether the list or the message needs work.
If this outreach has never worked by hand, start one step earlier, as Ilija puts it:
“The order that holds: start conversations manually with individual prospects. Watch which ones land. Write down the pattern. And only then automate.”
Ilija Cosic, Expandi
Step 5: Launch in Campaign Builder and sort the replies
Once the list is clean, assign it to a Builder campaign.
From there, trigger-based outreach moves each lead forward on its own, so a follow-up only goes out after someone accepts your request, and a lead who views your profile can set off the next step.

Next, connect the CRM integration for HubSpot, Pipedrive or Salesforce and choose which campaign triggers send a lead to your CRM.
Every synced lead’s activity then lands on its CRM record, so the list and its results stay in one place.

Then switch on Sentiment analysis in the campaign settings (it needs a campaign goal), and Expandi’s AI Analyzer sorts everyone who replies into Interested, Maybe Interested or Not Interested. After the first week, look at who landed in Interested. Their industries, roles and signals are the brief for your next list.

Some of those engaged leads will be worth an email too. Email finder tools can guess a work address from a person’s name and company domain, so verify every address before you send.
Bad addresses raise your bounce rate and unwanted emails draw spam complaints, and enough of both can get Google routing your domain’s mail to spam.
Should your LinkedIn connection requests include a note?
Add a note when it names a tie that exists.
In our H2 2026 data, across 240 single-request campaigns, notes that referenced a follow, a group or a shared network accepted at 1.8 to 2.7x the 30.2% baseline acceptance rate.
The top note went to people who already followed the sender’s profile: a connection request reading “Hey {first_name}, thanks for the follow” was accepted 81.1% of the time across 435 people contacted.

That’s why signal-based lists and tie-based notes work as a pair. For a cold Sales Navigator list with no shared tie, test a blank request against a short note before you commit to either.
Should you build or buy a sales lead list?
Build your sales lead list whenever you can, and buy only as raw material you filter before anyone gets contacted. A database you search and filter yourself counts as building.
A fixed file from a list broker counts as buying, and a team that buys lead lists this way inherits stale rows, shared contacts, and the seller’s compliance risk.
Here’s how the two compare:
| Factor | Build (LinkedIn signals and your own filters) | Buy (broker list or one-off file) |
|---|---|---|
| Cost | Your time plus tool subscriptions | A per-record or per-list fee |
| Freshness | LinkedIn pulls reflect live profiles, and database rows get checked before use | Ages from the day it was compiled |
| Signal | Signal sources give every row a reason to connect, and searches carry only what your filters add | None |
| Exclusivity | Yours alone | Sold to every other buyer of the same file |
| Deliverability | Emails added only for engaged 4s and 5s, then verified | Bad addresses raise bounces and spam complaints |
| Compliance risk | You know how each row was collected | You inherit the seller’s collection practices |
| Fit | Matches your ICP by design | Matches the seller’s categories |
In January 2026, 20.6% of US wage and salary workers had been with their employer for a year or less, per the Bureau of Labor Statistics, so a bought file compiled last year already holds people who have moved on.
Where a bought file came from matters too. A LinkedIn data API shut down in July 2025 to comply with a settlement after LinkedIn sued it, and a list bought from a reseller can trace back to that kind of pipeline.

The legal side favors building too.
GDPR’s Recital 47 says direct marketing may count as a legitimate interest, judged against what people can reasonably expect from their relationship with you. A file bought from a stranger gives you no relationship to point to.
If you need raw volume, use a database you filter yourself and that connects to your outreach.
Smartlead’s B2B lead finder, SmartProspect, is one example: it searches business profiles by job role and company size, and Expandi’s CRM & Apps lead list can then pull the Smartlead leads who opened, clicked or replied into a LinkedIn campaign, as long as each has a LinkedIn URL. Score those rows like everything else.

Should you buy a CEO email list?
No. A CEO email list goes stale fast, carries compliance risk, and lands with the person who has the least time for a stranger. Build the executive list from LinkedIn signals, where every row comes with a reason to write.
Spencer Stuart counted 168 new S&P 1500 CEOs in 2025, the most in more than 15 years, with CEO turnover ranging from 8% in financial services to 14% in healthcare and in tech, media and telecom.

Emailing the list brings CAN-SPAM into play: the FTC’s CAN-SPAM guidance states that the law makes no exception for business-to-business email, with penalties of up to $53,088 for each violating email.

In December 2024, France’s CNIL fined a LinkedIn contact-data extension €240,000 for collecting contact details people had restricted to their network and keeping them for years.
To build an executive list from LinkedIn signals:
- Pull a source executives show up in, such as engagers on a peer CEO’s post, attendees of an executive event you join, or followers of your own company page. A Sales Navigator search set to CXO seniority adds reach, though its rows carry no signal.
- Narrow it to the C-suite with an ICP Filter condition for titles such as CEO, Founder or Chief, or drop non-executives when you score each batch.
- Open with the tie you share. When a teammate or mutual connection knows the executive, ask them for an intro first. Otherwise, name a real tie in the connection note, such as a follow, a shared group or a mutual network, since tie-based notes accepted at 1.8 to 2.7x the baseline rate in our data.
In larger companies, start one level down. A director who owns the problem can bring the CEO in, and the executive then hears about you from their own team.
Two free tutorials cover the lookups:
- To find a named executive, our LinkedIn search guide shows how to find CEOs’ LinkedIn profiles.
- If you already hold executive emails from past deals or events, you can match an email list to LinkedIn profiles and see each person’s current role.
How to keep sales lead lists clean after launch
Once a campaign is live, keep its sales lead list clean on a schedule:
- Remove non-responders when the sequence ends, and delete their records after a retention period you set and write down.
- Let source lists refresh, and score the new rows before they join a campaign: Lead Qualification lists add matches every 3, 14 or 30 days, and URL-based lists can auto-refresh too.
- Rebuild static lists, such as CSV imports, before each new campaign, since they never refresh on their own.
- Work through the Maybe Interested and Not Interested groups by hand: ask wrong-person replies for a referral, give not-now replies a follow-up date, and blacklist anyone who asked you to stop.
- Track acceptance and reply rate per source to measure list quality and decide which signal earns the next list.
Build your next sales lead list from one signal this week
A sales lead list earns replies when every row has a reason to be there. Pick one signal your buyers already gave you, such as a post they engaged with or an event they joined, and make it the next list you pull and score.
Start a 7-day trial to pull, filter and run your first list in Expandi.
FAQs
Enough for one segment and one message, and few enough to check by hand. LinkedIn keeps its exact limit unpublished, and about 100 connection requests a week works as a ceiling, so a 2,500-person list takes about six months to work through. At that pace a bad list wastes months, so send the first 100 scored leads as a test before the rest go out.
Every three months at minimum: re-check job title and company on any row older than that before it enters a sequence. On a list you work over several months, re-check the oldest batch first, since those rows have had the longest time to go stale. Anyone who changed jobs since the pull goes back through scoring against their new role and company.
Nothing in this answer is legal advice. Public profile data is still personal data, so GDPR and UK GDPR apply to EU and UK prospects whether you collect it or buy it, and CAN-SPAM covers every commercial email you send to US recipients. LinkedIn’s User Agreement prohibits scraping and automation tools, which puts any account using them at risk of restriction. Keep only the fields your outreach needs, check how a bought list was collected, and confirm the details with counsel in the markets you sell into.
The two terms overlap in everyday use. In stricter usage, a lead list holds names that match basic criteria such as title, industry and company size, and a prospect list is the qualified subset: people you’ve checked, scored and given a reason to contact. The scoring step turns one into the other.
Free CEO email lists exist, but the same file goes to every downloader and loses accuracy with every executive move. Before you use one, spot-check 20 rows against LinkedIn: each CEO who has since moved on tells you how stale the rest of the file is.
You’ve made it all the way down here, take the final step

