A self-hosted Resend alternative that sends and receives
Deployed into your own Cloudflare account with no VPS: send, receive, reply and forward over HTTP, get a signed webhook for every inbound message, and open the same mailboxes in webmail.
Facts checked
The short answer
Choose Resend if you want a hosted sending API with SDKs, a free tier of 3,000 emails a month and nothing to deploy. Resend counts received mail toward the sending quota and includes 10 domains and 3 receiving inboxes on Pro; MarkRelay receives for free and charges nothing per domain or mailbox. Choose MarkRelay when the API should live in your own Cloudflare account, on Workers with no server: it sends through Cloudflare Email Sending, receives through Email Routing into real mailboxes, replies and forwards over HTTP, signs every inbound webhook with HMAC-SHA256, and keeps every message in your own D1 and R2. Among the free self-hosted projects, EmailFlare and MailySend also run on Cloudflare (MailySend copies Resend's API); useSend and Plunk run on your own server with Docker.
Side by side
| Feature | MarkRelayLicense from $99/yr | ResendHosted | EmailFlareMIT | MailySendMIT | useSendAGPL-3.0 | PlunkAGPL-3.0 |
|---|---|---|---|---|---|---|
| Where it runs | Your Cloudflare account | Resend's cloud | Cloudflare Workers or Docker | Your Cloudflare account | Your server (Docker) | Your server (Docker) |
| Server to maintain | None | None | None on Workers | None | Yes | Yes |
| Send over HTTP | Yes | Yes | Yes | Yes | Yes | Yes |
| Receive email | Yes | Yes | Separate inbox service | Yes | On its roadmap | Yes |
| Mailboxes people open in webmail | Yes | — | Team inbox | Mailboxes in the dashboard | No | — |
| Reply and forward endpoints | Yes | — | — | — | — | — |
| Signed webhooks for inbound mail | HMAC-SHA256 | Yes | — | HMAC-signed | — | — |
| Keys limited to chosen mailboxes | Yes | — | — | — | — | — |
| Resend-compatible API | No | — | — | Yes | — | — |
| Broadcasts with unsubscribe | Yes | Marketing plans, priced per contact | Lists with one-click unsubscribe | Yes | — | Yes |
| Sends through | Cloudflare Email Sending | Resend | Cloudflare Email Sending | Cloudflare, Amazon SES, Resend or SMTP | Amazon SES | — |
| Needs | Domain on Cloudflare DNS; Workers Paid to send | Any DNS host | Domain on Cloudflare DNS | Domain on Cloudflare DNS | A server and an AWS account | A server |
| Price | $99/yr or $249 once, plus Cloudflare | Free 3,000/mo, then from $20/mo | Free | Free | Free | Free |
Where it runs
- MarkRelay
- Your Cloudflare account
- Resend
- Resend's cloud
- EmailFlare
- Cloudflare Workers or Docker
- MailySend
- Your Cloudflare account
- useSend
- Your server (Docker)
- Plunk
- Your server (Docker)
Server to maintain
- MarkRelay
- None
- Resend
- None
- EmailFlare
- None on Workers
- MailySend
- None
- useSend
- Yes
- Plunk
- Yes
Send over HTTP
- MarkRelay
- Yes
- Resend
- Yes
- EmailFlare
- Yes
- MailySend
- Yes
- useSend
- Yes
- Plunk
- Yes
Receive email
- MarkRelay
- Yes
- Resend
- Yes
- EmailFlare
- Separate inbox service
- MailySend
- Yes
- useSend
- On its roadmap
- Plunk
- Yes
Mailboxes people open in webmail
- MarkRelay
- Yes
- Resend
- —
- EmailFlare
- Team inbox
- MailySend
- Mailboxes in the dashboard
- useSend
- No
- Plunk
- —
Reply and forward endpoints
- MarkRelay
- Yes
- Resend
- —
- EmailFlare
- —
- MailySend
- —
- useSend
- —
- Plunk
- —
Signed webhooks for inbound mail
- MarkRelay
- HMAC-SHA256
- Resend
- Yes
- EmailFlare
- —
- MailySend
- HMAC-signed
- useSend
- —
- Plunk
- —
Keys limited to chosen mailboxes
- MarkRelay
- Yes
- Resend
- —
- EmailFlare
- —
- MailySend
- —
- useSend
- —
- Plunk
- —
Resend-compatible API
- MarkRelay
- No
- Resend
- —
- EmailFlare
- —
- MailySend
- Yes
- useSend
- —
- Plunk
- —
Broadcasts with unsubscribe
- MarkRelay
- Yes
- Resend
- Marketing plans, priced per contact
- EmailFlare
- Lists with one-click unsubscribe
- MailySend
- Yes
- useSend
- —
- Plunk
- Yes
Sends through
- MarkRelay
- Cloudflare Email Sending
- Resend
- Resend
- EmailFlare
- Cloudflare Email Sending
- MailySend
- Cloudflare, Amazon SES, Resend or SMTP
- useSend
- Amazon SES
- Plunk
- —
Needs
- MarkRelay
- Domain on Cloudflare DNS; Workers Paid to send
- Resend
- Any DNS host
- EmailFlare
- Domain on Cloudflare DNS
- MailySend
- Domain on Cloudflare DNS
- useSend
- A server and an AWS account
- Plunk
- A server
Price
- MarkRelay
- $99/yr or $249 once, plus Cloudflare
- Resend
- Free 3,000/mo, then from $20/mo
- EmailFlare
- Free
- MailySend
- Free
- useSend
- Free
- Plunk
- Free
From resend.com/pricing and each project's README on GitHub. “—” means the page or README does not mention it.
Which one fits you
Choose Resend if
- You want a hosted API with SDKs and nothing to deploy.
- You send mostly transactional mail and are not on Cloudflare.
Choose a free self-hosted project if
- MailySend: you want Resend's exact API shape on Cloudflare.
- EmailFlare: you mainly need a sending API with templates.
- useSend or Plunk: you already run servers and use Amazon SES.
Choose MarkRelay if
- Your app needs to receive mail as well as send it, with no server.
- You send from many domains or receive into many inboxes, and that should not raise the bill.
- People should read and answer the same mailboxes in webmail.
- Each app or agent should get a key limited to its own mailboxes.
- You want updates and email support rather than maintaining a fork.
What email costs
| Example | ResendPro from $20/mo; Marketing $40/mo for 5,000 contacts | MarkRelayLicense $8.25/mo ($99/yr) + Cloudflare | You savePer month |
|---|---|---|---|
| 10,000 emails sent a month | $20Pro | $15.70$8.25 license + $5 Workers Paid + $2.45 sending | $4.3021% less |
| 10,000 sent a month from 15 domains | $40Pro + domain add-on | $15.70$8.25 license + $5 Workers Paid + $2.45 sending | $24.3060% less |
| 10,000 sent, 10 inboxes receiving mail | $27Pro + 7 extra inboxes | $15.70$8.25 license + $5 Workers Paid + $2.45 sending | $11.3041% less |
| 20,000 sent and 40,000 received a month | $3560,000 emails counted | $19.20$8.25 license + $5 Workers Paid + $5.95 sending | $15.8045% less |
| 40,000 sent and 20,000 received a month | $3560,000 emails counted | $26.20$8.25 license + $5 Workers Paid + $12.95 sending | $8.8025% less |
| 10,000 sent, plus a weekly newsletter to 5,000 contacts | $60Pro + Marketing plan | $23.28$8.25 license + $5 Workers Paid + $10.03 sending | $36.7261% less |
10,000 emails sent a month
Resend
MarkRelay
10,000 sent a month from 15 domains
Resend
MarkRelay
10,000 sent, 10 inboxes receiving mail
Resend
MarkRelay
20,000 sent and 40,000 received a month
Resend
MarkRelay
40,000 sent and 20,000 received a month
Resend
MarkRelay
10,000 sent, plus a weekly newsletter to 5,000 contacts
Resend
MarkRelay
MarkRelay: the Annual license ($99/year) spread over 12 months, $8.25 a month whatever the volume, plus the Cloudflare bill: Workers Paid is $5/month with 3,000 sent emails included, then $0.35 per 1,000, and receiving is free. With Lifetime ($249 once), later years cost only the Cloudflare bill. A weekly issue is about 4.3 sends per contact a month. Resend: the cheapest transactional plan that covers the volume (Pro is $20/month for 50,000 emails, $35 for 100,000); received emails count toward that quota; Pro includes 10 domains (then $20/month per 100) and 3 receiving inboxes (then $1 per inbox a month); broadcasts are priced by contacts on a separate Marketing plan. MarkRelay charges nothing per domain or mailbox.
How mail flows through your Cloudflare account
Cloudflare receives and sends. MarkRelay is the mailbox in between, running as your own Worker.
Receive
- Senderwrites to support@yourdomain.com
- Email RoutingCloudflare, free on any plan
- MarkRelay Workerfiles it in the mailbox
- Your D1 + R2messages and attachments
Reply
- Webmail or APIa teammate, an app or an agent
- MarkRelay Workerchecks mailbox access
- Email SendingCloudflare, in Workers Paid
- Recipientsees support@yourdomain.com
Common questions
Can MarkRelay replace Resend for transactional email?
Yes. POST /emails/send takes from, to, cc, bcc, subject, one text, HTML or Markdown body, and attachments uploaded with POST /attachments, up to 50 recipients and 5 MiB per message, and sends through Cloudflare Email Sending from your own domain. There are no idempotency keys, so do not retry a send blindly.
Is MarkRelay cheaper than Resend?
For sending alone at 10,000 emails a month, MarkRelay comes to about $15.70 a month (the license spread over the year plus Cloudflare) against $20 on Resend Pro. The gap widens with received mail, which Resend counts toward its quota: sending 20,000 and receiving 40,000 a month is $35 on Resend and about $19.20 on MarkRelay. More than 10 domains or 3 receiving inboxes add to Resend's price, and newsletters need its separate Marketing plan.
Is the API compatible with Resend's SDK?
No. MarkRelay has its own small HTTP API, described by an OpenAPI 3.1 document on every deployment, so moving over means changing your send call. MailySend is the open-source project that mirrors Resend's API.
Can I receive email and get it as a webhook?
Yes. Mail to your domain arrives through Cloudflare Email Routing into a MarkRelay mailbox, and each new message triggers an email.received webhook signed with HMAC-SHA256, with the full message, headers and attachment list in the payload. You can also list, read, reply to and forward messages over the API.
Do I need a VPS or a server?
No. MarkRelay runs on Cloudflare Workers, D1, R2 and Queues in your own account and installs with a Deploy to Cloudflare button. There is no server, container or database to patch.
What does it need from Cloudflare?
A domain on Cloudflare DNS (the Free plan works; you keep your registrar), Email Routing to receive, which is free, and Workers Paid to send: $5/month with 3,000 emails included, then $0.35 per 1,000.
Can I send newsletters too?
Yes, with Broadcasts: up to 100,000 recipients each, one-click unsubscribe headers (RFC 8058) and an automatic suppression list. You are responsible for consent and for following CAN-SPAM, GDPR and Cloudflare's Email Service terms.
Keep reading
Own your email stack today
Buy MarkRelay once and run it in your Cloudflare account. MarkRelay adds no per-message or per-seat charge; Cloudflare usage and service limits remain separate.

