Sendpilot
All articles
Ideal Customer ProfileJul 23, 202614 min readbySendpilot

How to Build a B2B Lead List That Converts (Without Buying a CSV)

A 10,000-row list is a liability with a spreadsheet icon. Building a B2B lead list is subtractive work: start from the ICP, cut hard, then segment into cohorts small enough that one message can be genuinely specific.

Most teams judge a B2B lead list by its row count, which is exactly backwards. A list is not an asset — it is a bet on your ability to say something specific to every name on it. Ten thousand rows you cannot write to are ten thousand chances to earn an ignored connection request, a bounce, or a spam complaint that costs you the channel for the names that mattered.

List building is closer to editing than collecting: start wide, then cut until what remains is small enough that one person could write each group a message worth receiving. The best reply rates almost always come off the smallest lists.

What follows is the build order — filters, sourcing, exclusion, verification, then cohorts you can write for — plus a straight answer on purchased CSVs versus a live database, and a cadence that keeps it from rotting.

Why a Bigger B2B Lead List Is Usually a Worse One

Put 5,000 loose contacts next to 300 you could defend one at a time, and the case for size does not survive the comparison.

The 5,000 came off a loose filter: right industry, right headcount band, any title with the word you care about. Generic sequences to a list like that, in our experience, reply in the 1–3% range, and most replies are a version of "who are you." Positive replies land nearer half a percent — 15 to 40 conversations worth having. Unverified email data at that scale routinely bounces between 5% and 12% — hundreds of hard bounces charged against your reputation.

The 300 are grouped so each group shares one problem. Cold outbound to a well-targeted list commonly replies in the 3–8% range, and a message about a problem the cohort is living through right now sits at the top of that band and above, with far more replies that are interested rather than confused. Comparable conversations from six percent of the volume, and no bounce damage.

There is a second cost no dashboard shows. Reps stop reading rows on a list that feels infinite. Research stops, the personalized line degrades into a stitched-in company name, and the motion turns into volume. Size does not merely fail to help — it teaches the wrong habits.

Step 1: Turn Your ICP Into Filters You Can Actually Apply

If who you sell to is still a paragraph on a slide, build a real ideal customer profile first — everything below is only as good as the definition feeding it.

An ICP written in prose is not a filter. "Mid-market SaaS companies that care about pipeline efficiency" cannot be typed into a search box. Every clause has to become a field, an operator and a value.

  • Company profile. Headcount, revenue, geography, funding stage. Narrow the bands — 50 to 500 employees, not 10 to 10,000. A wide band means you have not decided.
  • Technographic. What they already run that makes you relevant, or redundant. The most predictive filter teams skip, because it costs an extra tool.
  • Role. Not one title. Name the champion, the economic buyer and the blocker, then list three to six exact titles for each. "Head of Growth" as a wildcard returns everything.
  • Trigger. What makes them worth contacting this month — a role just posted, a funding round, a leadership change, a comment on your last post.

One test keeps this honest: every filter should visibly cut the count. A criterion that removes nobody is a preference — qualify it on the call instead.

Filters get you to a shortlist; a fit score orders it. Sendpilot's ICP Scoring reads the whole LinkedIn profile — title, seniority, industry and company size, plus skills, endorsements, experience and activity — and gives every lead a 0–100 fit score, so the people at the top of the list are the ones worth a specific first line.

Step 2: Where a B2B Prospecting List Actually Comes From

No single source produces a usable list. Each hands you part of the picture, so combine at least three — and prefer sources that stay live over files that were true on the day of export.

  • A lead database matched to live LinkedIn profiles. Sendpilot's Lead Database holds 300M+ contacts you can filter by job title, industry, company size, location and funding stage. Every contact is matched to a live LinkedIn profile with a current title and company, and a search saved as a dynamic list keeps adding people as they start to match — the closest thing to a list that maintains itself.
  • LinkedIn search and Sales Navigator. The freshest job data anywhere, because people maintain their own records. On its own a search is a shortlist you still have to copy out; Sendpilot's Lead Extractor pulls a search result or a Sales Navigator list straight into a lead list. The search mechanics deserve their own Sales Navigator playbook.
  • Your own engagement. Everyone who commented, reacted, or said "not right now" six months ago. Your highest-converting source, and the one most teams lose because nobody captures it before it scrolls away. The Lead Extractor pulls a post's engagers — commenters and reactors alike — into a list in one pass; an inbound campaign pointed at your own post keeps capturing them while the post is live. The automation itself fires on a comment carrying your Action Word, never on a reaction: Sendpilot answers that comment, and the DM follows where you are already connected — everyone else gets the connect-first reply, and the message goes out once they send you a request and you accept it.
  • Communities and events. Slack groups, attendee lists, webinar registrants. Shared context you can reference honestly, but slow manual work — and attendance is not intent.
  • Customer lookalikes. Find the attributes your last 20 closed-won accounts share that your losses do not, and filter on those. Highest fit available, and the surest way to stay inside a segment you have saturated. Once you know the attributes they are a database search: save it as a dynamic list and it keeps finding the next account that looks like your last win.
  • Partner ecosystems. Integration directories, marketplace listings, agency rosters. Technographic fit arrives pre-qualified — as does the fact that competitors scrape the same pages.

Three sources create a fourth problem: exports that disagree about the same person. Every one of them has to land in one place with one record per human, or the same prospect gets sequenced twice from two tools. That part is plumbing rather than strategy, which is why it gets skipped; in Sendpilot every source — database searches, extractions, inbound engagers and anything you import — lands in the same lead list, one record per human rather than one per tool. On the leads Sendpilot sourced — the database, the extractor, inbound — the matched LinkedIn profile and engagement history attach to that record and enrichment goes on top; an imported row keeps whatever it arrived with.

Step 3: The Exclusion Pass Nobody Runs

Subtraction is where a list earns its quality, and teams skip it because it makes the number go down. Run it before you pull anything in.

  • Current customers. Obvious, embarrassing, still the most common miss. Sync it from the CRM.
  • Open opportunities. A cold sequence into an account your AE is working costs credibility with the prospect and the rep at once.
  • Closed-lost inside the cooling window. Ninety days minimum. When you return, lead with the reason they said no, not a fresh introduction.
  • Competitors and their employees. They will reply. It will not help.
  • Anyone who opted out. On any channel, ever, whichever tool it happened in.
  • Segments you cannot serve. No legal entity, no language coverage, below your minimum contract value.

Applied to a set of candidates you were about to pull, this pass usually strikes 10–25% of them before they cost you a credit, which is the point rather than a failure. Keep the result as a permanent suppression list that every future import runs against, not a one-time cleanup.

Exclude before you source, then verify

Order matters more than tooling, and the part you control is when the exclusion pass runs. Build the suppression list before you pull leads in, because enrichment fires the moment a lead arrives from the Lead Database, the Lead Extractor or an inbound campaign, and it spends the same credit balance whether or not you keep the row. Pulling in five thousand names you were about to delete is how a month of credits disappears in week one.

Enrichment completes what you could not source, and in Sendpilot it happens on arrival: the LinkedIn profile, job title, seniority, headcount, location and company website are filled in and re-verified every 30 days, drawing on the 800 credits every plan includes per LinkedIn account each month — one budget shared with database extraction, the extractor and ICP Scoring. It does not run on rows imported from a CSV; an imported row keeps whatever data it arrived with, which is one more reason to source inside the tool rather than upload a file. Waterfall enrichment and verification is a discipline of its own.

Email is a separate job. Sendpilot enriches LinkedIn and company fields, not addresses, and it does not send email. If a cohort's channel is email, verify every address in your email tool before the first send and keep hard bounces under 2%. On LinkedIn the equivalent check is simpler: the profile is live or it is not, and a matched profile is exactly what the database gives you.

Step 4: Lead List Segmentation Into Cohorts of 50 to 150

Segmentation is not slicing by attribute. A cohort is a group of people who share one problem, which is what lets one message be specific to all of them. "Series B fintechs in Germany" is a filter. "Companies that just posted their first RevOps role" is a cohort: you know what is happening inside and can say so in two sentences.

The 50 to 150 range is deliberate. Below 50 you cannot tell a good angle from a lucky reply. Above 150 the shared problem gets fuzzy, the message drifts toward the average member, and you are writing for nobody again.

CohortShared problemThe angleChannel
Hiring their first SDROutbound spend, no process behind itWhat the first 90 days should measureLinkedIn, then email
Commented on a post in the last 30 daysNamed the problem in publicReference the comment, ask one questionLinkedIn, same week
Closed-lost six months agoChose a competitor, or chose nothingWhat changed since they said noEmail, one change named
Runs a tool yours sits next toGap between two systemsThe manual step the pairing removesEmail, LinkedIn backup

Write the message once for the cohort, then personalize one line per person. The cohort carries the relevance; the personalized line only proves a human looked. For the copy itself, start from templates organized by the trigger that justifies sending them.

The channel column is a division of labour. Sendpilot runs the LinkedIn rows — connection request, message, voice note, profile view — from the same list the cohort lives in, and the "commented on a post" cohort builds itself once an inbound campaign is pointed at the post with an Action Word set. The email rows go through your email tool; from Growth up, webhooks and the API hand leads across so the two stay in step.

Cohorts make scoring cheaper too: fit is largely settled the moment someone lands in one, so what you track afterwards is intent — which is how a two-axis fit and intent model stays maintainable.

Purchased CSV vs. Live Database: The Honest Answer

Speed against quality is the wrong frame, and so is buy against build. The real split is between a static file and a live source. A purchased CSV is a non-exclusive snapshot: assembled from public sources, sold to everyone else in your category, and ageing from the day it lands. Contact data decays at roughly 2% a month — about a fifth of the file wrong inside a year — and unverified purchased rows commonly bounce in the high single digits, the fastest way to lose the inbox for the contacts who were fine.

A live database inside the tool you send from is a different object. Sendpilot's Lead Database holds 300M+ contacts, each matched to a live LinkedIn profile with a current title and company. A search saved as a dynamic list keeps adding people as they start to match, and every lead you pull from it is enriched automatically and re-verified on a schedule. You are not buying a file; you are querying a source that keeps updating after you searched it. Anything the Lead Extractor pulls from LinkedIn search, Sales Navigator or a post's engagers arrives enriched and re-verified the same way — it is a pull rather than a standing list, so re-run it when you want the current picture.

Consent still matters. The rules for cold B2B email differ by country — CAN-SPAM in the US, a lawful-basis requirement in the EU and UK — and none of this is legal advice, so check the rules where your prospects sit before the first send.

If you already own a purchased file, treat it as research rather than a send list. Run the exclusion pass, use it to find the account patterns worth chasing, then rebuild the people in the Lead Database so the rows you actually message are live, matched and enriched. Never send to a purchased file the week you bought it, and do not expect an import to fix it: enrichment runs on Sendpilot-sourced leads, not on uploaded rows.

Keeping the List Alive Without a Full-Time Owner

A list decays as a set of cohorts, not as a set of rows. Keeping individual addresses current is a verification habit on its own calendar. What needs attention here is the shape of the list: which cohorts are live, which segments stopped producing, and whether it is still a size your team can work.

  1. Close cohorts, do not let them expire. A cohort is finished the week its sequence ends. Close it then, log which angle earned replies, and move survivors to nurture or out.
  2. Rotate in what your engagement produced. New commenters, replies that said not right now, closed-lost accounts leaving their cooling window. Give them a cohort to land in, not a backlog. An inbound campaign does the capturing; the cohort still needs a name.
  3. Re-run the filters against closed-won each quarter. If your last ten wins would not clear your current filters, the filters are wrong, and every cohort built on them is off target. Where a cohort is a dynamic list built on those filters, fix the search and the list follows.
  4. Delete segments that produced nothing in two quarters. Not paused. Deleted, with the reason written down, so nobody rebuilds it in six months.

One number tells you whether the list is the right size: the share you touched in the last 90 days. Under half in a quarter and you are holding a backlog while calling it an asset — cut until the number clears. Put the review in one person's calendar as a recurring half hour; hygiene that belongs to the team belongs to nobody.

The Bottom Line

Every row you keep is a promise that you have something specific to say to that person, and most lists break that promise a few thousand times over. Build yours the other way round: filters that genuinely exclude, an exclusion pass before you pull anything in, verification before the first send, cohorts small enough for one true message.

Sendpilot keeps that loop in one workspace instead of four exports. Source from the Lead Database or the Lead Extractor, let enrichment and ICP Scoring fill in and rank what survives the cut, and run the LinkedIn side from the same list — Launch for one account, Growth for a small team, Agency for client work, each priced per LinkedIn account with the database, the extractor and enrichment included and 800 credits an account a month. Open your largest list today and delete every row you could not write a specific first line for. Whatever survives is your actual lead list: rebuild it inside Sendpilot and start a free trial on the plan that fits — see /pricing.

Frequently Asked Questions

How many contacts should a B2B lead list have?

Fewer than most teams think — a few hundred you can write to specifically will out-produce several thousand generic ones. The right size is whatever your team can actually work: count the cohorts you can realistically run in a quarter, multiply by 50 to 150 contacts each, and build to that number rather than to whatever a search returns.

Is it worth buying a B2B lead list?

Not a static one. Purchased CSVs are non-exclusive, assembled from public sources and already decaying at roughly 2% a month, and unverified rows bounce often enough to damage your sending reputation. What holds up is a live database inside your outreach tool: Sendpilot's Lead Database matches every contact to a live LinkedIn profile, keeps dynamic lists updated as new people match, and enriches every lead it hands you automatically — a source you query rather than a snapshot you buy.

Where do you find contact data for a B2B prospecting list?

Combine at least three sources. Sendpilot's Lead Database gives you 300M+ contacts filtered by title, industry, company size and location, each matched to a live LinkedIn profile; the Lead Extractor pulls LinkedIn search results, Sales Navigator lists and post engagers into the same list; your own post engagement, captured by an inbound campaign, is the highest-intent source at the lowest volume; communities, events, customer lookalikes and partner ecosystems fill the gaps. Enrichment then completes the profile fields on Sendpilot-sourced leads, and if a cohort goes by email, your email tool verifies the addresses before the first send.

Does Sendpilot enrich leads imported from a CSV?

No. Enrichment runs on leads that come from the Lead Database, the Lead Extractor and inbound automations — LinkedIn profile, title, seniority, headcount, location and company website, re-verified every 30 days. Imported CSV rows can still be sequenced, but they keep the data they arrived with. If you are holding a purchased or exported file, use it to define the search, then rebuild the people in the database so the rows you message are live, matched and enriched.

How do you segment a lead list into cohorts?

Group people by a problem they share, not by an attribute they share. Aim for 50 to 150 contacts per cohort: small enough that one person can write a genuinely specific message and personalize a line each, large enough that reply data means something. Good examples are companies hiring their first SDR, people who commented on a post, or closed-lost accounts past their cooling window.

How often should you clean and refresh a B2B lead list?

Review it monthly at cohort level and quarterly at filter level. Monthly, close finished cohorts, log which angles earned replies, and add whatever your engagement produced that month. Quarterly, re-run your filters against the deals you actually won and delete segments that produced nothing in two quarters. The sizing test: if less than half the list has been touched in 90 days, cut it.

All articlesJul 23, 2026 · 14 min read