title: "How We Built a $0.01/1k Email Validation System (AWS SES + SNS)" description: "Stop overpaying for email validation. How we replaced expensive APIs with AWS SES events and Cloudflare Workers for 800x cost reduction." published: 2025-12-26 author: "Alexey Anshakov"
TL;DR
- Problem: Traditional email validation APIs (NeverBounce, ZeroBounce) cost $8-10 per 1,000 checks.
- Solution: Post-send validation using AWS SES and SNS Webhooks.
- Cost: ~$0.01 per 1,000 checks (800x savings).
- Tech: AWS SES -> SNS -> Cloudflare Workers (Hono) -> D1.
The "Middleman Tax"
If you're building an outreach tool or CRM, email validation is non-negotiable. Sending to dead emails kills your domain reputation.
But the pricing for standard APIs is insane:
- NeverBounce: $8.00 / 1k
- ZeroBounce: $10.00 / 1k
- MillionVerifier: $2.50 / 1k
If you validate 100k leads, that's $800-$1000. For a startup, that's a huge burn.
The Infrastructure Approach
We decided to bypass the wrappers and go straight to the source: AWS SES.
When you send an email via SES, it knows exactly what happened. Did it bounce? Was it a complaint? Was it delivered?
By capturing these events, we built our own validation engine.
The Stack
- AWS SES: Handles the actual delivery attempt.
- SNS (Simple Notification Service): Captures real-time events (Bounces, Complaints).
- Hono.js Worker: A lightweight webhook receiver on Cloudflare.
- Cloudflare D1: Stores the contact status and audit trail.
How It Works
- Send: We send an email via SES.
- Event: If it bounces, SES publishes an event to an SNS topic.
- Webhook: SNS sends a POST request to our Worker.
- Verification: We verify the AWS Signature (crucial security step!).
- Update: We mark the contact as
invalidin D1 immediately.
Pre-send vs. Post-send
Critics might say: "But validation APIs check BEFORE you send!"
True. If you are buying cold lists from shady sources, use a pre-send validator. You don't want to risk your IP.
But for SaaS apps, newsletters, and warm outreach, post-send validation is superior:
- 100% Accuracy: It's based on actual delivery attempts, not heuristics.
- Real-time: No waiting for batch processing.
- Zero Cost: You only pay for the SES usage (which is dirt cheap).
The Economics
- Old way: $1,000 for 100k checks.
- New way: ~$1.00 for 100k checks (SES costs).
That's a 1000x cost reduction.
Conclusion
Stop paying for wrappers around infrastructure you already have. If you're using AWS SES, Mailgun, or SendGrid, use their webhooks. It's the only way to get accurate data without the middleman tax.
