Email lists decay naturally. Industry data shows that email databases degrade by approximately 22–25% per year — addresses become invalid, people change jobs, domains expire, and inactive accounts turn into spam traps.
If you're not actively maintaining your list, you're losing deliverability every month. The solution isn't a one-time cleanup — it's a maintenance schedule that catches problems before they impact your campaigns.
This guide gives you the exact hygiene cadence used by top-performing marketing teams: daily, weekly, monthly, quarterly, and annual tasks.
Why List Hygiene Matters (The Numbers)
| Metric | Unmaintained List | Well-Maintained List |
|---|---|---|
| Bounce rate | 5–12% | <2% |
| Spam complaint rate | 0.3–0.5% | <0.1% |
| Inbox placement | 75–85% | 95–98% |
| Open rate | 12–16% | 20–28% |
| Sender reputation (Gmail) | Medium to Bad | High |
| Spam trap hits | 3–8 per 100K sends | 0 |
| Annual list decay | 22–25% | 8–12% |
A well-maintained list isn't just cleaner — it's more profitable. Higher deliverability means more of your emails reach real people, which means more opens, clicks, and conversions.
The Email List Hygiene Schedule
Daily Tasks (5 Minutes)
| Task | Why |
|---|---|
| Process bounces immediately | Remove hard bounces from your active list. Soft bounces: suppress after 3 consecutive soft bounces on the same address |
| Process unsubscribe requests | Process within 24 hours (CAN-SPAM allows 10 days, but fast processing protects reputation) |
| Process spam complaints | Remove the address immediately and add to suppression list — never email them again |
| Monitor bounce rate | If daily bounce rate exceeds 3%, stop sending and investigate |
Automation tip: Most ESPs handle bounces and unsubscribes automatically. Verify that your ESP is configured correctly — don't assume.
Weekly Tasks (15 Minutes)
| Task | Why |
|---|---|
| Review Google Postmaster Tools | Check domain reputation, spam rate, and authentication status. If reputation drops to "Medium," investigate immediately |
| Check blocklist status | Run your domain and sending IP through MXToolbox. A new listing can appear within hours |
| Review engagement by segment | Identify segments with dropping engagement — they may need cleaning |
| Verify new signups in bulk | If you collected 500+ new signups this week, run them through a verifier before adding to active campaigns |
Monthly Tasks (1 Hour)
| Task | Why |
|---|---|
| Full engagement audit | Segment by last open date. Move contacts with no opens in 3+ months to re-engagement queue |
| Re-engagement campaign | Send a 3-email series to inactive contacts (30–90 days). Remove those who still don't engage |
| Verify active list | Run a verification pass on your most-engaged segment (opened in last 90 days). Even engaged lists accumulate bad addresses |
| Check DMARC reports | Review DMARC aggregate reports for authentication failures. Add any unauthorized senders to SPF |
| Review email performance by domain | Check bounce rates per domain (Gmail, Outlook, Yahoo, corporate). If one domain shows elevated bounces, investigate |
Quarterly Tasks (2–3 Hours)
| Task | Why |
|---|---|
| Full list verification | Run your entire database through an email verifier. Remove invalids, disposables, and catch-alls with low confidence |
| Deep spam trap audit | Cross-reference your list with known spam trap databases. Remove any flagged addresses immediately |
| Inactive contact purge | Remove contacts with no engagement in 12+ months. They're a recycled spam trap risk |
| Sunset policy enforcement | Apply your sunset policy: contacts inactive for X months get removed (see below for defining X) |
| Send a "list cleaning" notification | Email active subscribers: "We're cleaning our list. Click to stay." This re-confirms engagement for deliverability algorithms |
| Review and update suppression list | Ensure your suppression list (people who unsubscribed or complained) is complete and applied to all sends |
Annual Tasks (Half Day)
| Task | Why |
|---|---|
| Complete database audit | Review all data sources, import processes, and collection methods |
| Consent record review | Verify consent is documented for all subscribers (GDPR/CCPA compliance) |
| Full infrastructure review | Check SPF, DKIM, DMARC, dedicated IPs, sending subdomains |
| Deliverability audit | Hire a deliverability consultant or run comprehensive inbox placement tests across all major providers |
| Update sunset policy | Review your inactivity thresholds based on the past year's data |
| List growth analysis | Calculate your list churn rate (unsubscribes + bounces / total list). If churn > growth, your acquisition strategy needs work |
Defining Your Sunset Policy
A "sunset policy" defines when you stop emailing an inactive contact. Here's a framework:
Engagement Level Action
─────────────────────────────────────────────
Opened in last 30 days → Active — send normally
Opened in 30–90 days → Monitor — consider lower frequency
No opens in 90–180 days → Re-engagement campaign
No opens in 6–12 months → Suppress from regular sends
No opens in 12+ months → Remove from database
Exception for B2B: B2B sales cycles are longer (6–18 months). You may extend the "suppress" window to 18 months, but never keep unengaged contacts beyond 24 months.
The Re-Engagement Campaign Template
Send this 3-email series over 10 days to contacts who haven't opened in 90+ days:
| Day | Subject Line | Content |
|---|---|---|
| 1 | Still interested? |
"We noticed you haven't opened our emails lately. Is our content still relevant to you? Here's what you've missed..." |
| 5 | Quick favor (or Is it time to part ways?) |
"No hard feelings if you want to unsubscribe. But if you want to stay, click below to confirm." |
| 10 | Last email from us |
"This is our last email unless you confirm you want to stay on our list. Click to keep receiving [value prop]." |
Expected recovery rate: 5–15% of inactive contacts re-engage. The rest get removed.
When to Verify Your List
Not every verification needs to be a full-list scan. Here's when to run verification:
| Trigger | What to Verify |
|---|---|
| New signups (real-time) | Verify each email at the point of collection |
| Before every campaign | Verify the campaign recipient list (if <50K contacts) |
| Before bulk imports | Verify any list you're importing from a CRM, event, or third party |
| After a data migration | Full verification after moving between ESPs or CRMs |
| Quarterly | Full database verification |
| After a deliverability incident | If you hit a blocklist or your reputation drops, verify immediately |
| If bounce rate exceeds 3% | Full verification of the campaign list before next send |
Automation: Set It and (Mostly) Forget It
The most effective list hygiene is automated. Here's what to automate:
| Process | Automation Method |
|---|---|
| Real-time signup verification | API call on form submission — block invalid/disposable signups |
| Bounce processing | ESP native bounce handling (hard bounces auto-suppressed) |
| Unsubscribe processing | ESP native or custom unsubscribe webhook |
| Spam complaint handling | ESP feedback loop (FBL) processing |
| Engagement tracking | ESP custom fields for "last opened date" and "last clicked date" |
| Re-engagement triggers | Automated workflow: no open in 90 days → enter re-engagement sequence |
| Sunset policy enforcement | Automated workflow: no open in 12 months → move to suppression list |
| Monthly verification reminder | Calendar reminder or automated job to run verification |
Common List Hygiene Mistakes
1. Cleaning Only When There's a Problem
Most teams only clean their list AFTER a deliverability crisis — when bounce rates spike or they land on a blocklist. By then, damage is already done.
Fix: Follow the schedule. Prevention is exponentially cheaper than recovery.
2. Keeping Inactive Contacts "Just in Case"
"I might want to email them someday." That someday never comes, and in the meantime, those inactives are becoming recycled spam traps and dragging down your engagement metrics.
Fix: Define your sunset policy and enforce it. A smaller, engaged list always outperforms a larger, dead one.
3. Not Verifying Before Importing
When you import a list from a trade show, CRM export, or partner — without verification — you're potentially importing spam traps, invalid addresses, and addresses that never consented.
Fix: Verify every imported list before it touches your sending infrastructure.
4. Relying Solely on ESP Bounce Handling
ESPs catch obvious hard bounces, but they don't catch:
- Spam traps (they look like valid addresses)
- Disposable emails (they accept mail initially)
- Catch-all domains with unknown validity
Fix: Supplement ESP handling with a dedicated email verification tool.
5. Not Having a Suppression List
Without a suppression list, you risk re-adding contacts who previously unsubscribed or complained. This is a CAN-SPAM violation and a fast track to spam complaints.
Fix: Maintain a master suppression list. Every send must check against it.
Key Takeaways
- Daily: Process bounces, unsubscribes, and spam complaints
- Weekly: Check reputation (Google Postmaster), blocklists, engagement trends
- Monthly: Re-engagement campaigns, verify active segment
- Quarterly: Full list verification, inactive purge, sunset policy enforcement
- Annually: Complete infrastructure and deliverability audit
- Automate everything you can — the best hygiene schedule is one that runs itself
- A smaller, engaged list generates more revenue than a large, unmaintained one
- Verify before importing — never trust a third-party list without verification