Warmerly is a cheaper Resend alternative for apps that send password resets, receipts and notifications over a REST API: $15 a month for 50,000 emails against Resend's $20, and a 5,000 a month free plan against 3,000. The send request takes the same fields, so moving over is mostly a new URL and key. Resend is the better pick if you need SMTP, delivery webhooks, templates, attachments or an official SDK today; Warmerly doesn't have those yet.
await fetch("https://api.resend.com/emails", {await fetch("https://app.warmerly.com/api/v1/transactional/emails", {method: "POST",headers: {Authorization: `Bearer ${process.env.RESEND_API_KEY}`,Authorization: `Bearer ${process.env.WARMERLY_TX_KEY}`,"Content-Type": "application/json","Idempotency-Key": `reset-${user.id}`,},body: JSON.stringify({from: "Acme <no-reply@mail.acme.com>",to: user.email,subject: "Reset your password",html,tags: [{ name: "type", value: "reset" }],tags: { type: "reset" },}),});
Checked against both APIs' send endpoints. The response has an id on both sides; ours also returns a status.
Warmerly is cheaper at every volume Resend publishes a plan for. The free plan is larger too: 5,000 a month against 3,000. Overage is off unless you switch it on.
| Emails a month | Warmerly | Resend |
|---|---|---|
| 10,000 | $15Starter | $20Pro 50k |
| 50,000 | $15Starter | $20Pro 50k |
| 100,000 | $29Growth | $35Pro 100k |
| 500,000 | $279Scale 500k | $350Scale 500k |
List prices, monthly billing, USD: the cheapest published plan that includes that many emails, overage left out on both sides. Resend prices from resend.com as of September 2026; check their site for current rates. Shaded cells are the cheaper side.
What each one does today. Where Warmerly says "not yet", it means it: those are on the roadmap, not built.
| Feature | Warmerly | Resend |
|---|---|---|
| API shape | REST, JSON over HTTPS, bearer key, Idempotency-Key header | REST, JSON over HTTPS, bearer key, Idempotency-Key header |
| SMTP relay | Not yet (on the roadmap) | Yes (smtp.resend.com) |
| Delivery webhooks | Not yet. Read each email's delivery timeline from GET /emails/{id} | Yes: 5 endpoints on Pro, 10 on Scale |
| Templates | Not yet. You send your own HTML and text | Yes, sent by template id with variables |
| Dedicated IP | $29/mo on Scale plans | $30/mo add-on on Scale |
| Suppression list | Automatic on hard bounce and spam complaint, shared with Warmerly outreach | Automatic on hard bounce and spam complaint |
| Free tier | 5,000 a month (200 a day), no time limit, no card | 3,000 a month (100 a day) |
| Log retention | Content 30 days; the email record and its delivery events are kept | 30 days on Free; see resend.com for paid plans |
| SDKs | None. One HTTP request from any language | Official SDKs for Node.js, Python, PHP, Ruby, Go, Rust, Java, .NET and Elixir |
| Support | Email (support@warmerly.com), plus a 99.9% monthly uptime commitment with service credits | Ticket support; a dedicated Slack channel on Scale |
Honestly, in these cases we would stay with Resend.

Most of the work is DNS. The code change is small, but it is a change.
Use the same subdomain you send from on Resend, or a new one. Warmerly gives you three DKIM CNAMEs, an MX and SPF record on a bounce. subdomain, and a DMARC record. They are different values from Resend's, so publish them alongside the old ones until you switch.
A sending-only key (wm_tx_...) can send and nothing else, and can be pinned to one domain. Put it where RESEND_API_KEY lives today.
from, to, cc, bcc, reply_to, subject, html, text and headers keep their names, and the Idempotency-Key header works the same way. tags becomes a plain object instead of a list of name and value pairs. The response still has an id.
Attachments, scheduled_at, template, react and topic_id are not accepted. reply_to takes one address, not a list. If your app uses the Resend SDK, replace resend.emails.send() with a fetch call.
Send to yourself, check the timeline in the dashboard, then move production traffic. Remove Resend's DNS records once nothing sends through it.
The send request is close but not identical. from, to, cc, bcc, reply_to, subject, html, text, headers and the Idempotency-Key header work the same way, and the response carries an id. tags is an object rather than an array of name and value pairs, reply_to takes one address, and attachments, scheduling and templates are not supported. The Resend SDK cannot be pointed at Warmerly; use a plain HTTP request.
At list prices as of September 2026: $15 against $20 for 50,000 emails a month, $29 against $35 for 100,000, and $279 against $350 for 500,000. The free plan covers 5,000 emails a month against Resend's 3,000.
Not yet. Every email has a delivery timeline (accepted, delivered, deferred, bounced, complained) that you can read from GET /api/v1/transactional/emails/{id} or see in the dashboard. Webhooks that push those events to your app are on the roadmap.
Yes. Add the same domain or subdomain in Warmerly and publish the DKIM, bounce MX, SPF and DMARC records it gives you. None of them touch your domain's own inbound mail, and they can sit next to Resend's records while you test.
Amazon SES in the EU, with each workspace isolated in its own SES tenant. Warmerly never sends cold outreach or warmup through it, so another sender's bad list can't pause your mail.
Create a free account, verify a sending domain and send a test from the dashboard. 5,000 emails a month free, no card.