If you verified your list six months ago, a large share of it is no longer safe to mail. In BounceZero's re-verification study of 826,000 addresses, 19.2% were still valid after more than 90 days. The question is not whether to re-verify, but how often and which segments come first.
This guide gives a cadence based on send frequency, source and deliverability risk, with the measured data behind it.
How fast email lists go stale (the measured data)
BounceZero re-verified 826,000 addresses and compared the result with the earlier check.
| Time since the last check | Still valid |
|---|---|
| 31 to 90 days | 44.9% |
| More than 90 days | 19.2% |
The rest of each row is invalid, catch-all, role or unknown. Unknown means the receiving server would not give a clear answer, not that the mailbox is dead. Treat unknown as its own segment: hold it out of cold volume, re-check after a week and use a second channel in the meantime.
The practical reading is not to wait 30 days. It is that a list verified before the last campaign has already started to move, and a quarterly sweep leaves most of a quarter's decay in place. The full email list decay study is the source for both rows.
Decay risk by list source
The measured decay study does not break down by source, so the table below is a risk ranking, not a set of measured rates. The cadence column is the operational rule.
| Source | Risk | Re-verify |
|---|---|---|
| Double opt-in newsletter | Lower | Before every send, at least monthly |
| Single opt-in newsletter | Higher | Before every send |
| CRM, engaged contacts | Medium | Monthly |
| CRM, stale 12+ months | High | Full sweep before any send |
| LinkedIn or Sales Navigator export | High | Before every send |
| Finder output (Hunter, Apollo, Clay and similar) | High: 10 to 25% of finder output does not verify | Before every send |
| Purchased B2B list | Highest: database exports ran 10 to 25% invalid in the measured studies | Sample test, then verify every row before the first send |
| Lead magnet or gated content | Medium to high | Before every send |
The unifying pattern: lists where the address was actively confirmed and recently used decay slowest. Lists built from scraped, purchased or one-time-collected data decay fastest, and that difference shows up in the first verification result.
The cadence framework
Three rules cover almost every sender.
1. Before every send. No list goes into a campaign unverified. This is the only rule that directly controls bounce rate.
2. At least monthly for active segments. A segment that is mailed regularly gets a full re-verification at least once a month, and again before any high-stakes send.
3. Event triggers override the calendar. Re-verify after any import, after a change of source, before any re-engagement campaign and before a CRM migration.
In practice: cold outreach verifies every send; newsletters verify monthly plus before every send; transactional streams still need a monthly sweep because the addresses change even when the sending pattern does not.
Copy-Pasteable Calendars by Use Case
Cold outreach (1K to 10K sends a week)
Day 0: verify the campaign list 24 hours before send.
Day 0: send, watch the bounce rate and pause above 2%.
Day +1: pull the bounce report, suppress hard bounces in every tool.
Weekly: re-verify any catch-all segment before the next batch.
SaaS newsletter (5K to 50K subscribers, weekly send)
Week 1: full list re-verification.
Week 1: remove invalid, hold catch-all and unknown out of the main send.
Every Monday: send to the verified segment only.
Monthly: full re-verify, including addresses added since the last pass.
Quarterly: a re-engagement attempt for subscribers inactive 90+ days, verified first.
E-commerce broadcast (50K to 500K subscribers, two to three sends a week)
Monthly: full re-verification of the active list.
Weekly: verify new signups before adding them to the broadcast segment.
Per send: watch the bounce rate and suppress hard bounces immediately.
Quarterly: a re-engagement attempt for inactive subscribers, verified first.
Transactional only
Monthly: a full pass over the active-user list.
Per signup: verify in real time.
Per send: suppress hard bounces from the report.
The Re-Engagement Decision
Subscribers inactive for 90+ days are a special case. They're not bouncing (yet) but they're not engaging either. Two paths:
Path 1: Re-engagement campaign
Send a 'we miss you' email asking them to confirm they still want to hear from you. a minority click yes. The rest get suppressed.
Pro: keeps some subscribers, signals to mailbox providers that you respect engagement.
Con: a re-engagement send to 10K inactive subscribers can spike your bounce/complaint rate temporarily.
Path 2: Silent suppression
Move inactive subscribers out of active sending lists without any send. Keep them in CRM for future re-engagement opportunities (purchase, support ticket, web visit).
Pro: zero risk to current sending reputation.
Con: lose the chance to recover some who were just busy.
Recommended hybrid: For B2C, run a re-engagement campaign once per quarter (path 1). For B2B, silent suppression (path 2) and re-engage only when you have something genuinely new to say.
What to Do With the Decay (the suppression list)
When you verify and find invalids, don't just delete them. Build a suppression list:
Why suppress, not delete:
- Same addresses can re-appear from different sources (CRM imports, form re-submissions)
- You need to permanently never-send to these to avoid re-triggering bounces
- Regulatory: some jurisdictions require keeping a 'do not contact' list for compliance audits
- Every send pipeline should cross-check sender list against suppression
- Re-imports from CRM should be auto-filtered against suppression
- Allow manual override for special cases (e.g., a customer who replied 'unsubscribe' but later signed up again with explicit consent)
How to structure:
``
Suppression table columns:
email | the address
reason | invalid_syntax / hard_bounce / spam_complaint / unsubscribed
date_added | when it landed on suppression
source_campaign | which campaign first triggered
permanent | true/false (manual review can flip back)
``
Integration:
Most ESPs support suppression lists natively (Mailchimp, SendGrid, Mailgun all have this). Use it.
The hidden decay: catch-all transitions
Catch-all is a property of the domain, not the address. A domain can be verifiable today and accept everything tomorrow, after a migration, a hosting change or a new administrator. When that happens, every address at the domain becomes uncertain at once.
The corpus shows how much is at stake: catch-all ran 2.3% of non-freemail addresses and 9.4% on business-domain-only lists. Catch-all is not a small edge case, and it never shows up as a bounce.
Detection is domain-level. Re-verify the domains that carry the most contacts, and treat any address on a catch-all domain as its own risk tier rather than as verified.
Cost of different cadences
Verification costs credits; decay costs deliverability. The comparison below uses a 50,000-contact newsletter mailed monthly and BounceZero's $3 per 1,000 rate (2,000 credits for $6).
| Cadence | Credits a year | Cost a year | What it leaves in place |
|---|---|---|---|
| Every send (monthly) | 600,000 | $1,800 | Very little; bounce risk stays near the floor |
| Quarterly | 200,000 | $600 | Most of a quarter's decay, including the first 90 days when loss is fastest |
| Annually | 50,000 | $150 | The whole curve, plus the reputation damage from the sends in between |
The difference between monthly and quarterly is $1,200 a year. A single campaign that trips the 2% bounce limit costs more than that in wasted send volume, lost inbox placement and remediation time. The measured decay data makes the choice easy: the first 90 days are where the loss happens, so the cadence has to be shorter than 90 days.
Common Cadence Mistakes
1. Verifying right after sending instead of right before.
Verifying post-send is a hygiene action; verifying pre-send is a prevention action. Always verify within 24h BEFORE the send.
2. Only verifying invalids without re-checking valids.
Valids decay too. Mailboxes get deleted. Companies migrate to catch-all. Re-verify the entire list, not just the ones that bounced.
3. Treating catch-all the same as verified.
Catch-all addresses re-verify as catch-all because that's a domain property. They didn't 'decay' - they were always uncertain. Treat them as a separate segment.
4. Letting suppression lists grow without quarterly review.
Some addresses on suppression were temporarily over-quota (mailbox full) - they may now be deliverable again. Re-verify aged suppression entries quarterly; un-suppress if newly clean.
5. Not verifying after CRM imports.
Importing from Salesforce / HubSpot / external sources reintroduces stale data. Verify all imports before merging into active sending lists.
Frequently Asked Questions
Is monthly verification overkill for a small newsletter?
For a small newsletter, monthly verification is cheap in absolute terms and is the minimum cadence for an active segment. The measured decay data shows most of the loss lands inside the first 90 days, so a quarterly sweep is too slow. Verify before every send and at least monthly.
How do I verify only new signups efficiently?
Two approaches: (1) Real-time verification in the signup form - verifies every new address as it enters your system. Best UX, slightly slower form submission. (2) Daily batch - collect new signups, verify in a batch overnight. Faster signup, but invalids enter your CRM temporarily. Most teams do real-time at signup + monthly full re-verify.
Should I verify before or after sending a campaign?
Before. Verifying after lets bounces happen, damaging reputation. Verify within 24h of send. The exception: post-send analytics - pull bounce reports after sending and update suppression list for future sends.
Does Google Postmaster reputation help me know when to re-verify?
Yes - it's a leading indicator. When Gmail Postmaster shows your sender reputation dropping from High > Medium, that's a sign list quality is degrading. Re-verify immediately. Don't wait for it to drop to Low - recovery takes 30-90 days from there.
Set Up Your Verification Cadence
100 free credits per month covers small lists indefinitely. Larger lists from $3 per 1,000 (2,000 credits for $6) with no expiration. Real-time API + bulk + webhook on the same key.
Start Free