How to Clean Your Email List Before a Campaign (Step-by-Step)
Most deliverability problems are list problems. A campaign that performs poorly, a spike in spam complaints, a sudden drop in inbox placement — trace most of these back to the quality of the list it was sent to.
Cleaning your email list before a campaign isn't a one-time remediation. It's a standard step in the send workflow, like checking your copy or configuring your tracking links. This guide walks through the full process, in the right order.
Why clean before every major send?
Email lists decay continuously. Industry data consistently shows 20–25% annual decay — which means that about 2% of your list becomes invalid every month. A list you built and verified six months ago has a meaningful proportion of bad addresses.
Beyond decay, each send carries a different risk profile. A re-engagement campaign to lapsed subscribers has higher bounce risk than a regular newsletter to active subscribers. A promotional send to a newly acquired list has different risks than a transactional announcement to customers.
Cleaning before each major campaign — or any campaign going to a segment that hasn't been mailed recently — catches these risks before they affect your sender reputation.
Step 1: Identify the segments being mailed
Before cleaning, know what you're cleaning. Pull the exact segments or lists that will receive this campaign:
- Is this your full active list, or a specific segment?
- When was each segment last mailed?
- Are there contacts from multiple sources (sign-up forms, imports, CRM exports)?
Lists that haven't been mailed in 90+ days should be treated with extra scrutiny — they've had time to accumulate more invalid addresses than actively mailed segments.
Step 2: Remove hard-bounced addresses from previous sends
Your first pass is housekeeping: make sure no previously hard-bounced addresses are still in your sending list.
Your ESP should auto-suppress hard bounces, but this doesn't always sync correctly across tools, especially if you:
- Export lists from your ESP and import them into another tool
- Manage lists in a CRM that's separate from your ESP
- Have multiple ESP accounts or sending domains
Check your ESP's suppression list and cross-reference it against your campaign list before proceeding.
Step 3: Remove unsubscribes and complaints
Same logic: make sure your unsubscribe list is up to date and applied to this campaign's segment. If someone unsubscribed from a previous send, they must not appear in this one.
Also remove any addresses that generated spam complaints. ESPs typically suppress these automatically, but validate the sync — especially for lists imported from external systems.
Step 4: Remove obviously risky address types
Before running a full verification, filter out categories you can identify by pattern or attribute:
Role-based addresses — info@, admin@, support@, sales@, noreply@, contact@, webmaster@. These don't belong to specific individuals, carry higher spam complaint risk, and rarely represent meaningful engagement. For marketing campaigns, remove them unless you have a specific reason to include them.
Known disposable domains — @mailinator.com, @guerrillamail.com, @tempmail.com, @yopmail.com, and similar services. Anyone who signed up with a disposable address had no intention of receiving your emails. Remove them.
Duplicate addresses — deduplicate your list so each address appears only once. Multiple entries for the same address can inflate bounce counts and inflate engagement metrics.
If your email tool or CRM handles these filters automatically, confirm they're enabled. If not, a quick Excel or Sheets filter can catch obvious patterns.
Step 5: Run email verification
This is the core step. Upload your cleaned list to an email verification service. The verification process checks each address through multiple layers:
- Syntax check — confirms the address is formatted correctly
- Domain check — confirms the domain exists and has MX records (a functioning mail server)
- SMTP check — connects to the mail server and asks whether the specific mailbox exists, without sending a message
The result for each address falls into one of these categories:
Valid — confirmed deliverable. Keep these.
Invalid — definitively undeliverable: the address doesn't exist, the domain has no mail server, or the server explicitly rejected it. Remove these before sending. Sending to known-invalid addresses is how bounce rates spike.
Catch-all — the domain is configured to accept all messages regardless of whether the mailbox exists. The verifier can't confirm individual mailbox validity. These require a judgment call (see the next step).
Unverifiable — a temporary error occurred (server timeout, rate limit, temporary block) and the address couldn't be checked. These can be retried, or treated with caution.
Step 6: Decide what to do with catch-all addresses
Catch-all addresses deserve their own decision. For a marketing campaign to your engaged subscriber list, the pragmatic approach is to include them — they're real domains with real people at them, and excluding 10% of your list to avoid an uncertain bounce risk may not be worth it.
For riskier scenarios — a cold list, a reactivation campaign, addresses from an uncertain source — suppressing catch-alls reduces your risk exposure at the cost of some reach.
The factors to consider:
- How recent are these addresses? (Older = higher risk)
- Where did they come from? (Opt-in = lower risk; purchased/scraped = higher risk)
- What's your current sender reputation? (If it's already marginal, reduce risk)
Step 7: Segment non-openers for a re-engagement check
If your list includes subscribers who haven't opened or clicked in 90–180 days, consider whether they should be in this campaign at all.
Non-openers are a deliverability risk for a different reason than invalid addresses: inbox providers increasingly use engagement signals (opens, clicks, replies) to determine inbox placement. Mailing large segments of chronically non-engaged subscribers suppresses your overall engagement rate, which can push future sends toward spam.
Options:
- Exclude long-term non-openers from this campaign entirely
- Run a re-engagement campaign first — a targeted send asking if they still want to hear from you, with a clear CTA to confirm. Remove those who don't respond.
- Send separately — mail the re-engagement segment separately so its performance doesn't drag down the main campaign's metrics
Step 8: Final size check and send readiness
After all cleaning steps, check your list size against what you started with. If the list has shrunk by more than expected, understand why before sending:
- More than 5% reduction from invalid addresses on an actively used list suggests the list has aged more than you realised
- More than 10% invalid addresses on any list is a significant quality problem — investigate the source
If everything looks clean, your list is ready to send.
Maintaining a clean list over time
A single pre-campaign clean addresses the immediate problem. Ongoing list hygiene prevents it from building up:
- Verify at the point of capture — use real-time email verification at signup forms so invalid addresses never enter your list
- Re-verify dormant lists — any list that hasn't been mailed in 6 months should be re-verified before use
- Suppress bounces and complaints immediately — don't let them accumulate
- Sunset non-openers on a schedule — quarterly or biannually, review engagement and suppress chronic non-openers
- Use double opt-in — the confirmation step filters out typos, fake addresses, and disposable emails at the source
Tools for each step
| Step | What you need | |---|---| | Bounce suppression | Your ESP's suppression list | | Unsubscribe removal | Your ESP or CRM | | Role-based / disposable filtering | Verification service (flags these categories) or manual filter | | Full email verification | Email verification service (bulk upload) | | Real-time verification at capture | Email verification API |
Summary
Cleaning a list before a campaign isn't optional for teams that care about deliverability. The steps are:
- Identify the segments being mailed
- Apply existing bounce and unsubscribe suppressions
- Remove role-based and disposable addresses
- Run bulk email verification and remove invalid addresses
- Decide on catch-all handling based on risk tolerance
- Review non-opener engagement before including them
The work takes less time than it sounds, and the alternative — sending to an unclean list and watching your sender reputation degrade — takes far longer to repair.
Ready to clean your email list?
Verify thousands of addresses in minutes. No subscription — pay only for what you use.