Your Newsletter List Is Rotting From the Inside
You spent months building a 50,000-subscriber newsletter. Your open rate was 35% last year. Now it's 18% and dropping. Your ESP is threatening to suspend your account because of "low engagement."
The problem isn't your subject lines. It's your list.
Email addresses decay continuously. People change jobs, abandon accounts, and typo their addresses at signup. Every dead address on your list drags down your deliverability, inflates your costs, and pushes your content toward the spam folder — even for your most engaged readers.
Clean your list today → MailValid: from $15/month, 100 free credits
Email list hygiene isn't a quarterly chore. It's a competitive advantage. This guide shows you how to automate list cleaning with MailValid's email verification API and the exact workflow top newsletter operators use to maintain high open rates.
Why Email List Hygiene Matters More Than Ever
In 2026, Gmail and Yahoo's sender requirements make list quality non-negotiable. ESPs now track: - Spam complaint rates (must stay under 0.1%) - Hard bounce rates (must stay under 2%) - Engagement rates (opens, clicks, replies) - List acquisition practices (double opt-in preferred)
Fail any of these thresholds and your entire domain gets throttled. Not just one campaign — everything you send.
The Hidden Costs of a Dirty List
| Problem | Impact |
|---|---|
| Dead addresses | Hard bounces, reputation damage |
| Disposable emails | Zero engagement, spam trap risk |
| Role-based addresses | Low opens, high complaints |
| Typos | Hard bounces immediately |
| Catch-all domains | Silent zero engagement |
A "free" 10,000-subscriber list with 30% invalid addresses costs you more in reputation damage than a clean 7,000-subscriber list ever would.
How Fast Do Email Lists Decay?
Decay rates vary by industry and acquisition source. Purchased lists and lead magnets tend to decay fastest; double opt-in lists retain best. As a rule of thumb, a list uncleaned for a year commonly has a meaningful share of dead addresses.
The Newsletter List Hygiene Workflow
Step 1: Verify at Signup (Real-Time)
Block bad addresses before they enter your database using MailValid's documented API:
async function validateSignup(email) {
const response = await fetch('https://mailvalid.io/api/v1/verify/single', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ email })
});
const { result } = await response.json();
if (!result.is_valid) return { allowed: false, reason: result.status_reason };
if (result.is_disposable) return { allowed: false, reason: 'Disposable emails not allowed' };
if (result.is_catch_all) return { allowed: true, warning: 'Catch-all domain, cannot confirm mailbox' };
if (result.is_role_based) return { allowed: true, warning: 'Role-based address detected' };
return { allowed: true };
}
Step 2: Bulk Clean Existing Lists (Monthly)
import requests
import csv
API_KEY = "your_mailvalid_api_key"
def clean_newsletter_list(input_file, output_file):
with open(input_file) as f, open(output_file, 'w', newline='') as out:
reader = csv.DictReader(f)
fieldnames = reader.fieldnames + ['status', 'status_reason']
writer = csv.DictWriter(out, fieldnames=fieldnames)
writer.writeheader()
kept = 0
removed = 0
for row in reader:
email = row['email']
resp = requests.post(
"https://mailvalid.io/api/v1/verify/single",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"email": email}
)
result = resp.json()["result"]
if result["is_valid"] and not result["is_disposable"] and not result["is_catch_all"]:
row['status'] = 'active'
row['status_reason'] = result["status_reason"]
kept += 1
else:
row['status'] = 'removed'
row['status_reason'] = result["status_reason"]
removed += 1
writer.writerow(row)
print(f"List cleaned: {kept} kept, {removed} removed")
clean_newsletter_list('subscribers.csv', 'subscribers_clean.csv')
For large lists, use the bulk verification endpoint (POST /api/v1/verify/bulk, up to 10,000 emails per request) instead of looping single calls, which is faster and processes asynchronously.
Step 3: Re-engagement Campaign for Dormant Subscribers
Before removing inactive subscribers, try to re-engage them:
- Segment subscribers who haven't opened in 90 days
- Send a "We miss you" campaign with a strong subject line
- Wait 7 days
- Remove non-responders who also fail verification
Step 4: Automated Quarterly Scrub
Set up a scheduled job to re-verify your entire list every 90 days using the same bulk-verification pattern above, then push the cleaned list back to your ESP.
MailValid Pricing for List Cleaning
MailValid pricing is credit-based and never expires:
| Plan | Monthly Price | Credits | Per-Email Cost |
|---|---|---|---|
| Free | $0 | 100 (one-time) | — |
| Starter | $15/mo | 10,000 | $0.0015 |
| Growth | $50/mo | 50,000 | $0.001 |
| Scale | $75/mo | 100,000+ | $0.00075 |
Most ESPs (Mailchimp, ConvertKit, Beehiiv) charge by subscriber count. A dirty list means you pay for dead addresses. Clean your list and you might drop to a lower pricing tier entirely.
Start cleaning from $15/month →
Engagement-Based List Segmentation
Verification tells you which addresses are technically valid. Engagement tells you which subscribers actually care. Combine both for maximum deliverability.
The Engagement-Verification Matrix
| Segment | Verification | Engagement | Action |
|---|---|---|---|
| VIP | Valid | High (opened in 30 days) | Priority content |
| Active | Valid | Medium (opened in 90 days) | Standard sequence |
| At-risk | Valid | Low (no open in 90 days) | Re-engagement campaign |
| Dormant | Valid | None (no open in 180 days) | Final win-back, then remove |
| Invalid | Invalid | N/A | Remove immediately |
| Catch-all | Catch-all | N/A | Remove or segment separately |
Common List Hygiene Mistakes
| Mistake | Why It Hurts | Fix |
|---|---|---|
| Never cleaning | List decay compounds yearly | Quarterly verification |
| Only removing hard bounces | Misses catch-alls and dormant | Engagement + verification combo |
| Buying lists to replace churn | Violates ESP policies, spam trap risk | Organic growth + verification |
| Ignoring role-based addresses | Low engagement, complaints | Flag or remove info@, sales@ |
| Cleaning but not segmenting | One-size-fits-all content | Engagement-based segments |
| Using regex-only validation | High false-positive rate | SMTP-level verification via API |
FAQ: Newsletter List Hygiene
How often should I clean my newsletter list?
Verify new subscribers in real-time. Re-verify your full list quarterly. Remove dormant subscribers after a failed re-engagement campaign.
Will cleaning my list hurt my subscriber count?
Yes — and that's the point. A smaller, engaged list outperforms a large, dead list on every metric that matters: opens, clicks, revenue, and deliverability.
Does MailValid integrate with Mailchimp/ConvertKit/Beehiiv?
MailValid is API-first: export your list as CSV, verify with the script above, and re-upload the cleaned file.
Can I try MailValid for free?
Every account gets 100 free verification credits, no credit card required. Start here →
Clean Lists, Better Results
Newsletter growth isn't about subscriber count — it's about engaged subscriber count. A verified, segmented, regularly cleaned list will always outperform a bloated list full of dead addresses.
Get 100 free credits and clean your list today →
Last Updated - 21 September 2026
MailValid Team
Email verification experts
Join teams that verify before they send
Stop letting bad emails hurt your deliverability
100 free credits. From $0.0008/email after. Credits never expire. No credit card required.