Cold Email 2026/02 · List building
Module 02 · List

Build a list that doesn't bounce.

The single biggest reason cold email fails has nothing to do with copy. It's a bad list. Wrong people, dead mailboxes, stale roles. Fix the list and half of every other problem disappears.

The one idea

A list is three layers: target, find, verify

Target. The exact shape of the company and person you want to reach (industry, headcount, role, recent signal). Find. Get their work email — by API, by pattern, or by scrape. Verify. Check that the mailbox actually exists before you send. Skip any one and your bounce rate explodes.
Step 1 · Target

Define your ICP with a trigger event, not just a job title

A "VP of Sales at 50–200 person SaaS company" is generic. A "VP of Sales at 50–200 person SaaS company who just raised a Series A in the last 90 days" is a trigger. Triggers double or triple reply rates because relevance is built in.

Good ICP Industry: B2B SaaS
Headcount: 30–250
Role: Head of Demand / VP Marketing
Trigger: Hired 2+ AEs in the last 60 days or launched a new product page or announced a Series A/B
Why this works: hiring + raising means budget; the role owns pipeline; the trigger gives you a non-generic line 1.
2026 update Apollo, Clay, and Ocean.io now ship native intent signals (hiring spikes, technographic changes, funding events). Use them as the trigger — not as a nice-to-have. A list without a trigger column is a list that gets ignored.
Step 2 · Find emails

Three ways to get from "name + company" to email

MethodHow it worksBest forCost
Database lookupApollo / ZoomInfo / Lusha already have itCommon roles, larger companies$0.05–0.20 each
Email finder APIHunter, Findymail, Anymail — they guess the pattern and verifySMB, smaller companies$0.01–0.05 each
Pattern guessingTry first.last@, then first@, then flast@, verify eachOne company at a time, free fallback~free
What's a pattern? Most companies use one format for everyone's email. Once you know the pattern for one person at the company, you know it for everyone. Tools like Findymail do this guess-then-verify automatically.
Step 3 · Verify

Verify every email before sending — no exceptions

A verification service connects to the recipient's mail server and asks "does this mailbox exist?" without sending a real email. It returns valid, invalid, catch-all, or unknown. Send to validated only. Drop invalid. Decide separately on catch-all (often safe to send to with caution).

Recommended cascade Run every email through two verifiers, not one. Verifier A says valid, verifier B says valid → send. Either disagrees → drop or hand-check. This catches the ~3% of false positives a single verifier misses.
Do this now

Build your first verified list of 200 leads

  1. Write your ICP using the format above. Include at least one trigger event.
  2. Search Apollo (or Clay) for 200 contacts matching the filter. Export with email + LinkedIn + company.
  3. Run the CSV through two verifiers. Keep only addresses both mark as valid.
  4. Spot-check 5 by opening LinkedIn — confirm they're still at the company.
  5. Save the cleaned list. This is your test slice for the rest of the pipeline.
Don't do this

The list mistakes that kill campaigns

Buy a generic list off Fiverr or some "leads marketplace". Stale, sold to dozens of other people, half-fake. Bounce rate alone will blow up your sender reputation in one week.
Skip verification. One bad campaign with 15% bounce rate can permanently damage a sending domain's reputation. Verification is cheap insurance.
Use a list older than 60 days without re-verifying. 1–2% of B2B emails go stale every month (job changes, departures, role moves). After 90 days, your old list is roughly 5% dead.
Target by job title only. Without a trigger, you sound like every other vendor in their inbox. Triggers are the difference between "ignored" and "replied".
What this rules out

If your bounce rate is now <2%, you can stop blaming the list

Any reply problem after this point is a copy, deliverability, or sending problem — not a targeting problem. Move on.