In-depth two-product comparison
Mailgun vs Amazon SES
A practical Mailgun and Amazon SES comparison for B2B SaaS teams, covering APIs, inbound mail, deliverability, access, prices, and migration.
Last updated: 2026-10-09
Short answer
Pick Mailgun when a B2B SaaS team wants a focused developer product with inbound routes, email validation, searchable logs, and a managed operational surface. Pick Amazon SES when the platform team already runs AWS and wants email delivery beside IAM, configuration sets, CloudWatch, SNS, and existing deployment controls. Mailgun lists Foundation at $35 per month for 50,000 emails after the first month and Scale at $90 per month for 100,000 emails after the first month. Amazon SES lists Essentials at $0.16 per 1,000 emails and Pro at $0.22 per 1,000 emails for the 0–10 million range; Pro also lists $105 per account per region per month. For a team sending 250,000 monthly messages, SES Essentials arithmetic is 250 × $0.16 = $40. Mailgun is the more complete managed workspace; SES is the lower usage charge when your engineers will build the surrounding system.
Mailgun
Managed developer email with routes, validation, and operational logs
Amazon SES
AWS-native sending primitives priced by each 1,000 emails
Both products are infrastructure for application email. Keep consent, suppression, template ownership, and message history in company systems, then use the provider for delivery and operational signals.
Quick comparison
| Decision area | Mailgun | Amazon SES | What to verify |
|---|---|---|---|
| Best fit | Product and platform teams that want managed email operations | AWS teams that will own IAM, events, dashboards, and runbooks | Name the owner for identity, bounce handling, suppression, and launch approval. |
| Published entry | Foundation: $35/mo after the first month for 50,000 emails | Essentials: $0.16 per 1,000 emails for 0–10M/mo | Use the same volume and include fixed account, IP, or AWS service charges. |
| Developer sending | REST API and SMTP relay with tags, templates, and webhooks | SES API and SMTP with AWS credentials and regional endpoints | Map credentials, retries, template ownership, and message identifiers. |
| Inbound mail | Routes can parse inbound messages and forward or store them | Receiving rules connect mail to AWS destinations and application code | Document recipients, storage, scanning, and response ownership. |
| Validation | Optimize add-ons provide real-time and bulk validation | No built-in validation product; add another service or build a flow | Decide where signup and list hygiene checks happen before migration. |
| Deliverability | Managed analytics, logs, suppression, and plan-based retention | Virtual Deliverability Manager plus customer-owned event operations | Assign a person to review complaints, bounces, authentication, and reputation. |
| Access model | Mailgun users, API keys, domains, and account controls | IAM roles, policies, identities, accounts, and regions | Test least-privilege sending from each environment before launch. |
| Onboarding gate | Verify a sending domain and select a region and plan | New accounts start in the sandbox and need production access | Put DNS, identity review, quota approval, and a test recipient on the schedule. |
The listed numbers describe different operating models. Mailgun bundles more managed workflow around a monthly plan; SES exposes a low usage meter and leaves more surrounding work to the AWS team.
Feature comparison
| Feature | Mailgun | Amazon SES |
|---|---|---|
| API shape | Mailgun provides a REST API for messages, domains, templates, tags, events, and account operations. | SES provides regional APIs and SDKs; the application supplies the surrounding message model and controls. |
| SMTP path | SMTP relay is available beside the API for older services and appliances. | SES SMTP credentials support legacy clients, but region selection, IAM boundaries, and rotation remain AWS work. |
| Templates | Mailgun templates and variables can be managed with application code choosing a named version. | SES templates are delivery primitives; versioning, approvals, preview, and editor workflow belong to your team. |
| Event stream | Mailgun events and webhooks provide a focused path for delivery, bounce, complaint, and engagement processing. | Configuration sets route events to SNS, CloudWatch, or other AWS destinations that you must operate. |
| Inbound routes | Routes match recipients or message properties and can forward, post, or store parsed content. | SES receiving rules and receipt actions connect inbound mail to S3, SNS, Lambda, or other AWS processing. |
| Parsing boundary | Mailgun exposes sender, recipients, headers, body, and attachments to a route handler. | SES delivers receiving events and content to your chosen AWS path, so parsing, scanning, and retention are yours. |
| Email validation | Mailgun Optimize offers validation as an add-on for real-time and bulk use cases. | SES has no native validation product; use application checks or a separate specialist service. |
| Operational handoff | One account can keep outbound domains, inbound routes, validation, and logs near one another. | AWS gives building blocks, but the team defines how inbound, outbound, validation, and audit data join. |
| Logs | Retention is plan-based: Free and Basic list 1 day, Foundation 5 days, and Scale 30 days. | SES metrics and event destinations can feed CloudWatch or storage, with retention configured there. |
| Reputation view | Mailgun analytics and Optimize help inspect delivery signals and validation outcomes. | Virtual Deliverability Manager provides an AWS-native reputation view and recommendations. |
| Dedicated IPs | One is listed with Foundation 100k, Growth, and Scale; extra IPs are listed at $59 per IP per month. | SES has standard and managed dedicated IP choices; budget warm-up, allocation, and monitoring. |
| Suppression | Mailgun provides event and suppression signals, while your application remains the consent source of truth. | SES suppression and event destinations need an explicit integration with consent systems. |
| Credentials | Use scoped users and API keys by service, rotate them, and separate domain ownership from deployment. | IAM policies and roles can restrict SES actions by region, identity, configuration set, and environment. |
| Regional model | Mailgun lists US and EU sending regions from a single account. | SES identities, quotas, configuration sets, production access, and controls are regional AWS concerns. |
| Marketing surface | Mailgun is infrastructure rather than a campaign editor; connect a consented marketing system. | SES has no marketing UI, so campaign composition and scheduling need another system. |
| Incident response | A focused console and plan-based logs shorten message investigation within the retention limit. | AWS support and internal operators explain quota, IAM, identity, events, and reputation incidents. |
Pricing and operating cost
Mailgun
Mailgun lists Free at $0 per month for 100 emails per day; Foundation and Scale are free for one month before their listed paid prices.
Validation is an Optimize add-on and can add a separate usage line. Log retention changes by plan, so longer investigations may require exporting events. Extra dedicated IPs are $59 per IP per month, with warm-up and reputation work owned by the sender.
Amazon SES
Amazon SES lists a free plan for eligible new AWS customers for six months after account creation, and new accounts start in the sandbox.
Pro carries the listed $105 per account per region per month term. IAM, SNS, CloudWatch, S3, Lambda, storage, support, and data transfer can sit beside the email rate. A marketing interface, validation service, suppression workflow, and event ledger require engineering or another vendor.
| Tier or usage case | Mailgun | Amazon SES |
|---|---|---|
| Free or eligible access | Free: $0/mo Mailgun lists 100 emails/day, one custom sending domain, and 1 day log retention. | Eligible SES free plan Amazon SES lists six months of free-plan availability for eligible new AWS customers; sandbox and eligibility rules apply. |
| 50,000 monthly emails | Foundation: $35/mo Mailgun lists Foundation at $35 per month after the first month for 50,000 emails. | Essentials: $8.00/mo 50 × $0.16 per 1,000 emails = $8.00 under the listed 0–10M Essentials rate. |
| 100,000 monthly emails | Scale: $90/mo Mailgun lists Scale at $90 per month after the first month for 100,000 emails and 30 days of log retention. | Essentials: $16.00/mo 100 × $0.16 per 1,000 emails = $16.00 under Essentials. |
| 250,000 monthly emails | Scale: $215/mo Mailgun lists Scale at $215 per month for 250,000 emails on its pricing slider. | Essentials: $40.00/mo 250 × $0.16 per 1,000 emails = $40.00; attachments and adjacent AWS services are separate. |
| 100,000 emails with Pro terms | Pricing on request Mailgun does not list a matching Pro tier in the plan table; pricing on request. | Pro: $22.00/mo plus $105/account/region/mo 100 × $0.22 per 1,000 emails = $22.00. Amazon SES lists $105 per account per region per month for Pro. |
| Dedicated IP add-on | $59 per IP per month Mailgun lists extra dedicated IPs at $59 per IP per month; included-IP terms depend on plan. | $24.95 per standard IP per month Amazon SES lists standard dedicated IPs at $24.95 per month per IP; managed options use their own terms. |
Mailgun gives a developer team a managed email control plane
Mailgun, operated by Sinch, is shaped around the problems that appear after a product starts sending real messages: domain authentication, API delivery, SMTP compatibility, event inspection, inbound replies, and list hygiene. The REST API fits invitations, password resets, invoices, usage alerts, account notices, and sales-assist messages. SMTP keeps an older service moving while the application team replaces it. This lets a B2B SaaS group choose an integration surface per service instead of forcing a single rewrite on launch day.
The practical strength is the proximity of several operational tasks. A team can keep sending domains, routes, events, and logs under a Mailgun account, then give each service its own key and naming convention. That does not remove the need for an internal message ledger. Store the business event, template version, recipient consent state, provider identifier, and final outcome in your own systems. Mailgun should help an operator investigate a message; it should not be the only place where your company can explain why a renewal reminder was sent or suppressed.
Mailgun is useful where replies are part of the product. Inbound routes can match recipients or message properties and pass parsed content to an endpoint, forward it, or store it. A support workflow can turn replies into tickets, a procurement mailbox can attach a document to an account, and a sales response can return to the correct opportunity. Decide how to scan attachments, reject oversized messages, preserve headers, and protect personal data before enabling a public inbound address. The route is a delivery primitive, so your application still owns authorization and business rules.
Email validation is a material differentiator for teams that collect addresses in signup, invite, or import flows. Mailgun Optimize is an add-on for real-time and bulk validation. Use it before a list enters a campaign system, but keep a policy for disposable domains, role addresses, and an address that later bounces. Validation is not consent and it is not a guarantee of inbox placement; it is a quality signal that can reduce obvious delivery waste when joined to permission and suppression data.
Mailgun lists Foundation at $35 per month after the first month for 50,000 emails with 5 days of log retention, and Scale at $90 per month after the first month for 100,000 emails with 30 days of retention and 5,000 validations included. A team handling an incident weeks after it happened should export events to its own store rather than assume the plan log is an archive. Mailgun also lists one dedicated IP with Foundation 100k, Growth, and Scale, and $59 per month for each additional IP. A dedicated address needs authentication, warm-up, complaint review, and ownership before it becomes useful.
- Separate domains and API keys by product, environment, and message class.
- Keep an internal message ledger with consent, template, provider ID, and outcome.
- Design inbound route authorization, attachment handling, and retention before opening a reply address.
- Treat Optimize validation as a quality signal that complements consent and suppression.
- Export important events when plan retention is shorter than your support or audit period.
Amazon SES is a low-cost AWS building block
Amazon SES makes the most sense when the platform team already operates AWS as a production discipline. The service supplies API and SMTP delivery, identities, quotas, configuration sets, and regional controls. Your team supplies template storage, approvals, retries, event consumers, suppression, dashboards, incident procedures, and the handoff between application and communications owners. That division can be efficient for an AWS-native company, but it is a poor fit for a team expecting a campaign editor or finished marketing workspace.
IAM is the center of the SES operating model. Create roles that can send only through the intended region and configuration set, and keep deployment permissions distinct from message-sending permissions. Use temporary credentials where possible, rotate SMTP credentials, and test a denied action as well as an allowed one. Separate AWS accounts can isolate environments, while scoped roles may be enough for a smaller organization. The right boundary is the one that the on-call engineer, security reviewer, and finance owner can all describe without guessing.
New SES accounts start in the sandbox. Before production traffic, verify identities, describe the sending purpose, document recipient permission, set expected volume, and request production access. Add that request to the launch plan alongside DNS records and application deployment. A successful local test is not proof that a production sender is ready: the team still needs quota decisions, bounce and complaint handling, suppression, event delivery, and a clear owner for a rejected or delayed message.
Configuration sets bridge a send call and operational visibility. Attach a set to a message stream and route events to SNS, CloudWatch, or another destination, then make the consumer idempotent. Store raw and normalized events so support can connect a provider event to an invoice, invitation, or security notification. Name sets by environment, region, product, and class of mail. Virtual Deliverability Manager adds an AWS-native reputation view and recommendations, but it does not replace authentication, permission, suppression, or an incident runbook.
SES lists Essentials at $0.16 per 1,000 emails and Pro at $0.22 per 1,000 emails for 0–10 million emails per month. Pro also lists $105 per account per region per month. Those figures make the delivery meter attractive, but the meter is only one part of the service. A platform team must budget the event pipeline, storage, dashboards, support plan, validation, and any dedicated IP choice. SES has no marketing UI, so a growth team needs a separate campaign product or governed internal interface.
- Treat sandbox exit, identity verification, quota, and production access as launch dependencies.
- Use IAM roles and regional configuration sets with least privilege and explicit names.
- Make event consumers idempotent and retain enough data for support and incident analysis.
- Price AWS event, storage, support, and dedicated IP choices beside the email rate.
- Procure a separate marketing interface when campaign owners need editing and scheduling.
Which team should pick which service?
Choose Mailgun when the B2B SaaS has a small platform group and wants to reduce the amount of email infrastructure it must assemble. It fits a product with inbound replies, a signup or import flow that benefits from validation, multiple sending domains, or support staff who need a focused place to inspect delivery. Mailgun also suits a Rails, Django, or Node service that wants API and SMTP paths without adopting AWS concepts in every repository. The price is easier to forecast at listed 50,000, 100,000, and 250,000 email points, although validation and IP choices still deserve their own line.
Choose SES when the email path belongs inside an existing AWS platform. The team should already be comfortable with IAM, regions, CloudWatch, SNS, S3, Lambda, infrastructure-as-code, and the responsibility of building a durable event ledger. SES is compelling where volume is high and the organization can spread fixed engineering work across several products. A low per-1,000 charge does not make SES a campaign tool; there is no marketing UI and no native validation product.
A mixed decision is reasonable. Keep transactional mail on Mailgun for a product that needs inbound parsing and validation, while an AWS workload uses SES for a high-volume, narrowly controlled stream. If you split providers, define which system owns domain authentication, unsubscribe state, suppression, event normalization, and customer support. Two providers can reduce concentration risk, but they double the runbooks and sender reputations to monitor. Make the split visible in service configuration and finance reporting rather than letting teams choose silently.
- Mailgun fits managed operations, inbound replies, validation, and shorter implementation cycles.
- SES fits AWS-native platform teams with strong IAM and event-pipeline ownership.
- Use a split only when message classes have clear ownership and different operating needs.
Worked cost scenario: 250,000 emails each month
Assume a B2B SaaS sends 250,000 transactional and product messages every month, uses one sending domain, and does not add validation volume or a dedicated IP. Mailgun lists Scale at $215 per month for 250,000 emails on its pricing slider. The monthly Mailgun amount is therefore $215 before an add-on. If the team adds one extra dedicated IP, Mailgun lists $59 per IP per month, so the arithmetic becomes $215 + $59 = $274 per month.
Amazon SES Essentials lists $0.16 per 1,000 emails for the 0–10 million range. Divide 250,000 by 1,000 to get 250 billable units, then multiply: 250 × $0.16 = $40.00 per month. If the team selects Pro, the per-send arithmetic is 250 × $0.22 = $55.00, and Amazon SES lists an additional $105 per account per region per month. The Pro example is therefore $55 + $105 = $160 before other AWS charges. A standard dedicated IP is another line: Amazon SES lists $24.95 per month per IP, so Essentials plus one standard IP is $40 + $24.95 = $64.95 before adjacent services.
This arithmetic explains the tradeoff without pretending the products have the same operating scope. Mailgun’s $215 includes a managed product surface and listed Scale retention. SES’s $40 Essentials meter is attractive, but the team still needs an event destination, retention, IAM design, production access, suppression, validation, and any marketing interface. At this volume, compare the monthly invoice with engineering hours required to keep those systems healthy.
Migration notes: Mailgun to SES
Start with an inventory rather than changing the send call first. List every Mailgun domain, template, tag, event, webhook, inbound route, validation decision, suppression rule, and SMTP credential. Mark each item transactional, product communication, or marketing handoff. In SES, choose the target region, verify identities, create IAM roles, define configuration sets, and request production access. Keep a test identity and separate configuration set so an accidental production send is visible immediately.
Rebuild the event path before moving volume. Map Mailgun delivery, bounce, complaint, and engagement events to SES destinations and normalize both into the same internal schema. Replace webhook signature checks with AWS destination controls, make the consumer idempotent, and replay representative events in staging. If Mailgun inbound routes create tickets or attach replies to an account, design the SES receiving rule, S3 or SNS handoff, parsing, malware scan, and retention before changing MX records.
SES does not provide Mailgun’s Optimize validation product. Select a validation service, write an adapter, or accept a narrower pre-send check, then decide how its result is stored. Preserve business-level suppression during migration; a provider list is not a complete consent database. Convert templates and variables deliberately, including escaping, locale selection, attachment behavior, headers, tags, and unsubscribe links. Run a canary stream, compare outcomes, and only then move remaining traffic.
- Inventory Mailgun domains, templates, routes, events, keys, suppression, and validation use.
- Verify SES identities, choose a region, create IAM roles, and request production access.
- Build configuration sets, event destinations, normalization, retention, and alerting.
- Replace inbound routes and validation with tested AWS and application components.
- Canary a low-risk message class, compare events, then switch traffic with rollback ready.
Migration notes: SES to Mailgun
A move to Mailgun can shorten AWS-specific email code, but it is still a systems migration. Inventory SES identities, regions, configuration sets, templates, event destinations, IAM policies, receiving rules, S3 objects, SNS subscriptions, and Lambda consumers. Create Mailgun domains in the intended US or EU region, publish SPF and DKIM records, and verify them before changing application credentials. Keep SES available while the first Mailgun canary runs.
Translate configuration sets into Mailgun names for domains, tags, and webhooks. Replace SNS and CloudWatch consumers with an idempotent Mailgun event endpoint, preserving the internal schema so support and reporting do not change. Convert SES templates and rendering variables, including headers and attachments, then compare rendered messages. If a service uses SES receiving rules, create and test Mailgun routes before changing MX records; outbound cutover does not migrate inbound behavior.
Finally, choose the Mailgun plan and retention period that match support obligations. Foundation lists 5 days of logs, while Scale lists 30 days, so export older events if the company needs longer history. Check whether included or extra dedicated IPs make sense, and budget $59 per additional IP per month if required. Keep SES read-only until invoices, historic messages, and long-tail inbound senders have been accounted for.
- Inventory SES regional resources and preserve the internal event schema.
- Verify Mailgun domains, publish authentication records, and create scoped keys.
- Rebuild webhooks, templates, routes, validation policy, and suppression handling.
- Canary outbound and inbound traffic, comparing rendering and event outcomes.
- Switch DNS and application traffic, then retain SES for audit and rollback.
Pros and cons
Mailgun
Pros
- Developer API and SMTP relay
- Inbound routing and parsed message handling
- Optimize real-time and bulk validation
- Plan-based logs and focused analytics
- US and EU sending regions
- Clear Foundation and Scale volume points
Cons
- Higher listed monthly cost than SES Essentials
- Validation and extra IPs add charges
- Short retention on Free, Basic, and Foundation
- Marketing teams still need a campaign interface
- Dedicated IPs require sender-owned warm-up
Amazon SES
Pros
- Low Essentials usage rate
- IAM and AWS account integration
- Configuration sets and AWS events
- Virtual Deliverability Manager
- Regional infrastructure controls
- API and SMTP delivery
Cons
- Sandbox and production-access gate
- No marketing UI
- No native validation product
- Event and suppression work belongs to the team
- AWS support and adjacent costs need budgeting
- Regional IAM and quota design adds complexity
Who should choose what?
Product needs inbound replies
Support tickets and customer replies arrive through email.
Recommendation: Mailgun. Mailgun routes and parsed inbound payloads provide a focused starting point; SES receiving needs more AWS assembly.
AWS platform sends at high volume
The team already owns IAM, event consumers, and CloudWatch.
Recommendation: Amazon SES. SES Essentials keeps the delivery meter low and fits the existing operating model.
Signup hygiene is required
The product validates addresses before invites and imports.
Recommendation: Mailgun. Mailgun Optimize is a listed validation add-on; SES needs a separate validation design.
Marketing needs a visual workspace
A communications team expects campaigns and scheduling.
Recommendation: Mailgun. Neither is a full marketing suite, but Mailgun leaves less AWS infrastructure to assemble; budget a separate campaign product.
Security requires AWS-native roles
Sending must be controlled through regional IAM policies.
Recommendation: Amazon SES. SES is built around IAM, accounts, regions, and configuration sets.
The right choice follows ownership. Decide who responds to a bounce spike, sandbox block, failed inbound route, IAM denial, or expired log window before choosing the lower invoice.
Final verdict
Choose Mailgun if
- Inbound routes and replies matter
- You want validation near sending
- A managed console reduces AWS assembly
- Plan logs and analytics fit your operations
- You need API and SMTP without IAM everywhere
Choose Amazon SES if
- Your platform already runs AWS
- IAM and regional boundaries are requirements
- Low per-1,000 cost is the priority
- Your team will build event and suppression workflows
- You can procure marketing and validation layers
FAQ
Is Amazon SES cheaper than Mailgun?
At 250,000 monthly emails, Amazon SES Essentials arithmetic is 250 × $0.16 = $40. Mailgun lists Scale at $215 for that volume. SES has a lower delivery charge, while Mailgun includes a more managed operational surface; compare engineering, validation, event, support, and IP costs as well as the invoice.
Does Mailgun support inbound email?
Yes. Mailgun provides inbound routes that can forward, post, or store parsed messages. Design authorization, attachment handling, scanning, and retention. SES can also receive mail through AWS receiving rules, but the path is assembled from AWS destinations and code.
Does Amazon SES include email validation?
No native validation product is listed for SES. Use application checks or a separate validation service. Mailgun lists Optimize as an add-on for real-time and bulk validation.
What is the Mailgun dedicated IP price?
Mailgun lists extra dedicated IPs at $59 per IP per month. Its pricing page also lists one dedicated IP with Foundation 100k, Growth, and Scale. Warm-up, authentication, complaint monitoring, and sender ownership remain your responsibilities.
What does SES Pro cost?
Amazon SES lists Pro at $0.22 per 1,000 emails for 0–10 million emails per month and $105 per account per region per month. At 100,000 emails, usage arithmetic is 100 × $0.22 = $22 before the fixed term and other AWS charges.
Which service is easier to migrate to?
Mailgun is usually shorter when the team wants API, SMTP, routes, validation, and managed logs together. SES is natural for an AWS platform team, but plan for sandbox exit, IAM, configuration sets, event consumers, suppression, and replacements for validation and marketing UI.