← Comparisons

Postmark vs Mailgun: which transactional email API for your SaaS

Mailgun is the cheaper way to send 50,000 emails a month: Foundation is $35, where Postmark Basic is $55. Postmark answers with a narrower product: separate message streams, 45 days of data retention by default and a plan ladder that stays easy to read. Mailgun signs its webhooks and retries them for 8 hours, while Postmark does not sign them at all. Choose by volume and by how your webhook handler needs to authenticate.

By Julian Pryor · Updated 7 Oct 2026

Short answer

Pick Mailgun if you send somewhere between 30,000 and 250,000 emails a month, want signed webhooks or need EU hosting. Pick Postmark if your volume is small or sits near 300,000, if you like keeping transactional and broadcast mail on separate streams, and if you can protect your webhook endpoint with Basic Auth and an IP allowlist instead of a signature.

What each one costs at the volumes SaaS apps reach

Both vendors price on a monthly volume slider, and the stops do not line up. Where one vendor has no stop at a volume, the cell says so rather than guessing. Prices below were read from each pricing page on 7 October 2026.

Monthly emailsMailgun (pricing)Postmark (pricing), Basic / Pro / Platform
Free plan100 emails a day100 emails a month, no overages
10,000Basic $15$15 / $16.50 / $18
50,000Foundation $35$55 / $60.50 / $66
100,000Foundation $75 on the slider; Scale card $90No stop
125,000No stop$115 / $126.50 / $138
250,000 or 300,000Scale at 250,000: $215At 300,000: $245 / $269.50 / $294
500,000Scale $400No stop between 300,000 and 700,000

Dividing each price by its volume shows the shape of the two curves. Postmark Basic falls steadily: $1.50 per 1,000 at 10,000 emails ($15 / 10), $1.10 at 50,000, $0.92 at 125,000 ($115 / 125) and $0.82 at 300,000 ($245 / 300, rounded). Mailgun drops faster to begin with, $0.70 per 1,000 at 50,000 ($35 / 50), then rises to $0.75 at 100,000 on Foundation and $0.86 at 250,000 on Scale before easing to $0.80 at 500,000. So Mailgun is clearly cheaper in the middle of its range, and by 300,000 the two are within a few cents per thousand of each other.

At 50,000 emails the yearly difference is ($55 - $35) x 12 = $240 against Postmark Basic, and ($60.50 - $35) x 12 = $306 against Pro. That is real money for a seed-stage product and not much for a funded one. Overage rates differ too: Mailgun lists extra emails from $1.30 per 1,000 on Foundation and from $1.10 on Scale, and Postmark lists $1.80, $1.30 and $1.20 on Basic, Pro and Platform. Read between-stop prices off the sliders, not off those overage rates.

Postmark pricing page, captured Oct 2026
Postmark pricing page as of 7 Oct 2026, slider at 10,000 emails: Free, Basic $15, Pro $16.50, Platform $18. A cookie banner covers the bottom of the capture. Source: postmarkapp.com/pricing
Mailgun pricing page, captured Oct 2026
Mailgun pricing page as of 7 Oct 2026, slider at 50,000 emails: Free, Basic $15, Foundation $35 and Scale $90. Source: mailgun.com/pricing

What the cheaper plans leave out

  • Log and data retention. Mailgun keeps 1 day of logs on Free and Basic, 5 days on Foundation and 30 days on Scale. Postmark's page lists 45-day data retention on Basic, with retention customizable up to 365 days on Pro and Platform. If support will ask "did this receipt go out last month?", Postmark's default window covers it and Mailgun's lower plans do not.
  • Sending domains. Mailgun gives 1 custom sending domain on Free and Basic and 1,000 on Foundation and Scale. Postmark gives 5 on Basic, 10 on Pro and unlimited on Platform.
  • Streams and templates. Postmark's page lists up to 15 message streams on Basic, up to 30 on Pro and unlimited on Platform, plus responsive templates. Mailgun's Foundation plan adds an email template builder and API; Basic does not have it.
  • Inbound mail. Postmark lists inbound email processing on Pro and Platform. Mailgun lists 1 inbound route on Free, 5 on Basic and full inbound routing from Foundation.
  • Support. Mailgun's Scale plan adds live phone and chat support; below that it is ticket support. Postmark's page does not break support down by plan.

Webhooks: signed, unsigned and how long they retry

Both vendors post JSON to your endpoint for delivery events, and the real difference is trust and recovery. Mailgun's documented events are accepted, delivered, temporary_fail, permanent_fail, opened, clicked, unsubscribed and complained (Mailgun webhook docs). Each POST includes a signature that is the hex-encoded HMAC-SHA256 of the timestamp and a 50-character token, keyed with your account-level Webhook Signing Key, and Mailgun also presents a TLS client certificate for the common name webhooks.mgsend.net (securing webhooks). Failed deliveries are retried for 8 hours (retries).

Postmark's outbound webhooks cover delivery, bounce, spam complaint, open, click and subscription change events, and its docs state that it does not currently support HMAC signature verification. You protect the endpoint with HTTP Basic Authentication embedded in the URL, an allowlist of Postmark's published IP ranges and a check on the payload shape. Postmark retries 5xx responses, 408, 429 and network failures after 1, 5, 10, 10, 10 and 15 minutes, then stops, and it attaches an X-PM-Webhook-Trace-Id header that stays the same across retries, which is what an idempotency check needs (Postmark webhook docs). If a security review at your customers requires signed payloads, that single line settles the choice.

Connecting either one to your billing events

The pattern is the same on both. Your billing system sends a webhook to your own server, the server decides which message applies, and it calls the email API. With Stripe that trigger is usually invoice.payment_failed for a failed renewal or customer.subscription.deleted for a cancellation; with Paddle it is transaction.payment_failed or subscription.canceled. The card-update link in a failed-payment email comes from your billing system, not from Postmark or Mailgun.

Where the two differ is in what you do after the send. Postmark's streams let you keep trial-ending and receipt mail on a transactional stream while a feature announcement uses a broadcast stream, so a complaint spike on the announcement does not touch payment notices. On Mailgun the equivalent separation is by sending domain or subdomain, and Foundation's 1,000 domains make that cheap to set up. Either way, decide which system owns the failed-payment email, your billing tool or your own code, so a customer never receives both.

Dedicated IPs

Postmark sells fully managed dedicated IPs from $50 a month per IP, only to customers sending 300,000 emails a month or more and only on Pro or higher. At 300,000 emails one IP on Pro is $269.50 + $50 = $319.50 a month, and two are $369.50. Mailgun's page says one dedicated IP is included with Foundation 100k and Scale, and extra IPs are $59 each a month, so Scale at 250,000 emails with a second IP is $215 + $59 = $274. The volumes differ by 50,000 emails, but the point stands: Mailgun reaches a dedicated IP at a lower send volume and a lower bill, while Postmark limits the add-on to senders it considers large enough to warm one.

Which to choose

  • Choose Mailgun if you expect 30,000 to 250,000 emails a month, want the lower bill, need signed webhooks, or want to choose US or EU sending from one account.
  • Choose Postmark if you send under 20,000 emails and want a plain ladder, want 45-day activity history without paying extra, or value having transactional and broadcast streams under one roof.
  • Re-price at 300,000 emails. The per-thousand gap is only a few cents there, so retention, IP rules and support should decide.

Moving from one to the other

  1. Add the new vendor's DNS records for a sending subdomain and leave the old SPF and DKIM records in place while both send.
  2. Export suppressions: Postmark's bounced and spam-complained addresses or Mailgun's bounce, unsubscribe and complaint lists, and import them before the first live message.
  3. Rewrite the webhook consumer. If you move to Postmark, drop signature checks and add Basic Auth, the IP allowlist and a trace-ID check. If you move to Mailgun, add HMAC verification with the signing key.
  4. Move one message type at a time, starting with low-risk notifications, and keep payment and password-reset mail on the old vendor until bounce and complaint rates look the same for a week.
  5. Download activity history before closing the old account, because Mailgun's lower plans keep logs for 1 day.

Related reading: all comparisons, Resend vs Postmark, SendGrid vs Postmark, Mailgun vs Amazon SES and integrating your SaaS stack.

Postmark vs Mailgun: common questions

Is Mailgun cheaper than Postmark?

At 50,000 emails a month, yes: Mailgun Foundation is $35 and Postmark Basic is $55, which is $240 a year apart. The gap narrows with volume. Postmark Basic costs $245 at 300,000 emails, while Mailgun Scale costs $215 at 250,000 and $400 at 500,000, so per thousand emails the two end up close to each other. At 10,000 emails both start at $15.

Which free plan is better for a new SaaS?

Mailgun's, if you need volume during development: 100 emails a day is roughly 3,000 in a month, against Postmark's 100 emails a month with no overages allowed. Postmark's free plan is built to test an integration and judge deliverability, and the page says it never expires. Neither free plan suits production sending for a product with real users.

Can I verify that a webhook really came from the vendor?

With Mailgun, yes: every webhook POST carries a timestamp, a token and a signature, which is an HMAC-SHA256 of the timestamp and token computed with your account's Webhook Signing Key. Postmark's documentation says it does not currently support HMAC signature verification and points you to HTTP Basic Authentication in the webhook URL plus an IP allowlist.

Which one retries failed webhooks for longer?

Mailgun retries for 8 hours on a schedule of 5 minutes, 10 minutes, 15 minutes, 1 hour, 2 hours and 4 hours, except for delivery notifications and except when your endpoint answers 406. Postmark retries after 1, 5, 10, 10, 10 and 15 minutes, which is about 51 minutes in total, and does not retry most 4xx responses. If your handler might be down for an hour, Mailgun gives you more room.

Do I need a dedicated IP for a SaaS product?

Probably not at first. Postmark offers dedicated IPs only to customers sending 300,000 emails a month or more, on a Pro plan or higher, from $50 a month per IP. Mailgun includes one dedicated IP with Foundation 100k and Scale and sells additional IPs at $59 a month each. Shared IPs are normal for password resets and receipts at low volume.