Most prospect lists fail long before the first email leaves. They fail at the moment someone decides that a list is a list of names. Names are the cheapest part of a row. What makes a row worth working is everything attached to it: whether the company genuinely fits what you sell, whether there is a way to reach the person, and whether the data was true recently enough to bet a send on it.

A file of 5,000 names where 900 rows are reachable and on-profile is a file of 900. The other 4,100 are cost, bounce risk, and a reply rate that will make you draw the wrong conclusion about your messaging. That is the real damage of a padded list: not the wasted budget, but the corrupted measurement.

This guide covers the six steps of building a B2B prospect list that survives contact. The fit gate that decides what gets in, the columns a usable row holds, the four ways to source rows, why deduplication comes before any spend, the billing mechanic that decides the order of enrichment and verification, what a list of 1,000 rows actually costs, and how to keep the file alive instead of rebuilding it every quarter.

How to build a prospect list: the six steps in order

Here is the whole build in one place. Write the fit gate, pick a sourcing path, deduplicate before you spend anything, enrich only the rows that passed the gate, verify only the rows you are about to contact, then order the file by signal. Each step below is one of those six, and the order is not decorative: two of the steps are billed per row you submit, so anything you can remove for free has to be removed first.

A prospect list is a working file in which every row represents one contact who matches your ideal customer profile, carries at least one confirmed way to reach them, and records when that information was last checked. It is not a database export, it is not a bag of scraped names, and it is not a lead list. A lead has shown interest. A prospect has not.

That distinction shapes everything downstream. Because a prospect never raised a hand, the entire burden of relevance sits on your side of the table. You choose the fit, you choose the timing, you carry the cost of being wrong. This is why the build matters more here than in any inbound motion, and it is why the file sits at the centre of every outbound sales process rather than at the end of it.

The failure mode is remarkably consistent, and it is always volume. Someone needs 5,000 contacts, sources 5,000 rows, and quietly skips the qualification step because applying it would leave 1,200. The campaign then runs on 5,000, bounces on every row with no valid address, gets ignored by every row with no fit, and returns a number that tells you nothing about the message you tested. Building a list carefully is not strictness for its own sake. It protects the only measurement you have.

Step 1: write the fit gate before you source anything

Every candidate row should pass three tests before it earns a place in the file. Write them down first, because the whole value of a gate is that it is applied by a rule rather than by mood at six in the evening.

Fit. Does the company sit inside the profile you can genuinely serve? Fit is a set of observable attributes, not a feeling: industry, headcount band, country, and any structural marker that separates a buyer from a bystander. If you cannot express it as a filter you could apply to a spreadsheet column, it is not a criterion yet.

Reachability. Is there a plausible route to a human? A company row with no named person attached is a target account, not a prospect. Keep the two apart: account-level rows belong in the tiering exercise described in the account-based marketing playbook, contact-level rows belong here.

Uniqueness. Is this person already in the file, already in your CRM, or already in an active sequence? A duplicate is worse than a missing row, because it produces a second message to someone who already got the first one.

If your ideal customer profile is not written down anywhere yet, it does not belong in the list build. It belongs upstream, in the go-to-market strategy, where the choice of who you sell to is made once and then reused by everything else.

Step 2: decide what a usable row holds

A usable prospect row holds twelve to fifteen fields grouped into five jobs: identity, routing, reachability, timing, and operations. Anything outside those five groups is decoration you will pay to enrich and never use.

GroupColumnsWhy it earns its place
IdentityFirst name, last name, company name, company domainThe domain is the join key. Company names collide and get rewritten, domains rarely do
RoutingJob title, seniority, department, headcount, industry, countryDecides who receives which message, and which rows get dropped when you narrow
ReachabilityProfessional email, email status, direct phone, LinkedIn profile URLStatus matters as much as the address. An unverified email and a verified one are not the same asset
TimingSignal, signal dateTurns a flat list into an ordered one. Two columns, and the sequence order stops being alphabetical
OperationsSource, verified onThe two columns almost everyone omits, and the reason the next refresh costs a fraction of this one

The operations pair is worth defending. Without a source column you cannot tell which sourcing path produced the rows that actually replied, so you keep funding all of them equally. Without a verified date you cannot tell fresh rows from stale ones, so the next cleaning pass has to redo the entire file instead of the part that aged. Two columns that cost nothing to fill remove most of the cost of the next cycle.

Step 3: pick a sourcing path that matches your ICP

There is no single best source. There is a source that matches the shape of your ICP, and picking the wrong one is what forces people to buy volume they then have to filter away. Four paths cover almost every B2B case.

PathUse it when your ICP is defined byWhat it returns
Describe it in plain languageRole, seniority, industry and geographyMatching professional profiles imported straight into the sheet, one credit per lead with Import Leads from a Prompt
Audience of a topicInterest in a subject rather than a firmographic bandEveryone who engaged with a relevant public post, name and profile URL, included on the free plan with Import post likes and comments
Physical footprintA trade and a place, for local or field salesBusinesses with phone, website, rating and address, one credit per place with the Google Maps Scraper
A customer you already wonResemblance to your best account, when you cannot articulate the filtersCompanies scored by similarity, one credit per company with Find Similar Companies

For a French ICP there is a fifth path that beats all four on precision, because it does not estimate anything: an activity code returns every registered company that declared it, straight from the official registry, with headcount and address attached. That is what Import Companies by NAF Code does, at one credit per company.

Whichever path you take, stamp the source column at import. It costs a single formula and it is the only way you will ever learn which path deserves more of your budget. The wider channel question, where these paths sit relative to content, ads and referral, is covered in the B2B lead generation guide.

Step 4: deduplicate before you spend a single credit

Deduplication comes before enrichment, always, and the reason is arithmetic. Enrichment is priced per row you submit. Every duplicate you enrich is paid for twice and delivers one contact. Cleaning first is the cheapest cost reduction in the whole build, and it costs nothing: Find Duplicates is unlimited on every plan, including the free one.

Deduplicate on the strongest key you have, in this order. Professional email when it exists, because it is unique by construction. LinkedIn profile URL when there is no email, because one person has one profile. First name plus last name plus company domain as the fallback, which catches the common case of the same person imported twice from two different paths.

When two rows describe the same person, merge rather than delete. Sourced rows often hold complementary halves of the truth: one carries the phone, the other carries the current job title. Set a precedence rule once, most recent value wins per field, and apply it to the whole file so that the merge is reproducible rather than a series of individual judgement calls.

Then apply the fit gate from step one and delete what fails it. This is the moment where the list gets smaller and better, and it should happen while the rows are still free.

Step 5: enrich the survivors, verify only what you activate

There is a billing mechanic here that decides the correct order of operations, and it is worth understanding because almost nobody builds around it. Some enrichment steps are charged for every row you submit. Others are charged only when a value is actually found.

Enrich Leads and Enrich Companies bill per row submitted, at one credit each. So you run them last in the free phase and only on rows that already passed the gate. Every row you did not filter out is a row you pay for whether it was useful or not.

Email Finder and Email Verification bill per result found, at five credits per email found and one credit per verification. That inverts the logic: you can point them at the whole qualified segment without paying for the misses. There is no reason to hand-pick which rows get an email search.

Phone Finder also bills per result found, but at 150 credits per phone. At the Standard rate of 0.002 euro per credit that is about 30 cents for a direct number, which is a good trade for the people you actually intend to call. It runs the same on fifty rows as on fifty thousand, so the only real question is which rows deserve a phone, and that is a budget call rather than a capacity one.

Verification deserves one more rule: verify at the point of use, not at the point of build. An address confirmed three months ago and never rechecked is not a verified address, it is a stale one wearing a green label. Verify the segment you are about to activate, in the week you activate it.

How to build a prospect list of 1,000 rows: what it costs

Published per-row prices make this calculable rather than a matter of opinion. Take 1,000 sourced rows, assume the fit gate and the merge leave 600 qualified contacts, and the build looks like this.

StepApplied toCost
Sourcing1,000 rows1,000 credits at one credit per lead
Deduplicate and merge1,000 rows0, unlimited on every plan
Apply the fit gate1,000 rows0, it is a filter
Enrich the survivors600 rows600 credits, billed per row submitted
Find emails600 rows5 credits per email found, nothing for the misses
Verify before sendEmails found1 credit per verification returned

The floor is therefore 1,600 credits, roughly 3.20 euros at the Standard per-credit rate, plus five credits for each email actually found. The deliberately missing number in that table is the hit rate, because it depends on your segment and nobody honest can quote it for you in advance. Run the finder on 100 rows, read your own rate, and multiply. That measured number is worth more than any benchmark published by someone selling a list.

Two consequences fall out of the arithmetic. First, the sourcing step is often the largest single line, which is an argument for a narrow source rather than a broad one you filter afterwards. Second, the gate pays for itself immediately: filtering 400 rows out before enrichment saves 400 credits and costs nothing.

The free plan carries 100 credits per month, which is enough to build and test a real segment of about 50 rows end to end before you commit to anything. Paid plans start at 9 euros per month, and API and MCP access open at the Standard tier at 20 euros per month for teams that want the same operations running outside the sheet.

Step 6: order the list before you send it

A finished list is not a queue. Sending in import order treats a company that just opened three roles in your buyer's department exactly like one that has not changed in two years, and those two rows do not deserve the same week.

Ordering needs one timing column and one date. A hiring signal is the most broadly useful for B2B, because open roles are public, dated, and directly indicate where budget just moved: Company Hiring Signal returns which companies are recruiting and for which roles, at one credit per company. Recent company news is the other cheap signal, and a technology detected on the website tells you whether you are the replacement or the addition.

Sort by signal date descending, work the top of the file first, and keep the unsignalled rows as the steady background volume rather than deleting them. You are not contacting fewer people. You are contacting the right ones in the right week, which is the whole difference between a list and a queue.

How to build a prospect list you never have to rebuild

Treat the finished file as an asset with a maintenance schedule. Person-level fields move fastest, because people change roles: title, company and email deserve a re-check before each activation. Company-level fields move slower and a lighter rhythm is enough for headcount, industry and address.

This is where the verified-on column finally pays. With it, a refresh touches only the rows past their window, which is a small fraction of the file. Without it, every refresh is a full rebuild, and the file quietly becomes something people avoid opening.

When a segment is ready, push it rather than exporting it. A CSV round trip is where column mappings drift and where the verified status silently gets left behind: Push to La Growth Machine sends qualified rows from the sheet into an audience with no export step and no per-push cost. Teams that would rather drive the same operations from code or from an assistant can use the API or Derrick MCP, both available from the Standard tier.

One last thing worth saying plainly: build the first list small. Take one segment, fifty rows, run all six steps, and measure the share of rows that turned out to be genuinely usable. That single percentage tells you whether your sourcing path, your gate and your fields are right, and it does so before you spend anything meaningful. Scaling a build that works is trivial. Scaling one that does not is how people end up with 5,000 names and 900 conversations they could have had for a fifth of the effort. If you are still deciding whether this motion is the right one at all, the inbound versus outbound comparison is the better place to start.

Frequently asked questions

What is a prospect list?

A prospect list is a working file in which every row represents one contact who matches your ideal customer profile, carries at least one confirmed way to reach them, and records when that information was last checked. It differs from a lead list because a lead has already shown interest while a prospect has not, which means the burden of relevance sits entirely on your side.

How many prospects should a list contain?

Fewer than most teams assume. The number that matters is not the row count but the share of rows that are on-profile and reachable, because unreachable rows add cost and distort your reply rate. Build the first version at around fifty rows for a single segment, measure how many turned out usable, and scale only the sourcing path that produced them.

What columns does a good prospect list need?

Twelve to fifteen fields across five jobs: identity (first name, last name, company, domain), routing (job title, seniority, department, headcount, industry, country), reachability (professional email, email status, direct phone, LinkedIn URL), timing (signal and signal date), and operations (source and verified-on date). The last pair is the one most often skipped and the one that makes every future refresh cheap.

Should I deduplicate before or after enrichment?

Before, without exception. Enrichment is billed per row submitted, so every duplicate you enrich is paid twice and returns one contact. Deduplication itself is free and unlimited on every Derrick plan, so cleaning first is the cheapest cost reduction in the whole build. Merge duplicates with a precedence rule rather than deleting them, since two rows on the same person often hold complementary fields.

What does it cost to build a list of 1,000 prospects?

With Derrick, sourcing runs at one credit per lead, deduplication is free, and enriching the qualified survivors costs one credit per row. On 1,000 sourced rows leaving 600 qualified, that is a floor of 1,600 credits, roughly 3.20 euros at the Standard per-credit rate, plus five credits for each email actually found and one credit per verification returned. Email and phone lookups only charge when they return a value.

Is it better to buy a prospect list or build one?

Building it is both cheaper and more defensible in almost every B2B case. A purchased file is sold to other buyers, arrives without a source column, and cannot be refreshed field by field, so it decays as a block. A list you build carries the source and verification date on every row, which means you can refresh only the part that aged instead of repurchasing the whole thing.

How often should a prospect list be refreshed?

Split the rhythm by field type. Person-level fields such as job title, company and email move fastest and deserve a re-check before each activation, ideally in the week you send. Company-level fields such as headcount, industry and address move slowly and a lighter periodic pass is enough. With a verified-on column, each refresh only touches the rows past their window rather than the entire file.

Start enriching your sheet in 30 seconds

Free for 100 credits/month. No credit card.

Install Derrick free →