How often should I clean (verify) my email list?

Last updated May 19, 2026Deliverability

Email addresses decay at roughly 2 to 3% per month, even on opt-in lists. Job changes, account closures, domain changes, abandoned mailboxes all accumulate over time. The right verification cadence depends on how often you send and what kind of list you have.

Use caseVerification frequency
Daily marketing sends (1k+/day)Quarterly at minimum; monthly is better
Weekly newsletter (10k+ subscribers)Every 60–90 days
Monthly newsletter (any size)Every 60 days
Cold outreach campaignsVerify every list immediately before each campaign
Re-engagement campaignsVerify immediately before sending. These are the highest-risk sends
Transactional email (signup confirmations, receipts)Real-time at signup via API; no scheduled batch cleaning needed
Inactive lists (no sends in 6+ months)Always verify before resuming sending

Always verify in these specific situations

  • Before any major campaign to a list you have not sent to in 60+ days.
  • After importing from a third party (CRM migration, list acquisition, partner list, tradeshow scan).
  • Before re-engagement campaigns to dormant subscribers — these are the bounciest sends.
  • After a deliverability incident (bounce-rate spike, blacklist appearance, sudden drop in opens) — re-verify and restart from a smaller, cleaner segment.
  • Before switching ESPs. Onboarding cold means starting reputation from scratch; you want the cleanest possible list when that happens.

The real-time verification complement

Batch verification is a snapshot in time. Real-time verification at signup is continuous. Wire our single-verification API into your signup form and bad addresses get rejected at the moment of entry — disposable services, typos like gmial.com, syntactically invalid addresses, and obvious abusers. Your list stays clean between batch verifications without you having to schedule anything.

What "clean" actually means

After verification, the right post-clean state for an active marketing list:

  • 0% invalid (drop all).
  • 0% disposable (drop all).
  • 0% spamtrap (drop all).
  • 0% disabled (drop all).
  • <5% catch_all (acceptable but watch).
  • <2% unknown (the engine's own answer; credit refunded, so cost is zero).

Anything above these thresholds is signal to investigate where addresses are coming from.