Migration guide
Postmark → Resend
Postmark and Resend are both transactional email APIs, but they price differently and they ship different developer experiences. Postmark Pro is $16.50/mo for 10,000 emails; Resend Pro is $20/mo for 50,000 emails. At any volume above ~12,000 emails/month, Resend is meaningfully cheaper after Postmark's $1.30 per-1,000 overage kicks in. Resend also ships first-class React Email integration, batch sending, and a Marketing track (broadcasts, audiences) that Postmark deliberately doesn't offer. The trade-off is reputation: Postmark's deliverability track record is older and the gold standard in the category.
Published · By the TierGauge editorial team
When this migration makes sense
- You send between 12,000 and 500,000 transactional emails per month and Postmark's per-1,000 overage rate is now the dominant line item on the invoice. Resend Pro at $20/50k or Pro 100k at $35/100k removes that ladder entirely until you cross into Scale.
- You write email templates in React (or want to). Resend's React Email integration is a real workflow upgrade over Handlebars or MJML rendering layers bolted onto Postmark.
- You want one vendor for transactional plus marketing email. Resend's Marketing track ($40 to $650 per month for 5k to 150k contacts) sits next to the transactional API; Postmark is transactional-only and you'd pair it with Mailchimp or Kit for broadcasts.
- You value modern API ergonomics: native batch sending, official SDKs across most major languages, clean Bearer-token auth, and a small number of endpoints. Postmark's API is fine but older-feeling.
- Your deliverability requirements are normal SaaS-grade (signup confirmations, password resets, receipts, account notifications) rather than mission-critical compliance email.
When it doesn't
- Deliverability is the load-bearing constraint and the difference between 99.5% and 99.8% inbox placement is a real business metric for you. Postmark's 10-year inbox-placement reputation is hard to beat; Resend's is good but younger.
- You need 365-day data retention for compliance or audit. Postmark Pro and Platform offer customizable retention up to 365 days; Resend's retention is shorter (30 days on Free; longer on paid tiers but not the 365-day customizable window).
- Inbound email parsing is a primary use case and you depend on Postmark's separate inbound infrastructure. Resend Inbound exists but the dedicated separate-infra design Postmark advertises is the kind of thing that matters once you're past hobby volumes on inbound.
- Your team has built deeply against Postmark's bounce-categorization (hard / soft / transient codes) for retention churn detection or list hygiene. Resend has bounce events but less granular code categorization out of the box.
- You're already on Postmark Basic at $15/10k and your volume genuinely sits at or below 10,000 emails per month. The migration math doesn't pencil at that volume; stay.
What you lose by leaving Postmark
- Postmark's deliverability reputation: 10+ years of consistent top-tier inbox placement, separate inbound and outbound infrastructure, and the publicly-watched bounce-and-spam-rate transparency. Resend's deliverability is solid but younger.
- Customizable 365-day data retention on Pro and Platform tiers. Useful for compliance audits where you need to produce historical message-content evidence.
- Granular bounce categorization (hard / soft / transient with specific codes) that you may have built retention-churn or list-hygiene logic against.
- Postmark's Bounce + Delivery + Open + Click + SubscriptionChange webhook taxonomy if your alerting or reconciliation pipelines were built around those exact event names and shapes.
- Mature dedicated-IP warmup tooling. Both vendors offer dedicated IPs on higher tiers, but Postmark's IP warmup advice and infrastructure are more battle-tested.
What you gain with Resend
- Volume value: 5x the included emails at the entry paid tier ($20 for 50k vs $15 for 10k), and a flatter overage curve at $0.90/1,000 vs Postmark's $1.30 to $1.80/1,000 depending on tier. Past 12,000 emails/month the Resend invoice is meaningfully smaller.
- First-class React Email integration: write email templates as React components, get JSX type-checking, share components across web and email. This is the genuine modern-DX upgrade most developers cite when describing the move.
- A single vendor for transactional plus marketing email if you want it: Resend's Marketing track adds broadcasts, audiences, and contact management at $40 to $650 per month for 5k to 150k contacts. Skip the separate Mailchimp / Kit bill.
- Native batch sending API: send up to 100 emails in one POST. Postmark supports batch via the email-batch endpoint but Resend's is more central to the product.
- Cleaner pricing: no daily-send-cap on paid tiers, no separate per-server pricing model, no platform-vs-Pro-vs-Basic feature matrix to navigate. Volume in, dollars out.
- Active product iteration: Resend ships frequently (broadcasts, audiences, AI credits, batch sending, inbound have all landed since 2023). Postmark's pace is steadier and slower.
Plan mapping at the entry paid tier
The lowest non-free, non-custom tier on each side. Use this for the "if I'm on $X with Postmark, what's the equivalent on Resend?" gut check.
| Limit | Postmark (Basic) | Resend (Pro 50k) |
|---|---|---|
| Emails / month | 10,000 | 50,000 |
Step-by-step migration
- 01
Export your list from Postmark
Pull a fresh CSV of every active subscriber. Capture the fields you actually use downstream: email is required, name is standard, signup date and tier (free/paid) are useful when Postmark provides them.
- 02
Provision Resend
Sign up, set sender identity, and verify your sending domain (DKIM, SPF, DMARC). Do this before importing the list; sending from an unverified domain is the single fastest way to land in spam at the moment of cutover.
- 03
Import the list and map fields
Upload the CSV. Map email + name + any custom fields. Decide whether to import as one list or split into segments/tags. Postmark-style organization rarely maps 1:1, so plan the split before the upload, not after.
- 04
Rebuild automations and templates
Resend's automation builder is structurally similar but won't import Postmark's flows directly. Rebuild only what you actively use; the move is a chance to delete the unused ones rather than lift-and-shift dead infrastructure.
- 05
Send a test broadcast
Pick a small segment and send a real broadcast (not just a preview). Verify deliverability, link clicks, and unsubscribe flow. If anything's off, you find it before the announcement, not after.
- 06
Announce the move and cut over
Send your last broadcast from Postmark announcing the new sender domain and what to expect. Cut over DNS and sending from Resend on the same day, not staggered. A dual-send week creates more confusion than it prevents.
Postmark-to-Resend specific gotchas
Universal steps cover most of the work. These are the failure modes unique to this exact pair.
-
#1
API surface differences: Postmark uses an X-Postmark-Server-Token header on POST /email; Resend uses Bearer auth on POST /emails. The send-payload shape (To, From, Subject, HtmlBody/TextBody) is similar but field names differ enough (Resend uses html/text/from/to with snake_case) that a wrapper or full SDK swap is needed. Rewrite, don't pattern-match.
-
#2
Template migration: if your Postmark templates are stored in Postmark and rendered server-side via TemplateAlias + TemplateModel, the migration is a real engineering project. Either re-author each template as a React Email component (the modern-DX upgrade), or render templates server-side and POST raw HTML to Resend. The second path loses the React Email benefit but is faster.
-
#3
Webhook payload shapes: Postmark's Bounce / Delivery / Open / Click / SpamComplaint webhook events have different field names and structures than Resend's email.delivered / email.bounced / email.opened / email.clicked events. Rewrite your webhook handlers; don't try to translate.
-
#4
Sender domain authentication: both use SPF and DKIM but the DNS records are vendor-specific (Postmark issues pm._domainkey TXT records; Resend issues different selector names). Add Resend's DNS records alongside Postmark's, verify Resend, then warm the new sender on a percentage of traffic for 7 to 14 days before flipping the API key.
-
#5
Daily send caps on free tier: Postmark Free is 100 emails per month total (no daily cap); Resend Free is 3,000 emails per month with a 100/day hard cap. If you're testing on Free and your traffic is bursty, the daily cap blocks you well before you'd hit the monthly limit.
-
#6
Inbound routing config: if you process inbound email on Postmark, the inbound stream is configured with a per-server inbound URL and the parsed JSON payload is well-defined. Resend Inbound is functionally similar but route configuration differs. Test inbound separately from outbound during cutover; don't assume one flip handles both.
Common questions
- Is Resend cheaper than Postmark?
- Both start at the same headline price (Free). The reason to migrate is the pricing model and feature scope, not the entry-tier number.
- Will my data transfer cleanly?
- Most transactional email data transfers, but rarely 1:1. The "Pair-specific gotchas" section above is hand-curated for this exact migration: it covers what exports from Postmark, how it imports into Resend, and which structural pieces (workflows, integrations, custom domains) require rebuild rather than direct port. The constraint usually isn't the data export; it's the rebuild work for anything Resend models differently.
- How long does the migration take?
- A clean migration for this pair is typically 1-2 weeks of focused work: data export, integration reconnection (CRMs, webhooks, payment processors), feature rebuild for whatever doesn't port directly, test run, cutover. The constraint is rarely the export itself; it's the integration reconnection and the rebuild work for any feature that Resend models differently from Postmark.
- Are Postmark and Resend direct competitors?
- Yes. Both are primarily transactional email tools, which is why this is a defensible head-to-head migration rather than a cross-category consolidation.
- Where can I see Postmark vs Resend side-by-side?
- The /compare/postmark-vs-resend page on TierGauge shows side-by-side plans, headline pricing, included features, and limit comparison at the entry paid tier. This migration guide is the long-form decision narrative; the compare page is the data-only dashboard.
Sources
- Postmark: https://postmarkapp.com/pricing
- Resend: https://resend.com/pricing
Pricing verified . Migration mechanics are based on the public pricing pages and standard ESP migration patterns; verify destructive steps (DNS cutover, paid subscription transfer) against the vendor's current docs before executing.