Email Verification

Email List Hygiene: How to Clean and Maintain Your List

How to clean an email list and keep it clean: when to re-verify, removing hard bounces, suppression lists, role and catch-all handling, and a simple routine.

Skrap.ai Team7 min read
Share

Key takeaways

  • 1Contact data goes stale as people change jobs and companies change domains, so a list that verified clean months ago may not be clean today.
  • 2Remove hard bounces at once and for good: M3AAWG's sender guidance says not to retry an address the receiver says doesn't exist.
  • 3Keep one suppression list for bounces, unsubscribes and do-not-contact requests, and check every import against it.
  • 4Decide on role-based, disposable and catch-all addresses on purpose instead of mixing them into your main send.
  • 5Verify on import, before every campaign, and on a schedule for the lists you keep.

List hygiene is the routine work of keeping bad addresses out of your sends: dead mailboxes, people who've asked you to stop, and contacts that were never a good fit. It isn't glamorous, but it's the part of deliverability you control completely.

This guide covers when to clean a list, what to remove, how to handle the in-between cases, and a routine you can run without thinking about it. If you're starting from scratch, read how to build a B2B prospect list first.

Why email lists go bad

A B2B email address is tied to a job. When someone leaves, their employer usually shuts the mailbox down, and an address that verified as Valid last quarter starts to bounce. Companies also rebrand, merge and move to new domains. None of this shows up in your spreadsheet.

There's a second risk. Spamhaus describes "dead" spam traps: once-valid addresses that were turned off and later silently switched back on as traps. A list that's never cleaned is exactly the kind of list that finds them. Spamhaus also describes "seeded" traps, placed where scrapers will collect them, which is why lists bought or scraped from unknown sources carry extra risk no matter how recently they were cleaned.

Mailbox providers notice. Yahoo's sender best practices ask senders to monitor hard bounces, soft bounces and inactive recipients, and to remove invalid recipients promptly. M3AAWG's sender best practices add that receivers can penalize a sending IP for too many permanent failures, and that large volumes of hard bounces often point to an old or misapplied mailing list.

When to re-verify a list

There's no single correct interval, because lists age at different speeds. A workable rule: verify whenever you can't be sure what has happened to a list since its last check.

MomentWhy it matters
On importNew data from a form, event, export or teammate hasn't been checked by you yet
Before every campaignThe cheapest moment to catch addresses that died since the last send
After a gap in sendingThe longer a list sits unused, the more of it has changed
On a schedule for lists you keepCatches decay in CRM and nurture lists before it reaches a send
After a bounce spikeSomething in the source or segment has gone wrong; check before the next batch

With Skrap.ai, Invalid and Unknown results are free, so re-verifying an old list only costs credits for the addresses that come back Valid or Risky.

Step 1: Remove hard bounces for good

A hard bounce is a permanent failure: the mailbox or the domain doesn't exist. Remove the address right away and add it to your suppression list, so it can't sneak back in with a future import.

M3AAWG is direct about this: when the receiver says there's no one at that address, the message shouldn't be retried and the address should be suppressed from future mailings.

Soft bounces are temporary: a full mailbox, a server problem, throttling. Don't delete on the first one. M3AAWG suggests removing addresses that keep bouncing across consecutive campaigns, and gives at least two consecutive bounces over two weeks or more as a general rule.

Step 2: Keep a suppression list

A suppression list holds every address you must not email, whichever list it turns up on. It's what stops a removed contact from reappearing the next time someone uploads an old export. Put these on it:

  • Hard bounces, plus addresses that keep soft-bouncing.
  • Unsubscribes and opt-out replies. Yahoo asks bulk senders to honor unsubscribes within 2 days, and laws such as CAN-SPAM set their own deadlines.
  • Do-not-contact requests from anyone who asks, by any channel, not to hear from you again.
  • Spam complaints reported back by your sending tool.
  • Whole domains you've agreed not to contact, such as current customers, partners or competitors.

In Skrap.ai, the do-not-contact list lives in Lists. It holds both emails and domains and is shared across your team, so everyone works from the same list.

Step 3: Verify and sort by result

Run the list through an email verifier and split it by status instead of treating it as one pile.

StatusWhat to do with it
ValidMain send
RiskySeparate segment, smaller batches, sent after your Valid contacts
InvalidRemove and add to your suppression list
UnknownHold back and re-verify later; don't send yet

Skrap.ai's bulk upload shows the estimated credit cost before it processes a file, and results stay downloadable for 30 days. For what happens inside each check, see how to verify an email address.

Step 4: Decide on role, disposable and catch-all addresses

Role-based addresses

info@, sales@, hr@ and similar role-based addresses reach a team, not a person. They're real mailboxes, but cold messages to shared inboxes are easy to ignore or report. Review them: keep one when it's the right channel, such as a partnerships@ inbox for a partnership pitch, and drop the rest.

Disposable addresses

Temporary inbox addresses are built to expire. On a B2B list they usually come from a form sign-up by someone who didn't want follow-up. Remove them from outreach lists.

Catch-all (Risky) addresses

Addresses on catch-all domains can't be confirmed, so they come back Risky. Keep them in their own segment, send after your Valid contacts in small batches, and stop if bounces climb. Catch-all emails explained goes into the details.

Contacts who never respond

A valid address that has ignored a full sequence isn't a bounce risk, but it isn't helping you either. Yahoo's best practices list inactive recipients alongside bounces as something to monitor. When a sequence ends without a reply, stop mailing that contact from the same campaign, and only come back with a different, relevant reason after re-verifying the address.

Step 5: Feed every send back into the list

Hygiene doesn't end at the upload. After each campaign, pull the bounces, unsubscribes and complaints back into your suppression list, and compare bounce rate by segment and by source.

If one segment bounces noticeably more than the rest, the cause is usually where the data came from. Re-verify that segment before its next batch, and look at how it was collected. Our email bounce rate guide explains how to calculate and benchmark it.

A simple list hygiene routine

WhenWhat to do
Every importCheck against your suppression and do-not-contact lists, then verify; drop Invalid and set Unknown aside
Before every campaignRe-verify the send list, split Valid from Risky, and remove role and disposable addresses you don't want
After every campaignAdd hard bounces, unsubscribes and complaints to suppression; track repeat soft bounces
On a scheduleRe-verify the lists and CRM segments you keep, more often for lists you mail rarely

Write the routine down and make it the default for everyone who touches a list. The goal isn't a perfect list. It's never sending to the same bad address twice.

Frequently asked questions

How often should I clean my email list?

Verify on import, before every campaign, and on a regular schedule for lists you keep in your CRM. Lists you mail rarely need checking more often, because more of the list changes between sends. After any campaign, add bounces, unsubscribes and complaints to your suppression list straight away.

What's the difference between list cleaning and email verification?

Verification checks whether each address can receive mail. List cleaning is the wider routine: verifying, removing hard bounces, honoring unsubscribes and do-not-contact requests, deciding on role, disposable and catch-all addresses, and feeding each campaign's results back into the list.

Should I delete contacts who unsubscribe?

Remove them from your sending lists, but keep their address on a suppression list. If you delete the record entirely, you lose the proof that they opted out, and the next import can bring them back. In Skrap.ai, the do-not-contact list in Lists holds emails and domains for your whole team.

Should I remove role-based emails like info@ from my list?

Usually, for cold outreach. Role addresses reach a shared inbox rather than one decision-maker, and unsolicited messages there are easy to ignore or report. Keep a role address only when it's genuinely the right channel for your message, such as a partnerships inbox for a partnership pitch.

What should I do with Unknown verification results?

Don't send to them yet and don't delete them. Unknown means the mail server didn't give a usable answer, often because of a timeout or greylisting. Set them aside and re-verify later. In Skrap.ai, Unknown results don't cost credits, so re-checking them is free.

Skrap.ai Team

The people building Skrap.ai's verifier, finder and lead search. Written from what we see in real lists.

Share

Your Next Customer Is JustOne Search Away

No credit card required100 one-time free credits