Cold Email Deliverability Checklist: List Hygiene Before Your Next Outreach (2026)
When cold emails land in spam, teams usually blame the copy, the subject line, or the sending tool. But the most common killer is invisible: the list itself. Hard bounces, spam traps, catch-all addresses, and stale contacts quietly tell mailbox providers your domain can't be trusted — and mailbox providers in 2026 grade your sending domain far more strictly than they used to. A deliverability problem that looks like a copy problem is, more often than not, a hygiene problem.
The good news: list hygiene is the cheapest deliverability lever you have. No new tool, no new warm-up routine — just a repeatable cleaning pass before every campaign. This checklist walks through the exact steps, in order.
Why mailbox providers care about your list, not just your content
Since February 1, 2024, Gmail has enforced formal email sender guidelines for anyone sending to personal Gmail accounts. Anyone sending more than 5,000 messages per day to Gmail is classified as a bulk sender, and Gmail requires all senders to keep the spam complaint rate reported in Postmaster Tools below 0.3%. Senders above that line are more likely to have their messages filtered or rejected outright.
A dirty list attacks that metric directly. Dead addresses bounce, raising bounce rates. Spam traps — addresses set up specifically to catch unsolicited senders — flag your domain. Stale contacts who no longer want your mail mark it as spam instead of unsubscribing. Each of these pushes your complaint and bounce rates in the wrong direction, and once a domain's reputation sinks, every future campaign pays the price.
Step 1: Remove hard bounces immediately — never re-send to them
A hard bounce means the address doesn't exist: the domain is gone, the mailbox was deleted, or the address was never real. Re-sending to hard bounces is the fastest way to look like a spammer to mailbox providers, because real senders suppress them. After every campaign, export the bounce report and remove every hard-bounced address from your sending list permanently. A soft bounce (mailbox full, server temporarily down) deserves one or two retries, then suppression if it keeps failing.
Step 2: Verify catch-alls and risky addresses before sending
Many corporate domains are "catch-all" — they accept mail to any address, valid or not. A catch-all address can't be confirmed without actually sending, so blasting a list full of unverified catch-alls is a gamble: a good chunk will bounce on delivery. Run your list through an email verification service first, and treat catch-alls and "unknown" statuses as a separate segment — send to them slowly, in small batches, and prune the ones that bounce. Also flag disposable and temporary email addresses, which almost never belong to real prospects.
Step 3: Strip role-based addresses (info@, sales@, support@)
Role-based addresses are monitored by multiple people, not one decision-maker — which makes them bounce-prone, complaint-prone, and useless for personalization. They also inflate your list with contacts that can never become replies. Pull info@, sales@, support@, careers@, and admin@ out of your prospecting list. If you want to contact a company, find the actual person instead of the shared inbox.
Step 4: Prune the unengaged — stale contacts are spam complaints waiting to happen
Contacts who haven't opened a single email in months are your highest complaint risk: when your next mail arrives, they're more likely to hit "report spam" than to unsubscribe. Most deliverability guides recommend a sunset policy — if a contact hasn't engaged in a defined period (many teams use three to six months), stop sending prospecting mail to them, or run one final re-engagement attempt and then suppress. A smaller list of people who actually read your mail outperforms a bigger list of the indifferent, on replies and on reputation.
Step 5: Fix the formatting junk your exports hide
Lead lists exported from Apollo, Hunter, or Snov routinely carry formatting problems that cause instant bounces: trailing spaces, uppercase characters, typos in domains ("gmial.com"), invalid characters, and duplicated entries with different casing. Normalize everything to lowercase, trim whitespace, and reject any address that doesn't match basic email syntax before it ever reaches your sender. Our free CSV Cleaner handles this pass entirely in your browser — no signup, no uploads.
Step 6: Deduplicate across every list you merge
Merging lists from different sources almost always creates duplicates — the same person from Apollo and Hunter, a Gmail address and a work address for the same prospect. Sending twice to the same contact doubles your spam-complaint exposure for zero extra reach, and duplicate records skew your engagement stats so badly you can't tell what worked. Deduplicate on email address every time you merge lists; see our guide on deduping massive lists that break Excel if your list has outgrown spreadsheets.
Step 7: Re-validate on a schedule, not just once
A list that's clean today decays quietly: people change jobs, domains expire, inboxes go dormant. Hygiene isn't a one-time project — it's a cadence. Re-run the full pass (bounces, catch-alls, engagement, formatting, dedupe) before every major campaign, and spot-check between them. Teams that clean before every send spend less time firefighting deliverability and more time writing to people who actually answer.
Diagnose fast: list problems vs. the symptoms they cause
| List problem | What you see | The fix |
|---|---|---|
| Hard bounces left in the list | Rising bounce rate; throttling from providers | Suppress every hard bounce after each send — permanently |
| Unverified catch-all addresses | Unpredictable bounces on "valid" domains | Verify first; send to catch-alls in small, slow batches |
| Role-based addresses | Low engagement, random spam complaints | Remove info@, sales@, support@ from prospecting lists |
| Stale, unengaged contacts | Spam complaints outpace bounces; reputation sinks | Sunset policy: suppress after months of no engagement |
| Formatting junk from exports | Instant bounces on addresses that "looked fine" | Lowercase, trim, syntax-check before importing |
| Duplicates across merged lists | Same contact emailed twice; skewed stats | Dedupe on email after normalizing casing and whitespace |
Keep reading
- Excel Can't Handle 1M Rows: How to Dedupe a Massive Email List — the heavy-duty method when your list outgrows spreadsheets.
- What Is Data Enrichment? A Practical Guide to Better Lead Data (2026) — adding missing data is pointless until the list itself is clean.
- Lead Analyzer (free tool) — grade your prospect list's quality before you spend on outreach.