Lists are the single biggest lever in cold email and the most underinvested. People will spend a week rewriting copy and 30 minutes building a list. The math should be reversed.
Why list quality compounds
Reply rate is roughly the product of three things: list-fit × copy × deliverability. Of those, list-fit has the biggest range. Copy can move reply rate by 2x. Deliverability can move it by 3x. List quality can move it by 10x.
A list of 500 perfect-fit, well-researched, well-verified contacts will outperform 5,000 lukewarm contacts every single time. Stop optimizing for list size.
The five-step list build
Step 1 — Define ICP in five dimensions
A useful ICP is precise across five axes:
- Company size (employee count, ARR band)
- Industry (specific vertical, not "B2B")
- Geography (region, regulatory zone)
- Tech stack (the tools they currently use)
- Trigger (what is happening at the company right now)
If you cannot specify all five, your ICP is too loose.
Step 2 — Source companies before contacts
Build a company list first. Use LinkedIn Sales Navigator's company filters. Layer in tech stack filters from BuiltWith or Wappalyzer. Layer in funding stage from Crunchbase if relevant.
Aim for 200–800 companies in the first build. Quality over quantity.
Step 3 — Pull 3–4 contacts per company
Pull multiple titles per company. The economic buyer plus 1–2 champions plus 1 power-user role. Tools we use:
- Apollo (best for breadth)
- Clay (best for enrichment)
- LeadIQ (best for stealthier sourcing)
Do not pull a single contact per company. Multi-threading lifts reply rates and protects against turnover.
Step 4 — Verify ruthlessly
Run every email through a verifier. We use NeverBounce as primary and Kickbox as a second pass on anything flagged "risky". Discard:
- Anything not classified as "valid"
- Catch-all addresses on enterprise domains
- Generic addresses (info@, contact@, support@)
A 3%+ bounce rate destroys deliverability. Verification is non-negotiable.
Step 5 — Enrich for the trigger
If your copy references something specific, enrich for it before sending. If you reference recent funding, pull funding date from Crunchbase. If you reference new hires, pull from LinkedIn. If you reference their tech stack, pull from BuiltWith.
The enrichment fields you actually merge into copy are the ones worth pulling. The rest is noise.
Anti-patterns to avoid
- Buying lists: every bought list is junk. Walk away.
- Scraping LinkedIn unverified: 30%+ bounce rate on raw scrapes.
- Optimizing for size: a 10K-row list of mediocre contacts is worse than a 500-row list of perfect ones.
- Single-contact accounts: turnover kills sequences. Always pull 2–4 contacts per account.
A worked example
For a recent client selling RevOps software to mid-market SaaS:
- ICP: Series B–D SaaS, 80–400 employees, US/UK, using Salesforce, recently hired a VP RevOps
- Companies: 412 from Sales Navigator + Crunchbase
- Contacts: 1,438 across VP RevOps, Director of Sales Ops, CRO
- After verification: 1,182 (82.2% pass rate, well above the 60% industry average)
- Reply rate on first sequence: 18.7%
- Cost per meeting: $214
The list took two full weeks to build. The campaign took six days to run. The ratio is right.
What to do in the next 24 hours
- Pull your last campaign's bounce rate. If above 3%, your verification is broken.
- Audit your ICP — can you specify all five dimensions? If not, tighten before your next build.
- Plan your next build for quality, not quantity. Aim for 500 perfect rows, not 5,000 mediocre ones.
Lists are the biggest lever in cold email. Treat them that way.