Every line item, in dollars.
A Resend-style email platform turns out to be eleven Cloudflare products wired together. Here is what each one does, what Cloudflare charges for it, and what your bill looks like at 10,000, 100,000 and a million emails a month — with the SaaS list prices next to it.
| CLOUDFLARE PRODUCT | WHAT IT DOES HERE | WHAT IT COSTS |
|---|---|---|
| Workers | The API itself: auth, validation, rate limits, template render, webhook fan-out | $5/mo · 10M req incl. then $0.30/M |
| Email Service (send) | Outbound delivery, DKIM signing, SPF/DMARC set up automatically | 3,000/mo incl. then $0.35/1k |
| Email Routing (receive) | Inbound catch-all into a Worker, 25 MB per message | Free |
| Queues | Throttling, retries, dead-letter queue for batches and broadcasts | $0.40 / M ops 1M free/mo |
| Durable Objects | Per-domain sender state, scheduling alarms, broadcast progress, mailbox threads | Included in Workers Paid then per req + duration |
| D1 | Contacts, audiences, segments, templates, message index | 25B reads/mo incl. $0.75/M writes over |
| KV | Suppression list and API-key cache — read on every single send | Included cents at this scale |
| R2 | Attachments, raw MIME archive, event exports — zero egress fees | $0.015/GB-mo no egress charge |
| Workflows | Automations: multi-day drips, branching, durable retries | Billed as Workers requests + CPU |
| Analytics Engine + Access | Event stream behind every chart; SSO in front of the dashboard | Included with Workers Paid |
Cloudflare Email Sending entered public beta in April 2026: it requires a Workers Paid plan ($5/month minimum), includes 3,000 emails per account per month, and charges $0.35 per 1,000 after that. Inbound Email Routing stays free. Rates shown are Cloudflare's list prices at time of writing — check their pricing pages before you budget.
What will you actually pay?
Drag to your monthly volume. MailySend runs in your own Cloudflare account, so your bill is Cloudflare's list prices. The others are published plan rates for the same volume.
100,000 emails/mo
Same product either way — same API, same logs, same analytics, same inbound. The backend is one line of configuration, and you can change it later. Amazon SES on its own is ~$0.10 per 1,000 plus your own infrastructure: no dashboard, no event timeline, no inbound, and CloudWatch for analytics. How providers work →
Three real shapes of bill
10,000 emails
- Workers Paid
- $5.00
- 7,000 emails @ $0.35/1k
- $2.45
- D1 · KV · R2 · Queues
- $0.00
- Self-hosted total
- $7.45
- Resend Pro
- $20.00
100,000 emails
- Workers Paid
- $5.00
- 97,000 emails @ $0.35/1k
- $33.95
- D1 writes, R2 25 GB, Queues
- ≈$1.20
- Self-hosted total
- ≈$40
- Resend Pro 100k
- $90.00
1,000,000 emails
- Workers Paid
- $5.00
- 997,000 emails @ $0.35/1k
- $348.95
- Storage, queues, analytics
- ≈$9
- Self-hosted total
- ≈$363
- Or route via SES provider
- ≈$115
Competitor figures are published list prices for one million transactional emails, gathered September 2026; volume discounts and annual commitments change them. Deliverability, not price, should still be your first filter — which is why every number here comes with the analytics to check it.
Keep the Worker warm
MIME parsing on a cold path is the most common CPU-time surprise. We batch parse and cache templates in KV.
Batch your D1 writes
One row per event gets expensive fast. Events land in Analytics Engine; D1 only holds state you query.
Lifecycle your R2 bucket
Attachments and raw MIME move to infrequent-access on your retention window automatically.
Set a budget alert
The deploy script sets a Cloudflare notification at 2× your expected spend, plus a hard send cap you control.
Run it yourself in about a minute.
One command provisions the whole stack in your account. MIT licensed, no key to ask us for, no bill from us at all.