SaaSVersus
Email & Marketing

Switching to Resend, Postmark or Amazon SES: A Transactional Email Migration Guide (2026)

By , CEO of Visiting Media, former CMO of Mozilla and BitTorrent

Last updated October 31, 2026 · 7 min read

Resend is the fastest provider to move transactional email onto: verify a domain and you can send to customers the same day. Postmark adds an account review of roughly a day and gives you the most deliverability help once you are in. Amazon SES is the cheapest destination but the slowest move, because every account starts in a sandbox and you have to build bounce handling before AWS lets you out.

Our Resend vs Postmark vs AWS SES cost comparison covers what each one charges. Short version, at 100,000 emails a month: about $10 on SES, $35 on Resend, $126 to $177 on Postmark. This page is for the team that has already picked one and now has to move a live product onto it without a single password reset going missing.

That last part is harder than the pricing pages suggest.

Email migrations rarely go wrong at the provider. They go wrong on a DNS record someone added at the wrong hostname, or on a suppression list that stayed behind at SendGrid, so the new provider spent its first week emailing dead addresses and picking up a bounce rate that took a month to work off. SaaS Versus doesn’t sell an email product, and the site footer notes that some links may be affiliate links.

What the move involves on each provider

FeatureResendPostmarkAmazon SES
DNS records to addDKIM TXT (resend._domainkey), plus MX and SPF TXT on a sending subdomainDKIM TXT, plus a Return-Path CNAME to pm.mtasv.netThree Easy DKIM CNAMEs; MX and SPF TXT for a custom MAIL FROM domain
Wait before real sendsNone beyond DNS verificationAccount review, usually about a daySandbox until AWS approves production access; plan a few days
Limits before you pay or are approvedFree plan caps at 100 emails a daySends only to your own domain until approvedVerified recipients only, 200 messages a day, 1 per second
Carrying over suppressionsFilter known bad addresses in your own code if no import fitsAdd suppressions per message stream through the APIBulk import into the account-level suppression list
Bounce and complaint eventsWebhooks, set up in the dashboardWebhooks per message stream, bounces sorted by typeYou wire SNS or EventBridge and write the handler
Realistic cutover for a small teamA few daysAbout a weekTwo to four weeks, most of it engineering

The cutover row is our estimate for a team of two or three engineers moving a product that sends under a few hundred thousand emails a month. A team that already runs SES for something else will move much faster than that.

Step 1: Add the new DNS records without touching the old ones

Every provider signs your mail with its own DKIM selector. Resend uses resend._domainkey. SES Easy DKIM generates three random tokens under _domainkey. Postmark issues its own selector too. None of them collide with what SendGrid or Mailgun put there, so the old and new records can sit in DNS together for as long as the migration takes. Don’t delete the old DKIM record until the old provider has sent its last message.

SPF is where people break things. A hostname can only have one SPF record, and an SPF record can trigger no more than 10 DNS lookups, so pasting a second v=spf1 line onto your root domain quietly fails both of them. All three providers avoid the problem by putting SPF on a bounce subdomain (Resend’s sending subdomain, Postmark’s Return-Path, SES’s custom MAIL FROM) rather than your root. Set that up properly and your root SPF record barely changes.

If you have no DMARC record yet, add v=DMARC1; p=none with a reporting address now. Google and Yahoo have required DMARC from senders of more than 5,000 messages a day since February 2024, Microsoft applied a similar rule to Outlook.com in May 2025, and the aggregate reports will show you, within a day or two, whether the new provider’s mail is passing alignment.

Step 2: Start the approval clock on day one

On SES, request production access before you write a line of code. AWS asks how you collect addresses, how you handle bounces and complaints, and what you send. Vague answers get bounced back for more detail, and each round costs you time. Say plainly that it is transactional mail to customers who signed up, and describe the bounce handler you are about to build.

Postmark’s review is lighter. It wants to see a real product and a real sending domain.

Resend has nothing to wait for, which is a large part of why it is our default recommendation for a team moving off SendGrid in a hurry.

Step 3: Move the suppression list before the first real email

This is the step teams skip. Export hard bounces, spam complaints and unsubscribes from the old provider, then load them into the new one or into a blocklist in your own database. On SES it is a bulk import job; on Postmark you add suppressions to the message stream through its API. Skip it and the first big send hits every dead address you collected over three years, and a fresh account with a 6% bounce rate is exactly what SES’s automated review is built to pause.

Step 4: Cut over by email type, password resets last

Route mail through a small wrapper in your code with a provider flag per message type. Then move in this order:

OrderEmail typeWhy this position
1Internal alerts and staff notificationsYour own inboxes; a delay costs nothing and shows you the logs and webhooks working
2Activity notifications (comments, mentions, digests)Real customers and real volume, but a late one annoys people without locking anyone out
3Receipts and invoicesCustomers notice when these go missing, usually at month-end when finance asks
4Sign-in codes, magic links and password resetsA missing one locks a user out and opens a support ticket within minutes

Give each stage a few days. Watch the bounce rate (keep it well under 2%), the complaint rate (Google’s line is 0.3%, aim for under 0.1%) and the time from API call to delivered event. Only when sign-in mail on the new provider looks as fast as it did on the old one do you switch the old provider off.

Step 5: Keep marketing mail somewhere else

If the old provider also sent your newsletter, do not let the migration merge it into your transactional stream. Postmark makes this structural with separate message streams. On Resend or SES, send marketing mail from a different subdomain (news.example.com, say) so a bad campaign cannot drag down the reputation that delivers your password resets. Marketing mail also needs one-click unsubscribe headers under the Google and Yahoo rules; transactional mail does not.

Where each option fits (and where it does not)

DestinationFits a migration whenDoes not fit when
ResendYou need off your current provider this week, your team writes JavaScript or TypeScript, and volume sits under a few hundred thousand emails a month ($35 at 100,000)You send millions a month on a tight budget, or compliance needs logs kept longer than Resend’s 30 days
PostmarkYou are leaving a provider because resets and receipts were arriving late or in spam, and you would rather pay for deliverability than staff itThe move is about cutting cost; at 100,000 emails Postmark is the most expensive of the three
Amazon SESYou already run on AWS, an engineer can own bounce handling for good, and volume is high enough that $0.10 per 1,000 changes the budgetYou have a deadline, no one to own the bounce pipeline, or a launch that cannot wait for sandbox approval

The Verdict

For most teams switching providers in 2026, move to Resend first. It has no approval wait, the DNS takes ten minutes, and you can always move to raw SES later once volume makes the savings worth an engineer’s time (Resend already runs on SES, so the sending reputation story barely changes). Pick Postmark if deliverability is the reason you are leaving. Pick SES only if someone on the team is willing to have their name next to the bounce handler. Whichever you choose, carry the suppression list over before the first send. And move password resets last.

Frequently Asked Questions

Which is the easiest to switch to: Resend, Postmark or Amazon SES?

Resend. You verify a domain with a few DNS records and can send to real customers the same day, with no account review. Postmark reviews new accounts before they can email outside your own domain, which usually takes a day or so. Amazon SES starts every account in a sandbox limited to verified addresses, 200 messages a day and 1 message a second, until AWS grants production access.

Can I run two email providers at the same time during a migration?

Yes, and you should. Each provider signs mail with its own DKIM selector, so the old and new DKIM records live side by side in DNS without conflict. Keep the old provider sending until the new one has delivered your full mix of email types for at least a week with clean bounce and complaint numbers.

Do I need to warm up a new email provider?

Not on shared IPs, which is how Resend, Postmark and Amazon SES all send by default. Your domain reputation travels with your DKIM-signed domain, not the provider. Warm-up matters when you buy a dedicated IP: a fresh IP has no history, and mailbox providers throttle sudden volume from it, so ramp traffic onto it over several weeks.

What happens to my bounce and unsubscribe list when I switch providers?

Nothing, unless you move it. Your old provider's suppression list stays behind, and the new provider will happily email addresses that hard-bounced last month. Export hard bounces, spam complaints and unsubscribes before cutover. Amazon SES accepts a bulk import into its account-level suppression list, Postmark accepts suppressions per message stream through its API, and otherwise you can filter those addresses in your own code.

What DNS records does each provider need?

Resend asks for a DKIM TXT record plus an MX and an SPF TXT record on a sending subdomain it uses for bounces. Postmark asks for a DKIM TXT record and a Return-Path CNAME pointing to pm.mtasv.net. Amazon SES Easy DKIM uses three CNAME records, plus an MX and SPF TXT record if you set a custom MAIL FROM domain. All three work best with a DMARC record on your root domain.

Related Comparisons

Browse every head-to-head in all SaaS comparisons, or start with these:

Get free SaaS comparison updates

Weekly insights on the best SaaS tools. No spam, unsubscribe anytime.

Skip the comparison work.

Get battle-tested templates and systematize your strategy with the SEO Content OS.

Get the SEO Content OS for $34 →