The short answer
- Start with the mail that makes the product work: account verification, password resets, receipts and notifications. Compare monthly volume, the busiest day, delivery events and suppression handling before the send price. recipe
- Resend Free fits low-volume sending within its daily and monthly quotas. Count recipients and received messages too, and leave room for launch-day bursts rather than judging fit from a monthly average. resend.com
- SendGrid's free option is a 60-day trial, not a free plan. twilio.com
- Amazon SES is a candidate when volume makes its usage pricing attractive and your team can own production-access approval, event handling and recipient hygiene. Keep the existing route until the new account is actually ready to send. docs.aws.amazon.com
Four ways to stop paying for Resend and SendGrid
A cheaper vendor
Cheaper plan Resend (free tier): saves $228 in year one (+2 more below)
Open source
Nothing in the catalog fits this job yet.
An agent skill
Nothing in the catalog fits this job yet.
Replace with AI
Nothing in the catalog fits this job yet.
The best option of each kind, modeled, not measured: each figure links its math. Keeping Resend and SendGrid is a valid answer too.
Who should switch, and who shouldn't
Switch if
- The product sends straightforward transactional mail and the destination can reproduce the message content, sender identity, metadata and event handling your application uses. resend.com
- You can verify a domain or sending subdomain under your control before switching traffic. Separate transactional and newsletter identities when their sending purposes differ. resend.com
- You have checked peak sending demand against the destination limits and can keep a working provider available during the migration. resend.com
Stay if
- You depend on templates, inbound mail, broadcasts or provider-specific events and have not mapped those integrations. The replacement recipes intentionally cover a narrower sending job. recipe
- You need dedicated IPs, subusers or SSO: SendGrid Pro includes them. twilio.com
- The current provider already gives you the delivery, bounce and reporting workflow you need, while moving would leave those events unhandled. A successful API request is not the same observation as a delivery event. resend.com
What Resend and SendGrid cost today
List prices from each vendor's pricing page, as stored in the Stackcut catalog. Each price links its source.
| Plan | Billed monthly | Billed yearly (per month) | What you get |
|---|---|---|---|
| Resend Pro | $20/mo | not shown | 50,000 emails/mo, no daily limit, 10 domains, 5 webhook endpoints; overage $0.90 per 1,000 |
| Resend Pro 100k | $35/mo | not shown | 100,000 emails/mo, 10 domains; overage $0.90 per 1,000 |
| Resend Scale | $90/mo | not shown | 100,000 emails/mo, 1,000 domains, 10 webhook endpoints; overage $0.90 per 1,000; SSO and dedicated IP add-ons |
| SendGrid (Twilio) Essentials | $19.95/mo | not shown | Essentials 50K: 50,000 emails/mo; overage $0.0013 per email; 1 additional teammate |
| SendGrid (Twilio) Essentials 100k | $34.95/mo | not shown | 100,000 emails/mo; overage $0.0009 per email |
| SendGrid (Twilio) Pro | $89.95/mo | not shown | Pro 100K: 100,000 emails/mo; overage $0.0011 per email; dedicated IPs, subusers, SSO |
- The price table compares stored plan evidence at the stated send volumes. It does not price the engineer time for migration, monitoring or deliverability work, and it is not a fresh account-specific quote. recipe
- Resend quota accounting includes sent and received messages, and each recipient consumes quota. Check those counts when applying a table based on a single-recipient sending workload. resend.com
The alternatives, ranked
3 ways out, ranked by modeled saving in the first year after setup and upkeep (3 priced). Modeled, not measured: each figure links the math on the recipe page.
- The recipes model 1 sender against Resend Pro and SendGrid Essentials; both land on Resend's free plan, which only fits low volume. recipe
- Postmark distinguishes Transactional, Broadcast and Inbound message streams. Evaluate that organization of traffic if separating product mail from newsletters is part of the job, rather than selecting solely from a per-email figure. postmarkapp.com
- For SES, domain setup is only one milestone: production access, sending limits and a working bounce/complaint process also belong in the launch checklist. docs.aws.amazon.com
- $0.10 per 1,000 emails, no monthly minimum aws.amazon.com
- Same job: send API, custom domains with DKIM, delivery events
- Rawer developer experience: no React Email-first SDK or Resend dashboard; you handle templates, bounces and complaints
- New SES accounts start in a sandbox (200 messages a day, verified recipients only) until AWS approves production access
Compare a specific alternative
Considering a specific destination? Read its checked comparison before deciding what to move.
- Resend vs Amazon SES Checked migration details, public switching accounts.
- Resend vs useSend Checked migration details, public switching accounts.
- SendGrid (Twilio) vs Mailgun Checked comparison evidence, migration details.
- SendGrid (Twilio) vs Postmark Checked comparison evidence, migration details.
- SendGrid (Twilio) vs Resend Checked comparison evidence, migration details, public switching accounts.
What transactional email costs from 3,000 to 300,000 a month
The cheapest published plan for each provider at each volume, including published overage. Free plans count only if they're really free: no trials, no expiring credits.
| Emails a month | 3,000 | 10,000 | 50,000 | 100,000 | 300,000 |
|---|---|---|---|---|---|
| Resend today | $0Free, 100/day cap | $20Pro | $20Pro | $35Pro 100k | $215Pro 100k, plus overage |
| SendGrid (Twilio) todayfree option is a 60-day trial | $19.95Essentials | $19.95Essentials | $19.95Essentials | $34.95Essentials 100k | $214.95Essentials 100k, plus overage |
| Postmark | $15Basic | $15Basic | $66Platform, plus overage | $126Platform, plus overage | $366Platform, plus overage |
| Mailgun | $0Free, 100/day cap | $15Basic | $35Foundation | $90Scale | $310Scale, plus overage |
| Amazon SESpay per email; attachments extra | $0.30Pay as you go | $1Pay as you go | $5Pay as you go | $10Pay as you go | $30Pay as you go |
- Postmark's page shows only its 10,000-email step, so above that the catalog prices extra emails at the published overage; check its slider for volume tiers. postmarkapp.com
- Mailgun's overage rates are the published 'from' rates at the entry volume. mailgun.com
How people actually left Resend and SendGrid
5 public accounts of leaving Resend and SendGrid: 2 switched, 1 evaluated, 1 gave up, 1 switching. Summaries are ours; each links the original, and each was checked against its page before it appeared here.
The author tore out a working Resend magic-link login 11 days before launch and rebuilt it on SES + Lambda five days before launch. Cost projection and free-tier daily caps drove the move; the cutover took one afternoon and the SES stack still runs the site two months on. He advises doing the math before adopting Resend. DEV Community
Independent developer searched for a self-hosted email service 'something like Resend or SendGrid, but without being constrained by their pricing models', found useSend, and evaluated it positively: 'Resend, but on your own AWS account', beta but performing well. Medium (Coding Nexus)
(older account, December 2023) Developer tried Amazon SES directly after reading that Resend wraps SES, found SES too complex to set up in a day, and went back to Resend. His math: SES only wins on cost above roughly 1,365 users/year for transactional-only email once engineering time is priced in. DEV Community
Raycast switched from SendGrid to Resend, calling it a significant improvement; the initial integration test took about 30 minutes, and Raycast has since expanded from transactional invite emails to marketing broadcasts and investor updates. Resend
Liveblocks moved to Resend after finding email templates hard for designers to maintain in SendGrid; using React Email and Tailwind, setup went smoothly with no support tickets needed, though as of this case study they were still fully migrating off their prior provider. Resend
How to leave Resend and SendGrid
Export first, then cancel. Every step links the vendor's own help page, checked on the date shown.
- Verify the destination sender first. Map message fields and any templates or provider-specific settings in a staging implementation; replacing an API key does not replace the integration code. resend.com
- Carry forward addresses that should not receive more mail. Resend supports managing and importing suppressions; confirm the destination’s behavior rather than accidentally resending to previously suppressed recipients. resend.com
- Check actual receipt of account-verification, reset and receipt emails, then inspect delivery and bounce events in your app. Keep the former route available until these checks pass. resend.com
How to leave Resend
Export first
- Emails (outbound and inbound): Apply filters in the dashboard and click Export, or bulk-export via the API/SDK; downloads of 1,000 items or fewer return immediately, larger exports arrive by email link. Admins can download from Settings > Team > Exports for 7 days (CSV). Export links expire after 7 days and are then marked Expired; only admins can download. resend.com
- Broadcasts: Same dashboard Export flow or API/SDK bulk export (CSV). Same 7-day admin download window. resend.com
- Contacts (audiences): Same dashboard Export flow or API/SDK bulk export (CSV). Same 7-day admin download window. resend.com
- Domains: Same dashboard Export flow or API/SDK bulk export (CSV). Same 7-day admin download window. resend.com
- Logs: Same dashboard Export flow or API/SDK bulk export (CSV). Same 7-day admin download window. resend.com
- API keys: Same dashboard Export flow or API/SDK bulk export (CSV). Same 7-day admin download window. resend.com
What you lose
- All team data is deleted irreversibly when the team is deleted (Resend states this action is not reversible)
- Export download links expire after 7 days; anything not exported before deletion is gone
- No refund of paid subscription fees except where required by law
- Free tier limits and features can be changed or the free tier discontinued without notice
Cancel
- Point your app at the new provider and check that mail arrives before you cancel.
- Billing page → the ⋯ menu next to your plan → Cancel Subscription.
- Refunds
- Paid subscription fees are non-refundable, except where the law requires otherwise.
How to leave SendGrid
Export first
- Contacts (Marketing Campaigns lists): Open a contact list → Action menu (⋮) → export the list to CSV and download it (CSV). Download link stays live for 12 hours after the export is generated; you're emailed when it's ready. twilio.com
- Suppressions (bounces, invalid emails, spam reports, unsubscribe groups, global suppressions): Each suppression type has its own REST API endpoint (Bounces API, Invalid E-Mails API, Spam Reports API, Unsubscribe Groups, Global Suppressions) in SendGrid's API reference; no bulk CSV export is documented. twilio.com
What you lose
- Sending from the account, from the first of the next month
Cancel
- Point your app at the new provider and check that mail arrives before you cancel.
- Twilio Console → Settings → Account Details → Your Products → find the subscription → Cancel Subscription → confirm.
- Legacy SendGrid accounts: Account Details → Your Products → Cancel Subscription.
- Takes effect
- The plan works until the end of the month. From the first day of the next month the account moves to End of Trial, which can't send email.
Not covered by the paths above, per the recipe: Receive email (inbound), Webhooks and events, React Email templates, Broadcasts/marketing emails, Logs, Templates, Deliverability insights, Marketing campaigns, Dedicated IP. If you rely on one of these, keep the incumbent or check the path closely.
Moving your data, destination by destination
What each destination's importer carries over, what it leaves behind, and any help it offers switchers.
To Postmark
Official guide postmarkapp.com · Tools: Postmark REST API, Postmark SMTP, Postmark official SDKs (Node, Python, etc.), Postmark Templates (Mustachio)
Moves: Sending integration (code) (partial); React Email templates (full); Templates as code (partial); Sending domains (partial); Attachments (partial); Test sending (full). postmarkapp.com
Doesn't move: Resend scheduled sends (scheduled_at has no Postmark equivalent in the field map); Resend's multiple tags per message (Postmark supports one Tag string; guide suggests Metadata for extra dimensions); Resend audiences/contacts and suppression lists (the fetched guide content covers sending only; no contact import is described); Resend API keys (new Postmark server API tokens must be created). postmarkapp.com
Watch out for:
- MessageStream parameter defaults to the transactional stream if omitted, which is wrong for broadcast traffic postmarkapp.com
- Postmark requires ContentType on each attachment; Resend infers it from the filename postmarkapp.com
- Postmark's To/Cc/Bcc take comma-separated strings, not arrays postmarkapp.com
Official guide postmarkapp.com · Tools: MailMason
Moves: Suppressed addresses (partial). postmarkapp.com
Doesn't move: Templates — no automated import; recreate manually or with the open-source MailMason tool; Unsubscribe groups — Postmark uses stream-level suppressions instead; SendGrid's XML API (Postmark is JSON-only) or reseller-program features. postmarkapp.com
Watch out for:
- SMTP port 465 isn't supported; use 25, 2525 or 587 instead postmarkapp.com
- 10MB message-size cap vs SendGrid's 30MB, and 50 recipients per message vs SendGrid's 1,000 postmarkapp.com
- Inbound-message retry window is 10.5 hours vs SendGrid's 3 days postmarkapp.com
To Amazon SES
Community guide dev.to · Tools: AWS SAM (CloudFormation stack), Lambda + DynamoDB + API Gateway + Secrets Manager
Moves: Sending domain (partial); Email templates (partial). dev.to
Doesn't move: Sending integration (code); Resend API keys, audiences, and suppression lists (not mentioned; a fresh SES setup rebuilds deliverability state); Resend logs and analytics history (not mentioned; a fresh setup starts analytics history over). dev.to
Watch out for:
- New SES accounts start in sandbox mode, capped at 200 emails per 24 hours and 1 email per second until production access is approved dev.to
- DynamoDB TTL is opportunistic cleanup, not a security boundary; enforce token expiry at verify time dev.to
- Cache Secrets Manager reads on cold start to avoid per-invocation API charges dev.to
To useSend
Official guide docs.usesend.com · Tools: Docker / docker-compose, useSend SMTP proxy container, Amazon SES + SNS (your own AWS account)
Moves: Contacts / audiences (partial); Sending domains (partial); Templates (React Email) (partial). docs.usesend.com
Doesn't move: Sending integration (code); Resend API keys, suppression lists, and sending history (no importer; deliverability state must be rebuilt in your own SES account); Resend logs/analytics (fresh Postgres database). docs.usesend.com
Watch out for:
- SES sandbox mode must be lifted before production sending docs.usesend.com
- Login requires a GitHub OAuth app; the docs ask readers to contribute email/password login code docs.usesend.com
- useSend's maintainers still describe the project as beta docs.usesend.com
To Resend
Official guide resend.com · Tools: Resend SendGrid code converter
Doesn't move: Contacts, audiences, suppression lists and templates — the guide covers API/code migration only, with no import tool described for these; Dedicated-IP warm-up progress — a new dedicated IP on Resend has to be warmed up from scratch ($30/mo add-on per Resend's pricing page). resend.com
Watch out for:
- SendGrid does not support idempotency keys the way Resend does, per Resend's guide resend.com
- No import tool is described for contacts, suppression lists or templates resend.com
Switching help: A free on-page 'code converter' on Resend's SendGrid migration guide takes pasted SendGrid API code and outputs the Resend equivalent, to speed up porting integrations. resend.com
To Mailgun
Official guide mailgun.com
Watch out for:
- This guide is generic ESP-switching advice on Mailgun's domain, not Mailgun-specific steps or a data importer mailgun.com
Switching help: Mailgun's SendGrid comparison page states it provides a migration guide plus hands-on onboarding support from its deliverability experts for switchers. mailgun.com
From each destination's own migration docs and switching pages, plus community write-ups where no official guide exists, each checked against its page. Confirm terms on the linked page before you rely on an offer.
FAQ
How do I cancel Resend?
Billing page → the ⋯ menu next to your plan → Cancel Subscription. Paid subscription fees are non-refundable, except where the law requires otherwise. resend.com
How do I cancel SendGrid?
Twilio Console → Settings → Account Details → Your Products → Cancel Subscription. The plan works until the end of the month; from the first of the next month the account can't send email. support.sendgrid.com
Is Amazon SES really that cheap?
A la carte it's $0.10 per 1,000 emails with no minimum, plus $0.12 per GB of attachments. New AWS accounts get free-tier credits, not an always-free SES allowance. aws.amazon.com
Which free plan is really free?
Resend's: 3,000 emails/mo, 100 emails/day, 3 domains, 30-day data retention; no pay-as-you-go on Free. resend.com
Mailgun's free plan allows 100 emails a day on 1 custom sending domain. mailgun.com
SendGrid's free option is a 60-day trial. twilio.com
What can change besides the API endpoint?
Request fields, templates, attachments, metadata, error handling and webhook payloads can be part of the provider integration. Use the destination’s migration documentation to map what your app actually sends, then exercise that mapping before changing production traffic. resend.com
How do I keep a retry from sending duplicate receipts?
Use a stable message-level retry identity in your application and the provider’s idempotency support where available. Resend supports idempotency keys with a retention window; persist your own business-event state so changing providers does not recreate an already-sent receipt. resend.com
Does moving to SES mean building an email service?
You can retain managed delivery while building a small adapter, queue or reporting layer around it. SES event notifications can expose delivery, bounce and complaint activity. The work to consume those events belongs in the cost comparison, even when the send rate is low. docs.aws.amazon.com
What should happen to old bounce and complaint records?
Preserve the recipients you have suppressed and map the reason into the new system. SES has an account-level suppression list with its own rules. Do not interpret an empty new provider list as permission to retry everyone. docs.aws.amazon.com
Keep reading
- Transactional email for a startup: what it costs from 3,000 to 300,000 emails a month
- Database and auth for an MVP: what it costs from 1,000 to 250,000 users
- A newsletter for your first 10,000 subscribers: what it costs at each size
- Mailchimp alternatives in 2026: what to use instead, and what it really costs
- Recipe: Transactional email API
- Recipe: Transactional email API
Check your own stack
Get your free stack audit
Stackcut finds every software subscription in your inbox and shows what to cancel, what to pay per use, and what AI can replace, with a spec and a cost for each. Your stack audit is free and takes about 2 minutes.
Or ask your agent
Connect the Stackcut MCP server (https://stackcut.io/mcp, no API key) and ask: “We send about 40,000 transactional emails a month on SendGrid Essentials. Is there a cheaper way?”
choose_stack({"project": "SaaS app", "needs": [
{"job": "email_transactional", "volume": {"amount": 40000, "unit": "emails_per_month"}}]})