Email List Hygiene: The Metrics That Decide Whether You Stay Out of Spam
Hard bounces, complaints, engagement and spam traps: the four numbers behind list hygiene, the thresholds to act on, and a schedule that keeps a list from becoming a liability.

Email List Hygiene: The Metrics That Decide Whether You Stay Out of Spam
A list is not an asset you acquire once. It decays. People change jobs, abandon addresses, let a mailbox fill up and get deleted, and mark one message as spam when they meant to hit delete. Left alone, a healthy list loses roughly a fifth to a third of its addresses every year — and every one of those dead or hostile addresses keeps costing you until you remove it.
List hygiene is the routine of measuring that decay and acting on it. Not "cleaning the list occasionally", but a set of metrics you look at on a schedule, each with a threshold and a specific action. This guide covers the four numbers that matter, how to read them, and the schedule that keeps a list from quietly becoming a liability.
The Four Numbers That Matter
Every hygiene decision reduces to one of these:
| Metric | What it measures | Healthy | Act when |
|---|---|---|---|
| Hard bounce rate | Addresses that will never accept mail again | Under 2% | Above 2%, or any single send above 5% |
| Complaint rate | Recipients pressing "report spam" | Under 0.1% | Above 0.1%, stop and investigate |
| Engagement | Opens and clicks over a recent window | Stable or rising | Falling opens with stable delivery |
| Spam trap hits | Mail sent to addresses that never opted in | Zero | Any hit, at all |
Hard bounces and complaints are the two that receivers publish thresholds for, and they are the two that get you blocked. Engagement and trap hits are leading indicators: they move before the hard metrics do, which is why they belong on the same dashboard.
Hard Bounces: Remove Them Immediately
A hard bounce (SMTP 5xx at delivery, typically 550) means the address does not exist or will not accept mail. There is no future in which retrying helps. Remove the address on the first occurrence and suppress it permanently.
Two habits make this reliable:
Process bounces continuously, not in a monthly export. A provider's webhook delivers email.bounced events as they happen. Handle them in the receiving service, add the address to a suppression list, and never query it again at send time. A monthly CSV reconciliation means every address bounces dozens of times before you notice.
Distinguish hard from soft before you act. A soft bounce (4xx, mailbox full, greylisting) is temporary. Removing on the first soft bounce throws away good subscribers; ignoring them forever keeps a growing pile of dead weight. The workable rule: count consecutive soft bounces per address, remove after three to five over a two-week window, and reset the counter on any successful delivery.
The suppression list guide covers the mechanics of permanent suppression, and the bounce handling guide covers classification in more depth.
Complaints: The Signal That Actually Gets You Filtered
A complaint is a recipient marking your mail as spam. Providers publish the number to each other through feedback loops, and they weight it heavily — far more heavily than a bounce. A 0.1% complaint rate sounds tiny, but on a list of 100,000 that is 100 people actively telling their provider your mail is unwanted.
The arithmetic matters because complaints are measured per send, and a single bad segment can blow the average. If 40 of the 2,000 people in a re-engagement campaign complain, that send has a 2% complaint rate even if the month's overall rate is 0.05%. Some providers apply the threshold per campaign for exactly this reason.
What to do when complaints rise:
- Find the segment. Compare complaint rate by list source, signup date, and last-engagement date. The problem is almost always a specific cohort — often the oldest or the one acquired from a third party.
- Check the unsubscribe path. A missing or broken unsubscribe link turns a clean opt-out into a complaint. Every message needs a visible unsubscribe and a working
List-Unsubscribeheader. - Check frequency. If complaints rise without a change in content, you are probably sending more often than people expected when they signed up.
- Remove repeat complainers. Someone who complains twice will complain again. Suppress them.
Engagement: Your Early Warning System
Engagement is the metric that tells you a problem is coming before bounce and complaint rates move. If delivery is stable but opens are falling, your mail is landing in spam folders rather than inboxes — recipients are not less interested, they simply are not seeing it.
Use opens with caution. Apple's Mail Privacy Protection and similar features pre-fetch images, which inflates open rates and makes them unreliable as an absolute measure. Treat opens as a trend, not a fact. Clicks are harder to fake and are a better signal when you have enough volume to make them statistically meaningful.
Segment by recency of engagement, and use those segments to drive sending:
| Segment | Definition | What to do |
|---|---|---|
| Active | Opened or clicked in 30 days | Send everything |
| Warm | Opened or clicked in 90 days | Send most things |
| Cooling | Opened or clicked in 180 days | Send less; watch the rate |
| Dormant | No engagement in 180 days | One re-engagement attempt, then remove |
Spam Traps: Zero Tolerance
A spam trap is an address that never opted in and is monitored to catch senders who mail addresses without permission. Hitting one is not a statistical event — it is evidence. Trap operators publish their lists, and providers use trap hits as a strong signal that a sender is not permission-based.
Traps get onto lists in predictable ways: purchased lists, scraped addresses, a signup form with no confirmation step, and — most commonly — old addresses that were recycled into traps after the original owner abandoned them. That last path means an unmaintained list will eventually hit traps even if every address on it opted in years ago.
The response is the same in every case: find the source, remove the entire cohort it came from, and stop using that source. Do not simply remove the individual address; if one trap came from a source, others did too.
A Hygiene Schedule
Hygiene works when it is routine rather than a reaction to a deliverability crisis:
| Cadence | Task |
|---|---|
| Every send | Suppress known hard bounces and complainers before sending |
| Daily | Process bounce and complaint webhooks; update suppression |
| Weekly | Review complaint rate, bounce rate and deferrals per stream |
| Monthly | Move dormant addresses into a re-engagement segment; remove non-responders after one attempt |
| Quarterly | Audit list sources; check that every form uses double opt-in; review trap exposure |
The monthly step is the one teams skip. A re-engagement campaign is not just a marketing tactic — it is the last honest test of whether an address still wants your mail. Send one clear message, give it two weeks, and remove everyone who did not respond. Keeping non-responders "just in case" is the same as keeping the bounces.
Re-engagement Before Removal
Removing people feels like losing subscribers. In practice you are removing addresses that are already costing you deliverability, and the ones who do respond are the ones worth keeping.
A workable re-engagement message does three things: it states plainly that you will stop emailing if they do not respond, it offers a single obvious action (a click, a preference update, a one-click "keep me subscribed"), and it does not try to sell anything. Measure the result by clicks, not opens, and set the window before you send — two weeks is standard.
Anyone who does not respond goes on the suppression list. Anyone who responds moves back to the active segment. There is no third outcome.
Measure Per Stream, Not Per Account
A single dashboard number hides the problem. Transactional mail usually has near-zero complaints and high engagement; marketing mail carries almost all the risk. Averaging them produces a rate that looks healthy while one stream is failing.
Break every metric down by sending subdomain, by campaign type, and by list source. If transactional and marketing mail share a domain, separate them first — the subdomain setup guide explains why sharing a reputation makes the numbers unreadable.
What Good Looks Like
A healthy list, measured over a month:
- Hard bounce rate under 1%
- Complaint rate under 0.05%
- Deferrals rare and falling
- Open rate stable, clicks stable or rising
- No trap hits
- Every address has a recorded signup source and date
If you cannot produce the last line, start there. A list without provenance cannot be cleaned intelligently, because you cannot tell which cohort is producing the bounces and complaints. Add source tracking to every form before doing anything else, then give it a quarter — the segments will tell you where the damage is.