Mailgun alternatives: where to send your email next, and how to move safely

Seven destinations in detail, one per reason to leave, and an eight-step migration plan.

The short answer: pick Postmark if password resets and receipts have to land fast and you want support that answers, Amazon SES if you send at volume and want the lowest bill, Resend if your developers want a clean API and a generous free tier, SendGrid if you need a dedicated IP and marketing campaigns in one account, Brevo or Mailjet if you also send newsletters, and MailerSend if you're a small project on a tight budget. One thing to know first: Mailjet belongs to the same parent as Mailgun (Sinch). The migration itself comes down to three jobs: your DNS records, your suppression list (bounces, complaints, unsubscribes) and your webhooks. We compared all seven destinations and checked their 2026 prices and limits.

Romain CochardCEO of Hack'celeration
Updated 20267destinations compared8migration steps2026prices checked

Our ranking is editorial: a sponsored slot is always labeled on its card, and no affiliate link ever changes a score.

The real reasons

Why teams move off Mailgun

Mailgun is still a capable developer tool: inbound routes, address validation, IP warm-up tooling. It holds 4.1 out of 5 on Trustpilot across 1,500+ reviews. But 19% of those reviews are one star, and the same complaints show up on Reddit and in the Ghost forum. Here are six reasons people leave, all checked in 2026.

Shared IPs that land on blocklists

On lower plans you send from IPs shared with other customers. When one of them spams, your reputation pays. One SaaS company moved to Amazon SES after Mailgun's shared pool got blocklisted by Gmail and Outlook, with slow tickets on top. A Reddit thread in r/webdev describes roughly 40% fewer emails reaching Outlook over one stretch.

New accounts are throttled hard

A fresh account with no sending history can't send big batches. Ghost users report a cap of about 10 recipients per send (9 in practice) until Mailgun trusts the account. Add mandatory business verification at signup, and a newsletter that has to go out tonight won't.

Accounts disabled without warning

The free plan allows 100 emails a day. A UK store owner had a free account disabled after a 150-recipient newsletter, with "no warning, no clear explanation" and no way back even after offering to pay. On Trustpilot, sudden suspensions are the most serious complaint, ahead of slow support.

One day of logs on entry plans

Free and Basic keep sending logs for one day. Foundation ($35/month) gives you 5 days, Scale ($90/month) 30. A customer emails on Monday about a receipt sent Friday, and on Basic there's nothing left to look at. Postmark keeps 45 days from its $15 plan.

Add-ons that inflate the bill

Basic is $15/month for 10,000 emails, then $1.80 per 1,000 extra. A dedicated IP is only included from Foundation 100k and on Scale; otherwise it's $59 per IP per month. Amazon SES charges $24.95. Several Trustpilot reviewers also say downgrading from the $35 plan is a hassle.

A product that changed hands

Mailgun is a Sinch product, sold next to Mailjet under Sinch Email. "Mailgun has definitely gotten worse since they were acquired by Sinch," one Ghost forum user wrote. That's sentiment, not proof. And if you rely on inbound routes or address validation, think twice: few alternatives replace them one to one.

The 7 alternatives

Mailgun alternatives, one by one

For each provider: why move there, who it's for, its catch, how to migrate from Mailgun, and what it costs. Prices are the ones each vendor lists in 2026, in US dollars.

01

Postmark: when every transactional email has to land

Most reliable for transactional

Why switch to Postmark. Postmark does one job: email triggered by your app. Transactional and broadcast traffic live in separate message streams, and bulk mail isn't allowed in the transactional one. Your password resets never share reputation with somebody else's newsletter, which is the exact complaint people have about Mailgun's shared pools.

Who it's for. SaaS teams and stores whose receipts and login links matter more than anything, and who want 45 days of logs for support tickets.

Who it's not for. High-volume newsletters, and anyone who schedules sends for a set time.

The catch. The free tier is capped at 100 emails a month with no overage. No port 465, no raw MIME, 10 MB and 50 recipients per message (Mailgun allows 25 MB). A dedicated IP starts at $50 a month and needs 300,000+ emails a month on Pro or above. Data is hosted in the US.

How to migrate. Postmark publishes a Mailgun migration guide with a webhook map: delivered becomes Delivery, failed becomes Bounce, complained becomes Bounce plus Subscription Change. Field names change too (message-id becomes MessageID). Mailgun's o:deliverytime has no equivalent, so you'll need a queue on your side.

Pricing. Basic $15, Pro $16.50, Platform $18 a month for 10,000 emails, then $1.80, $1.30 or $1.20 per extra 1,000. Our Postmark review (4.3/5) works out the real cost at 50,000 emails.

Free
100 emails/month
Paid
Basic from $15/month
Logs
45 days
Catch
no scheduled sending
See Postmark pricing →
02

Amazon SES: the cheapest option once volume grows

Cheapest at scale

Why switch to SES. Price. At $0.10 per 1,000 emails, 100,000 sends cost about $10, against $90 a month on Mailgun Scale. A dedicated IP is $24.95 a month versus $59. That's why the SaaS company that hit Mailgun's blocklisted pool moved here: lower cost and more control.

Who it's for. Engineering teams already on AWS, and anyone sending hundreds of thousands of emails a month.

Who it's not for. Teams without a developer. There's no real template editor, and the AWS console isn't friendly.

The catch. Every new account starts in the sandbox: verified recipients only, 200 messages per 24 hours, one per second, per region. Getting out takes a request, with a response promised within 96 hours. Attachments cost extra ($0.12 per GB). New customers no longer get a permanent free tier, only AWS credits of up to $200.

How to migrate. Request production access a week before cutover, in the region you'll send from. Wire bounce and complaint notifications (through SNS) before the first send, or you're flying blind. Load your Mailgun suppressions into the account-level suppression list.

Pricing. $0.10 per 1,000 emails, no subscription. Dedicated IP $24.95 a month.

Price
$0.10 per 1,000 emails
Dedicated IP
$24.95/month
Start
sandbox, 200 emails/24h
Catch
you configure everything
See Amazon SES pricing →
03

Resend: the developer-first API

Easiest to build with

Why switch to Resend. The most generous free tier among developer email APIs: 3,000 emails a month, 100 a day. Paid plans have no daily cap. At 100,000 emails a month, Pro costs $35 against $90 on Mailgun Scale.

Who it's for. Young SaaS teams that keep their email templates in code and want to switch providers without redoing everything.

Who it's not for. Marketing teams that want a visual editor and campaigns. Resend is a developer tool.

The catch. A dedicated IP ($30 a month) is only on Scale, and only above 3,000 emails a day. The 100-a-day cap on the free plan disappears fast when a signup spike hits.

How to migrate. Add your domain, publish the DKIM records, swap your Mailgun API calls. A tip from Reddit applies here: if your templates live in your codebase rather than at the provider, the switch is mostly a new API client.

Pricing. Pro $20 a month for 50,000 emails, $35 for 100,000. Scale $90 for 100,000. Overage $0.90 per 1,000.

Free
3,000 emails/month, 100/day
Paid
Pro from $20/month
Logs
30 days
Catch
dedicated IP on Scale only
See Resend pricing →
04

SendGrid: high volume, with marketing on the side

High volume

Why switch to SendGrid. It's the other big name in the space, with marketing campaigns in the same account. The Pro plan includes a dedicated IP, which Mailgun charges $59 a month for on entry plans.

Who it's for. Companies that send a lot and want their own IP without running AWS infrastructure.

Who it's not for. Anyone fleeing shared IPs who won't pay for Pro: on Essentials you're on shared IPs again, same as Mailgun.

The catch. The permanent free plan went away in 2025; a 60-day trial is all that's left. Account suspensions are a common complaint here too.

How to migrate. Authenticate your domain, create an API key, remap webhook events and import your suppressions. Our SendGrid review (4.2/5) covers the sending cap and suspensions, and Postmark vs SendGrid settles that matchup.

Pricing. Essentials $19.95 a month for 50,000 emails, Pro $89.95 for 100,000 with a dedicated IP.

Paid
Essentials $19.95/month
Volume
50,000 emails
Dedicated IP
included on Pro
Catch
no permanent free plan
See SendGrid →
05

Brevo: transactional API plus a full marketing suite

All-in-one

Why switch to Brevo. The API and SMTP relay are open on the free plan, webhooks included, and transactional sends don't cost extra on a marketing plan. If your app sends receipts and your team sends a newsletter, both fit in one account.

Who it's for. Small businesses that want transactional email, campaigns and SMS in a single tool.

Who it's not for. Platforms pushing hundreds of thousands of system emails a month that want per-thousand pricing like SES.

The catch. The free plan stops at 300 emails a day, which a Monday-morning signup wave can eat. Accounts get suspended when bounce or complaint rates climb, just like at Mailgun.

How to migrate. Create an API key, authenticate the domain, point your webhooks at Brevo's events, and import Mailgun bounces and complaints before any send. Our Brevo review (4.1/5) covers its tiers and suspension thresholds.

Pricing. Free at 300 emails a day, Starter from $9 a month.

Free
300 emails/day
Paid
Starter from $9/month
Included
API, SMTP, webhooks
Catch
daily cap on free
Try Brevo for free →
06

Mailjet: an exit that stays in the family

Transactional and campaigns

Why switch to Mailjet. The free plan sends 6,000 emails a month, 200 a day, twice Mailgun Free's daily allowance. It pairs a transactional API with a campaign editor.

Who it's for. Teams outgrowing Mailgun's free tier who also want newsletters.

Who it's not for. Anyone leaving because of the Sinch acquisition: Mailjet has the same parent, sold under the same Sinch Email banner.

The catch. A dedicated IP only comes at 100,000 emails. Premium ($29 a month for 15,000 emails) unlocks the advanced features.

How to migrate. The API differs from Mailgun's, so plan to rewrite calls and remap webhook events. DNS works like any other destination.

Pricing. Essential $19 a month, Premium $29 for 15,000 emails, 10% off yearly.

Free
6,000 emails/month, 200/day
Paid
Essential from $19/month
Parent
Sinch, like Mailgun
Catch
dedicated IP from 100,000 emails
See Mailjet pricing →
07

MailerSend: the low-budget starter

Low budget

Why switch to MailerSend. For a side project, Hobby at $7 a month sends 5,000 emails: about half Mailgun Basic's price for half the volume, and the lowest paid entry on this page.

Who it's for. Indie developers and small SaaS sending a few thousand emails a month.

Who it's not for. Anyone needing a dedicated IP: that's Enterprise only, above 100,000 emails a week.

The catch. Free is 500 emails a month, 1 template, 1 domain, 1 user. Past the Hobby volume, it's $1.50 per 1,000. Higher tiers aren't clearly priced in dollars on the pricing page, and the FAQ quotes a different figure, so confirm the amount before you commit.

How to migrate. Add the domain, publish SPF and DKIM, swap API calls and webhooks. Keep templates in code so you don't depend on the vendor's editor.

Pricing. Hobby $7 a month for 5,000 emails, then $1.50 per 1,000.

Free
500 emails/month
Paid
Hobby from $7/month
Volume
5,000 emails
Catch
1 template, 1 domain on free
See MailerSend pricing →
The comparison

Seven alternatives side by side

Our default pick: Postmark for modest volume where every email counts, Amazon SES once you pass 100,000 emails a month and have an engineer. For scale, take 100,000 emails a month: Mailgun Scale is $90, Resend Pro $35, SendGrid Pro $89.95 with a dedicated IP, and Amazon SES about $10 before any dedicated IP. One row per provider: free tier on the left, first paid plan and migration path on the right.

Free tierFirst paid plan and migration
MailgunWhere you start100 emails a day, 1 day of logs, 1 domainBasic $15 (10,000), Foundation $35 (50,000), Scale $90 (100,000)
PostmarkTransactional100 emails a month, no overageBasic $15 (10,000 emails); official Mailgun migration guide
Amazon SESVolumeSandbox, up to $200 in AWS credits$0.10 per 1,000; sandbox exit within 96 hours
ResendDevelopers3,000 emails a month, 100 a dayPro $20 (50,000 emails); DKIM, then swap the API
SendGridHigh volume60-day trial onlyEssentials $19.95 (50,000); dedicated IP on Pro
BrevoAll-in-one300 emails a day, API and SMTPStarter from $9; webhooks and suppressions to redo
MailjetSame parent as Mailgun6,000 emails a month, 200 a dayEssential $19; different API to rewrite
MailerSendLow budget500 emails a month, 1 domainHobby $7 (5,000), then $1.50 per 1,000

Entry prices before tax, as listed by each vendor in 2026, subject to change. Always check against your real monthly volume.

Migration plan

Migrate off Mailgun in eight steps

Order matters. Each step protects something: your sender reputation, your recipients' consent, and the emails your app can never miss.

01

Inventory everything Mailgun does for you

Day 1

List every sending domain, API key, webhook endpoint, inbound route and stored template. Note each domain's region too: a domain created in the EU region uses api.eu.mailgun.net, not the US endpoint.

Inbound routes and address validation don't always have a match at the destination. Find out before you sign.

Time
half a day
Risk if rushed
a forgotten inbound route
02

Open the new account and lift its limits

Day 1

Open the destination account before you touch code. On SES, request production access right away: approval can take up to 96 hours, and until then you can only send 200 a day to verified addresses. Postmark also reviews accounts before high-volume sending.

Choose your sending region now. On Mailgun a domain's region can't be changed after creation; you have to delete and recreate it. Don't repeat that mistake.

Lead time
up to 96 hours on SES
Risk if rushed
blocked cutover
03

Publish new DNS records, keep the old ones

Day 2

Add DKIM and, where offered, a custom Return-Path for the new provider (in Postmark, under DNS Settings). Update SPF to include both providers during the move. Leave Mailgun's records in place until the cutover is done, so mail still leaving Mailgun stays signed.

Gmail and Yahoo require SPF, DKIM and DMARC from bulk senders, one-click unsubscribe, and a complaint rate under 0.30%. Check all three records before your first send.

Time
an hour plus propagation
Risk if rushed
spam folder
04

Export the suppression list and import it

Day 2

Mailgun stores suppressions per domain: bounces, complaints, unsubscribes. Export them as CSV domain by domain, or all at once with the get_suppressions.py script Mailgun publishes on GitHub. Import them into the new provider through its API before any send.

This is the step people skip. Without it, you mail dead addresses and past complainers on day one and burn a brand-new reputation. Postmark handles suppressions per stream and doesn't document a bulk import, so check with their support.

Files
one export per domain
Risk if rushed
complaints on day 1
05

Adapt your code to API differences

Days 3 to 4

Every provider has its own limits. Postmark doesn't support port 465 or raw MIME, caps messages at 10 MB and 50 recipients (25 MB on Mailgun), and has no scheduled delivery, so o:deliverytime needs a queue on your side. Templates are API-managed only.

The Reddit tip worth repeating: own your templates in code. Switching providers then means switching API clients, not redesigning emails.

Time
one to two days
Risk if rushed
rejected attachments
06

Rewire the webhooks

Day 4

Webhooks tell your app when an email is delivered, bounces or draws a complaint, and each provider names them differently. To Postmark: delivered becomes Delivery, failed becomes Bounce, complained becomes Bounce plus Subscription Change, and opened, clicked and unsubscribed have their own equivalents. Fields change too: message-id becomes MessageID, event becomes RecordType.

Fire each event type with an address that bounces on purpose before cutover.

Events
6 to remap
Risk if rushed
unhandled bounces
07

Shift traffic in stages and warm the IP

Weeks 1 to 2

Don't move 100% of traffic on day one. Start with a slice and grow it. A new account has no history; the Ghost threads show what happens to people who send everything at once. Send in batches, not one wave.

A dedicated IP warms up gradually. Mailgun recommends one from 100,000 emails a month and suggests keeping shared IPs during warm-up. No vendor publishes an official day-by-day schedule, so watch bounces and complaints at each stage.

Time
one to two weeks
Dedicated IP threshold
100,000 emails/month
08

Keep Mailgun open, then shut it down cleanly

Month 1

Drop Mailgun to the free plan rather than closing it: a scheduled job or an old service may still call it. Watch the last sends for a few weeks, then remove its DNS records and revoke its API keys.

Don't leave a live key in a repo "just in case". It's an open door to your sending domain.

Time
a few weeks
Risk if rushed
a forgotten API key

Is your tool missing from this page? Email us: hello@hackceleration.com

Migration pitfalls

What makes a Mailgun migration go wrong

The same mistakes repeat across forum threads. None of them is truly technical. They're oversights, and each costs more deliverability than the time it would have taken to avoid it.

Sending without the suppression list

Mistake number one. The new provider doesn't know your bounces or complaints, so it mails them again. Import each domain's suppressions before the first send.

Pulling Mailgun DNS too early

Mail still leaving Mailgun without a valid DKIM signature goes to spam. Keep both providers in SPF and both DKIM keys live until cutover is complete.

Moving everything in one day

A new account blasting your full volume looks like a spammer. Ramp in stages, send in batches, and keep shared IPs until a dedicated one is warm.

Forgetting the SES sandbox

Everything's coded, and on launch day SES won't send to your customers because you're still in the sandbox at 200 emails a day to verified addresses. Request the exit at least a week ahead.

Ignoring API differences

A 15 MB attachment worked on Mailgun and gets rejected by Postmark. A scheduled send never goes out. List every Mailgun parameter your code uses and check each one at the destination.

Comparing prices without your real volume

Entry prices say little about your bill. Price it at your real volume, dedicated IP included if you need one. Our rankings of transactional email services and email APIs for developers go deeper, and SendGrid alternatives looks at the same field from another angle. Leaving a marketing tool too? See switching from Mailchimp.

  • Inventory of domains, API keys, webhooks, inbound routes and templates
  • Sending region chosen, SES sandbox lifted
  • DKIM and Return-Path published, SPF covering both providers
  • Suppressions exported per domain and imported
  • Code adapted: port, attachment size, scheduled sends
  • Webhooks remapped and checked with a bouncing address
  • Traffic moved in stages, dedicated IP warmed
  • Mailgun kept on free, then DNS and API keys removed
FAQ · 8 questions

Mailgun alternatives: frequently asked questions

  • Is Mailgun still free?

    Yes. The Free plan sends 100 emails a day, with one domain, one inbound route, one user and one day of logs. Plenty of sites say otherwise. Going over 100 a day can get the account disabled, so don't treat it as a soft limit.

  • What is the cheapest Mailgun alternative?

    Amazon SES at $0.10 per 1,000 emails with no subscription: about $10 for 100,000 emails versus $90 on Mailgun Scale. The hidden cost is engineering time, from bounce notifications to the sandbox exit.

  • Mailgun vs SendGrid: which is better?

    SendGrid if you want a dedicated IP included (Pro, $89.95 for 100,000 emails) and marketing campaigns in the same account. Mailgun if you depend on inbound routes or address validation. On entry plans, both put you on shared IPs. See our SendGrid review.

  • Is Resend better than Mailgun?

    For most new SaaS projects, it's the better deal: 3,000 free emails a month versus 100 a day, 30 days of logs, and $35 for 100,000 emails versus $90. Mailgun still wins if you need inbound routing or address validation.

  • How do I migrate webhooks and suppressions?

    Export suppressions per domain as CSV, or via the get_suppressions.py script on Mailgun's GitHub, and import them before your first send. For webhooks, keep your endpoint but add a translation layer: each provider renames events and fields (delivered becomes Delivery on Postmark).

  • Do I need a dedicated IP after leaving Mailgun?

    Not below 100,000 emails a month, the threshold Mailgun itself uses for warm-up. Below that, a well-run shared pool is fine. Above it, compare: $24.95 on SES, $30 on Resend, $50 on Postmark, $59 on Mailgun.

  • Are Mailjet and Mailgun the same company?

    Same parent, Sinch, sold side by side as Sinch Email. APIs, pricing and accounts are separate, so switching still means a real migration, just not a new owner.

  • Postmark or Resend to replace Mailgun?

    Postmark if inbox placement is the priority, with 45 days of logs. Resend if you want the bigger free tier and the lower price at 100,000 emails. Our Postmark review prices it at 50,000 emails.

Hack'celeration Labs

Get the next migration guide in your inbox

One tool to leave, one destination, one migration plan. Nothing else.

No spam. Unsubscribe in one click.