Skip to content
COMPARE & MIGRATE

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

MailySend compared with Resend, Amazon SES, SendGrid and Postmark. Prices are list prices for 100,000 emails per month as of September 2026.
MailySend
Resend
Amazon SES
SendGrid
Postmark
Model
MIT software, your account
SaaS
Cloud primitive
SaaS
SaaS
Cost at 100k/mo
~$40 to Cloudflare
$90
~$10 + your infra
~$60
~$120
Native Worker binding
Yes
HTTP only
SDK / HTTP
HTTP only
HTTP only
Automations / drips
Workflows
Yes
No
Marketing add-on
No
Live segmentation
Yes
Yes
No
Yes
No
Inbound + threading
Included, free
Limited
Build it
Parse only
Parse only
Inbox-placement analytics
Per provider
Delivery only
CloudWatch
Partial
Strong
Data location
Your account
Theirs
Your AWS
Theirs
Theirs
Who is on call
You
Them
AWS
Them
Them

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.

WHAT YOU GAIN
  • 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
WHAT YOU TAKE ON
  • 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.

MIGRATION GUIDE

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.

01
Deploy your instance

One click or one command. Nothing points at it yet.

02
Import your data

Audiences, contacts, suppression list and 30 days of history, over their API or a CSV.

03
Swap the client

Compat shim keeps your existing calls and react-email templates unchanged.

04
Send through Resend, at first

Your reputation and IPs do not move. Only the control plane does.

05
Shift traffic, watch placement

10% → 50% → 100% to Cloudflare or SES, with per-provider placement charts to justify each step.

MIGRATION
$ 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