Emlet
← Back to blog

Deliverability

Email List Hygiene: When and How to Actually Clean a Stale List

Aarya, Founder of Emlet·October 8, 2026·6 min read
A person sweeping a kitchen floor with a broom

"Clean your list" gets said often enough that it's easy to nod along without a clear picture of what actually counts as dirty. A bounce isn't one thing, and a quiet subscriber isn't automatically a dead one. The mechanics matter more than the general advice.

Hard bounces and soft bounces are not the same problem

A hard bounce is a permanent failure, the address doesn't exist, the domain is gone, there's nothing to retry. Every reputable ESP suppresses these automatically after one occurrence, and it's worth actually confirming that setting rather than assuming it. A soft bounce is temporary: a full mailbox, a server briefly down, a message too large. The instinct is to treat soft bounces as harmless since they're labeled temporary, but an address that soft-bounces on every single send for months isn't experiencing a string of coincidental outages, it's functionally dead and should eventually be treated like a hard bounce. A reasonable rule: suppress after three or four consecutive soft bounces rather than letting them accumulate indefinitely.

The quieter problem: addresses that work but never engage

Bounces are the visible problem. The bigger one is usually invisible: addresses that accept every send without complaint and never open or click anything. They don't show up as an error anywhere, which is exactly why they're easy to ignore, and exactly why they're doing real damage. Inbox providers weigh aggregate engagement heavily when deciding where your mail lands, so a list padded with permanently inactive addresses drags down your engagement rate for everyone, including the people who genuinely want to hear from you. A smaller, more engaged list reliably outperforms a larger, stagnant one on the metric that actually matters: whether your mail reaches the inbox at all.

Hands sorting through papers in a binder on a desk
Hygiene is sorting, not deleting on sight, most of the work is figuring out which bucket an address actually belongs in.

Use clicks, not opens, to judge who's actually inactive

Apple Mail Privacy Protection pre-loads tracking pixels for a large share of opens regardless of whether a human ever looked at the message, which means open rate alone isn't a trustworthy signal for who's actually engaged. Clicks don't have that problem, a recorded click means a real person did something. When deciding who counts as dormant for cleaning purposes, lean on click activity (or site visits, purchases, any real action) over opens, or you risk suppressing people who were engaged the entire time and just never showed up correctly in an inflated open metric.

A cadence that actually gets followed

  • Immediate: hard bounces auto-suppress. Confirm this is actually configured in your ESP rather than assumed. It usually is by default, but it's worth one actual check.
  • Ongoing: soft bounces suppress after 3 to 4 consecutive failures. Most ESPs can automate this threshold directly, so it doesn't require manual review per address.
  • Quarterly, or before any campaign where deliverability really matters: segment by click-based engagement. Pull the genuinely dormant segment (no clicks across a stretch that's meaningfully longer than your normal send cadence) and send one real win-back attempt before removing anyone.
  • Suppress what doesn't respond to the win-back, not before it. The cleaning happens after the attempt, not instead of it, removing someone who simply hasn't had a reason to click yet is a different mistake than keeping someone who's been silent for two years.

That last point is worth being explicit about: the right dormancy threshold scales with how often you actually send. Ninety days of silence means something different to a list that gets emailed weekly than to one that gets emailed monthly. Borrowing a fixed number from a guide written for someone else's sending frequency is how a healthy subscriber gets mistaken for a stale one.