Honest comparisons. Including where we lose.
MailySend is Resend’s API shape as software you run on Cloudflare; the others are services you rent. That difference decides most of these rows — and it doesn’t always fall our way.
Feature matrix
vs Resend
Resend set the bar for developer experience in email, and we copied its API shape on purpose. It has also kept shipping: broadcasts, automations, contact segments and A/B tests are all in the product today, so any comparison that still calls it transactional-only is out of date.
Resend has grown into a capable marketing product. What it still can’t be is yours.
MailySend is that same surface as MIT-licensed software running in your own Cloudflare account, at Cloudflare’s prices, with the contacts, events and raw MIME sitting in your D1 and R2 under a retention window you set. You trade a managed service for ownership — and you can keep Resend as the wire while you decide.
Pick Resend if you want someone else on call and never want to think about a Worker.
- The source, under MIT, running in your Cloudflare account
- A native Worker binding instead of an HTTP hop
- Inbox placement per provider and parsed DMARC reports
- Free inbound with per-mailbox threading, and agent/MCP mailboxes
- Retention, data region and deletion you configure
- Roughly half the cost at 100k/month
- You own the deploy, the upgrades and the pager
- Cloudflare Email Sending is still a public beta
- No support contract to escalate to
vs Amazon SES
SES is the cheapest wire in the industry at about $0.10 per thousand, and it gives you almost nothing else: no dashboard worth using, no templates workflow, no contacts, no broadcasts, no placement analytics. Teams end up building a small internal product around it.
So don’t choose. MailySend treats SES as a provider: keep this API, these logs, these analytics, and send over SES for the price. One config line →
vs SendGrid
The most feature-complete of the incumbents and the most tiring to use: a large console, plan-gated features, and shared IP pools you don’t control. Migrations usually start after a deliverability incident nobody could explain.
We keep the surface small and put every event in front of you. Pick SendGrid if you need one vendor for email, SMS and a marketing team with no engineers.
vs Postmark
The gold standard for pure transactional deliverability, with the price to match (around $1,206 per million). Their separate streams and reputation discipline are genuinely excellent.
Pick Postmark if a delayed password reset is a business incident and you’d rather pay than operate. We’re the better fit when you also need marketing, inbound and your own data.
vs Mailgun
Strong routing and validation APIs, a dated console, and log retention that costs extra the moment you need it. Inbound routing is its best feature — and it’s the one thing Cloudflare gives away free.
Pick Mailgun if you want validation and routing as managed services with a support line attached.
Move in an afternoon. Roll back in a minute.
Because the API shape matches Resend’s and Resend can stay your sending provider, you can migrate without a risky flag day. Five steps, each independently reversible.
One click or one command. Nothing points at it yet.
Audiences, contacts, suppression list and 30 days of history, over their API or a CSV.
Compat shim keeps your existing calls and react-email templates unchanged.
Your reputation and IPs do not move. Only the control plane does.
10% → 50% → 100% to Cloudflare or SES, with per-provider placement charts to justify each step.
$ npx mailysend import resend --key re_xxx --history 30d✓ 3 audiences · 28,700 contacts · 1,412 suppressions · 412k events$ npx mailysend domains set acme.dev --provider resend✓ control plane switched · wire unchanged$ npx mailysend traffic acme.dev --cloudflare 10%✓ 10% via cloudflare · placement dashboard live$ npx mailysend rollback✓ back to 100% resend · 1.2s