SendOps

Guide

Amazon SES vs Mailgun: the honest comparison

Amazon SES and Mailgun are both developer-first email providers, which makes this a closer stylistic match than SES vs the big marketing platforms. The difference is what sits around the API: SES is raw sending infrastructure at $0.10 per 1,000 emails with almost no tooling, while Mailgun wraps a comparable API in logs, analytics, inbound parsing, and support — at roughly 10x the price at volume. This guide compares them on pricing, deliverability, developer experience, tooling, inbound email, and support.

At a Glance

The verdict in one card

The one-paragraph version, before the detail: both are solid, developer-oriented providers, and each wins decisively on a different axis.

Amazon SES wins on

  • Price. $0.10 per 1,000 emails — roughly 10x cheaper than Mailgun at 1M/month.
  • Ownership. Your AWS account, your reputation, your event data — with retention you control, not a 30-day cap.
  • Scale economics. Linear pay-as-you-go pricing with no plan brackets or overage rates.

Mailgun wins on

  • Inbound email. Best-in-class inbound parsing and routing — SES inbound is far more DIY.
  • Out-of-box tooling. Message logs, an analytics UI, and validation without building anything.
  • Onboarding & support. Sending within the hour, an EU region on every plan, and humans to email when things break.

In short: Mailgun is what SES would look like with a product team wrapped around it — and the wrap costs roughly 10x at volume. The rest of this guide breaks down whether that wrap is worth it for your situation.

Pricing

What each actually costs at 10k, 100k, and 1M emails

SES charges $0.10 per 1,000 emails, pay as you go, plus $0.12 per GB of attachments. Mailgun sells tiered plans: Basic at $15/month for 10,000 emails, Foundation at $35/month for 50,000, and Scale at $90/month for 100,000, with overage at $1.10 per 1,000 on Scale. List prices as of July 2026 — verify current rates on each provider's pricing page.

Monthly volume Amazon SES Mailgun
10,000 emails ~$1 Basic — $15/mo
100,000 emails ~$10 Scale — $90/mo
1,000,000 emails ~$100 ~$1,080/mo (Scale + $1.10/1k overage)

List prices as of July 2026. SES figures are send costs only; the Mailgun 1M figure assumes the Scale plan plus 900,000 overage emails at $1.10 per 1,000 — custom enterprise pricing may land lower. Both providers adjust pricing over time.

The fine print on both sides. SES has optional add-ons: a dedicated IP at $24.95/month (or managed dedicated IPs from $15/month) and Virtual Deliverability Manager at $0.07 per 1,000 emails — even fully loaded, 1M emails stays in the low hundreds. New AWS accounts get a free tier of 3,000 messages per month for the first 12 months. On the Mailgun side, the plan price genuinely includes things SES doesn't have — log retention, an analytics UI, inbound routes, support — so the comparison isn't like-for-like. But the arithmetic at 1M/month is stark: roughly $100 vs ~$1,080, an order of magnitude, every month.

For the complete SES cost model — attachments, dedicated IPs, VDM — see our Amazon SES pricing breakdown.

Deliverability

Two different deliverability models

Neither provider "has" better deliverability in the abstract — inbox placement is dominated by your own authentication, list quality, and engagement. What differs is how much scaffolding each puts under you.

SES: deliverability is what you make of it

Shared IP pools by default, dedicated IPs if you want them, and your domain reputation as the asset you build and protect. SES enforces bounce and complaint thresholds strictly and will pause bad senders, but coaching isn't part of the deal — monitoring, warm-up, and list hygiene are yours, with Virtual Deliverability Manager ($0.07/1k) as an optional insights layer.

Mailgun: guided, with services on top

Shared or dedicated IPs depending on plan, domain verification walkthroughs, an email validation API to keep bounce rates down, and paid deliverability services (under the Sinch umbrella alongside Mailjet and InboxReady) when you want experts involved. The scaffolding is real; so is the fact that on shared IPs your neighbors' behavior touches your reputation, same as any shared pool.

A well-run SES setup and a well-run Mailgun setup deliver comparably; Mailgun reduces the chance of early mistakes, SES hands you full control and full responsibility. Going the SES route? Our Amazon SES deliverability guide covers authentication, warm-up, and the reputation thresholds that get accounts paused.

Developer Experience

API, SDKs, and the first-send experience

This is the closest category. Mailgun built its reputation on being the developer's ESP, and SES is as developer-centric as AWS gets. Both offer HTTP APIs, SMTP, and SDKs for the mainstream languages.

Mailgun is the smoother start: sign up, verify a domain, grab an API key, and send with a single form-encoded POST. Webhooks for deliveries, bounces, opens, and clicks are configured in the UI. Batch sending with per-recipient variables, scheduled delivery, and tagging are all first-class API features. The API's ergonomics are a big part of why developers recommend it.

SES asks more of you up front: AWS credentials and IAM policies instead of an API key, SigV4 signing (handled by the SDKs), and event delivery you wire yourself through SNS or Firehose rather than a webhook checkbox. Every account also starts in the sandbox — 200 emails/day to verified recipients only — until a production-access request is approved, which takes hours to days. Our SES setup guide walks through the whole path, including writing a sandbox-exit request that gets approved first time.

The counterweight, as ever: if your stack already lives on AWS, SES's shape is a feature. IAM roles instead of long-lived keys, CloudWatch metrics, Terraform/CDK-managed configuration, and event streams that plug straight into the rest of your infrastructure. Mailgun is easier to start; SES is more coherent to operate inside an AWS estate.

Tooling & Analytics

What you get out of the box

Here the plan price earns its keep. Mailgun ships a working observability layer; SES ships event streams and wishes you well.

Capability Amazon SES Mailgun
Message logs None built in — you store events yourself (retention is whatever you build) Searchable logs in the UI and API (plan-dependent retention, 30 days max)
Analytics dashboard Minimal console — quotas and reputation metrics Deliveries, opens, clicks, bounces charted per domain and tag
Templates API-managed only; no visual editor Template storage with versioning, plus a builder UI
Email validation Not offered — third-party or DIY Validation API (metered add-on)
Marketing campaigns Not a feature — build or buy separately Not core either — Sinch points marketers to Mailjet

Two honest caveats, one per column. On SES, "you store events yourself" means answering "what happened to the receipt we sent order #4521?" requires an SNS topic, a datastore, and a query layer that you build and run. On Mailgun, the logs you're paying for expire — 30 days at most. If compliance or debugging ever needs older history, you're exporting to your own storage anyway, at which point you've built half the SES pipeline while paying Mailgun prices.

Inbound Email

Inbound: Mailgun's clearest win

If your product receives email — reply-by-email in a support tool, email-to-ticket, forwarding addresses, parsing invoices out of inboxes — this section may decide the whole comparison, and it goes to Mailgun.

Mailgun inbound routes

Point MX records at Mailgun, define routing rules (match recipient, match header, catch-all), and Mailgun parses each message — headers, plain text and HTML bodies, stripped quoted replies and signatures, attachments — and POSTs structured JSON to your webhook. Widely regarded as best-in-class; parsing email MIME yourself is misery, and Mailgun makes it someone else's problem.

SES inbound receiving

SES email receiving is real but raw, and available in a subset of regions. Receipt rules can drop the message into S3, trigger a Lambda, or publish to SNS — as unparsed MIME. Extracting bodies, stripping reply chains, and handling attachments is code you write (or a Lambda layer you maintain). Entirely workable, genuinely DIY.

The pragmatic pattern some teams land on: send through SES, receive through a specialized inbound service. Splitting providers by direction is unglamorous but sound — outbound volume is where the 10x price difference lives, and inbound volume is usually a small fraction of it.

Support & Operations

Support, scaling, and lock-in

Support. SES has no product-specific support channel — without a paid AWS support plan you're on documentation and forums, and sandbox exits, quota increases, and account reviews all route through AWS's generic support machinery. Mailgun includes ticket support on paid plans, with faster response tiers as you move up. If nobody on the team has run production email before, having a human to escalate to is worth real money.

Scaling and limits. Both scale far beyond what most products need. SES starts you at a modest quota that grows with clean sending (see our sending limits guide); Mailgun scales by plan and custom contract. Data residency is a wash: Mailgun offers an EU region on all plans, and SES runs natively in EU regions like Ireland and Frankfurt.

Lock-in. Structurally lighter on SES: your domain, DNS, reputation, and event data live in your own AWS account, and leaving means repointing an API. Mailgun is only moderately sticky — it's an API-first product without a deep marketing suite — but your message logs stay behind (30-day retention means no long export anyway), templates need migrating, and routing rules need rebuilding. The 30-day log cap cuts both ways: it limits what Mailgun holds of yours, and it limits what you can take with you.

Who Picks Which

An honest rubric

Pick Amazon SES if…

  • Your volume is (or will be) high enough that a ~10x price gap is a line item, not a rounding error.
  • You're already on AWS and want email under the same account, IAM, and infrastructure-as-code.
  • You need event retention beyond 30 days — compliance, auditing, long-tail debugging.
  • Inbound email is minor or absent in your product, or you're happy to handle it separately.

Pick Mailgun if…

  • Inbound email parsing is core to your product — this alone can justify the price.
  • You want logs and analytics working on day one without building an event pipeline.
  • You need to send today and can't wait out an AWS sandbox-exit request.
  • Your volume sits comfortably inside a plan tier, where $15–90/month buys a lot of convenience.

The common trajectory mirrors the SendGrid story: start on Mailgun for the convenience, migrate outbound to SES when the overage line on the invoice gets uncomfortable. If your growth curve makes that migration likely, it's cheaper to start where you'll end up.

The Real Trade

The real trade is price vs tooling — unless you close the gap

Boil the comparison down and it's this: SES sends your email for ~$100 per million; Mailgun sends it for ~$1,080 and includes the logs, the analytics UI, and the support. The tooling is the product. But the tooling doesn't have to come from your sending provider — it can sit on top of SES instead of replacing it.

That's the layer SendOps provides. It connects to your own SES account and adds dashboards, per-message analytics with retention you're not racing against, a template editor, audiences, broadcasts, and automation — for a flat $0–$149/month, while every email still bills at your SES rates. At 1M emails a month that's roughly $100 in SES send costs plus a flat platform fee, against ~$1,080 of blended platform pricing — with your reputation and data staying in your AWS account.

Comparing SendOps itself to Mailgun? That's a different comparison — see SendOps vs Mailgun. And for the full picture of running marketing email on SES, see email marketing with Amazon SES.

FAQ

Frequently asked questions

Is Amazon SES cheaper than Mailgun?

By roughly an order of magnitude at scale. SES charges $0.10 per 1,000 emails as of July 2026: 10,000 emails cost about $1, 100,000 about $10, and 1 million about $100. Mailgun's plans run $15/month for 10,000 emails (Basic), $90/month for 100,000 (Scale), and about $1,080/month at 1 million once the $1.10 per 1,000 overage rate kicks in. That's roughly 10x at the top end. Mailgun's price buys real things — logs, analytics, inbound parsing, support — but the raw sending is far cheaper on SES.

Does Mailgun handle inbound email better than SES?

Yes, and it's Mailgun's standout feature. Mailgun's inbound routes parse incoming mail into clean JSON — headers, body, stripped signatures, attachments — and POST it to your webhook with flexible routing rules. SES can receive email too, but it hands you the raw MIME message via S3, SNS, or Lambda and leaves the parsing to you. If inbound email processing is central to your product, Mailgun's offering is meaningfully better out of the box.

Does Amazon SES have an EU region for data residency?

Yes. SES runs in multiple EU regions (such as eu-west-1 in Ireland and eu-central-1 in Frankfurt), and your sending and event data stay in the region you choose. Mailgun also offers an EU region on all plans. Both providers can satisfy EU data-residency requirements — with SES you pick the region per AWS account setup, with Mailgun you select the EU environment when creating your domain.

How long does Mailgun keep logs, and how does SES compare?

Mailgun retains message logs for a plan-dependent window, capped at 30 days on its highest standard tiers as of July 2026 — after that, the history is gone. SES keeps no per-message history at all: you stream events out via SNS or Firehose and store them yourself, which means retention is whatever you build — a week, a year, forever. Mailgun gives you logs instantly but temporarily; SES gives you nothing by default but unlimited retention if you wire it up.

Can I get Mailgun-style logs and analytics on Amazon SES?

Yes, two ways. DIY: publish SES events to SNS or Firehose, store them in a database, and build your own search and dashboards — flexible, but real engineering work. Or use a platform like SendOps, which connects to your own SES account and provides per-message history, engagement analytics, templates, audiences, broadcasts, and automation for a flat $0–$149/month, while your emails still bill at SES's $0.10 per 1,000 rate.

Get Started

SES prices. Mailgun-grade visibility.

Connect your own SES account and get logs, analytics, templates, broadcasts, and automation on top — flat pricing, your SES rates, free to start.