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.
Our ranking is editorial: a sponsored slot is always labeled on its card, and no affiliate link ever changes a score.
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.
You're leaving because… go to…
The right Mailgun alternative depends on what's pushing you out. Usually one line applies. Each card links to the full profile below.
Transactional only, separate streams, 45 days of logs from $15.
Your bill grows with every sendAmazon SES$0.10 per 1,000 emails, dedicated IP at $24.95 a month.
Your devs want a clean, modern APIResend3,000 free emails a month, then $20 for 50,000.
You want your own IP without running AWSSendGridDedicated IP included on Pro, $89.95 for 100,000.
You also send newslettersBrevo or MailjetTransactional and campaigns in a single account.
Small volume, almost no budgetMailerSend500 free emails, then $7 a month for 5,000.
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.
The tools
Postmark: when every transactional email has to land
Most reliable for transactionalWhy 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
Amazon SES: the cheapest option once volume grows
Cheapest at scaleWhy 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
Resend: the developer-first API
Easiest to build withWhy 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
SendGrid: high volume, with marketing on the side
High volumeWhy 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
Brevo: transactional API plus a full marketing suite
All-in-oneWhy 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
Mailjet: an exit that stays in the family
Transactional and campaignsWhy 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
MailerSend: the low-budget starter
Low budgetWhy 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
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 tier | First paid plan and migration | |
|---|---|---|
| MailgunWhere you start | 100 emails a day, 1 day of logs, 1 domain | Basic $15 (10,000), Foundation $35 (50,000), Scale $90 (100,000) |
| PostmarkTransactional | 100 emails a month, no overage | Basic $15 (10,000 emails); official Mailgun migration guide |
| Amazon SESVolume | Sandbox, up to $200 in AWS credits | $0.10 per 1,000; sandbox exit within 96 hours |
| ResendDevelopers | 3,000 emails a month, 100 a day | Pro $20 (50,000 emails); DKIM, then swap the API |
| SendGridHigh volume | 60-day trial only | Essentials $19.95 (50,000); dedicated IP on Pro |
| BrevoAll-in-one | 300 emails a day, API and SMTP | Starter from $9; webhooks and suppressions to redo |
| MailjetSame parent as Mailgun | 6,000 emails a month, 200 a day | Essential $19; different API to rewrite |
| MailerSendLow budget | 500 emails a month, 1 domain | Hobby $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.
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.
The steps
Inventory everything Mailgun does for you
Day 1List 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
Open the new account and lift its limits
Day 1Open 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
Publish new DNS records, keep the old ones
Day 2Add 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
Export the suppression list and import it
Day 2Mailgun 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
Adapt your code to API differences
Days 3 to 4Every 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
Rewire the webhooks
Day 4Webhooks 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
Shift traffic in stages and warm the IP
Weeks 1 to 2Don'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
Keep Mailgun open, then shut it down cleanly
Month 1Drop 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
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
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.
Get the next migration guide in your inbox
One tool to leave, one destination, one migration plan. Nothing else.