Mailgun Pricing 2026: Free Tier, Plans and Overages
Mailgun’s free plan sends 100 emails a day. Basic is $15 a month for 10,000 emails, Foundation is $35 for 50,000 (or $75 for 100,000), and Scale runs from $90 for 100,000 to $1,250 for 2.5 million. Above that, Enterprise is a quote.
Overage costs $1.80 per 1,000 on Basic, falling to $0.40 on the biggest Scale tier, and you can’t switch it off.
The quick answer: if you send receipts, password resets and alerts, Foundation at $35 is Mailgun’s sweet spot, and Foundation 100K at $75 is the best deal on the page. If your app has to receive mail and answer it (an AI agent, a support desk, anything with a reply loop), CarlyEmail is built for that: real inboxes with threads assembled for you and mail kept until you delete it. It’s free for 3 inboxes and 1,000 emails a month, then $20 a month for 25 inboxes.
Every Mailgun number below comes from Mailgun’s live pricing page (including the plan data embedded in it) and its help center, checked October 2, 2026. All prices are monthly in USD.
Mailgun Send pricing
Mailgun Send is the email API and SMTP relay. You pick a plan by monthly volume, and on paid plans anything past it is billed at that tier’s overage rate.
| Plan | Price | Emails / month | Extra emails (per 1,000) |
|---|---|---|---|
| Free | $0 | 100 a day | not available |
| Basic | $15/mo | 10,000 | $1.80 |
| Foundation | $35/mo | 50,000 | $1.30 |
| Foundation | $75/mo | 100,000 | $1.10 |
| Scale | $90/mo | 100,000 | $1.10 |
| Scale | $215/mo | 250,000 | $0.90 |
| Scale | $400/mo | 500,000 | $0.75 |
| Scale | $550/mo | 750,000 | $0.60 |
| Scale | $700/mo | 1,000,000 | $0.50 |
| Scale | $1,250/mo | 2,500,000 | $0.40 |
| Enterprise | Quote | 2.5M+ | Custom |
How the bill works:
- Monthly only. No annual toggle appears on the Send, Optimize or Inspect pricing pages. Prices are also listed in euros and pounds (Basic is €14 or £12).
- Overage can’t be turned off. Mailgun’s help center says so in as many words. Excess mail is billed on the 1st of the next month. If you upgrade before the month ends, the excess comes out of the new plan’s allowance instead.
- Trials. Foundation and Scale start with a free month. Basic has no trial.
- Downgrades wait. A downgrade is scheduled and takes effect at the next billing cycle, on the 1st.
- Legacy plans. Flex, the old pay-as-you-go plan, is retired, and Mailgun’s FAQ still mentions an older Growth plan. If you’re on one, your control panel’s billing page is the source of truth.
What each Mailgun plan includes
| Free | Basic | Foundation | Scale | |
|---|---|---|---|---|
| Daily sending limit | 100 | none | none | none |
| Custom sending domains | 1 | 1 | 1,000 | 1,000 |
| Inbound routes | 1 | 5 | full routing | full routing |
| Log retention | 1 day | 1 day | 5 days | 30 days |
| Message retention | none | none | 1 day | up to 7 days |
| Users | 1 | 1 | unlimited | unlimited |
| API keys | 2 | 2 | role-based keys | role-based keys |
| Dedicated IP | no | no | buyable at 50K, 1 included at 100K | 1 included, plus IP pools |
| Email validations | no | pay per use | pay per use | 5,000 included |
| Uptime SLA | no | no | yes | yes |
| SAML SSO | no | no | no | yes |
| Support | tickets | tickets | tickets | tickets, live chat, phone |
Every plan gets the REST API and SMTP relay, webhooks, templates, suppression management, mailing lists and SPF/DKIM/DMARC/BIMI, and you can send from Mailgun’s US or EU region. Subaccounts (separate accounts per customer) are Enterprise only.
The retention rows matter more than they look. On Basic, if a customer says “I never got the email” two days later, the log is already gone. Log retention is the delivery record; message retention is a stored copy of the email itself.
The Mailgun free tier, in detail
The free plan is permanent and needs no card, but there’s a catch the pricing page leaves out:
- Without a card on file, you can only send to authorized recipients. That means the sandbox domain (
sandboxXXXX.mailgun.org) and up to 5 addresses that each click a verification link. Adding a card unlocks the 1 custom domain, and with it, sending to anyone. - 100 emails a day, with no overage option.
- 1 inbound route, 1 day of logs, no stored message copies, 2 API keys, 1 user, ticket support.
It’s a good sandbox for wiring up an integration. For a product with real users, Basic is the floor.
Mailgun add-ons: validation, Optimize and Inspect
Email validation checks whether an address exists before you send to it. On Basic and Foundation it’s pay per use, priced per 100 checks:
| Validations in the month | Basic and Foundation | Scale |
|---|---|---|
| First 5,000 | $1.20 per 100 | included |
| Next 45,000 | $0.80 per 100 | $0.80 per 100 |
| Next 50,000 | $0.50 per 100 | $0.50 per 100 |
| Next 150,000 | $0.35 per 100 | $0.35 per 100 |
| Next 250,000 | $0.25 per 100 | $0.25 per 100 |
Mailgun Optimize is the deliverability product, billed separately from Send:
- Pilot, $49/mo: 2,500 validations and 25 inbox placement tests.
- Starter, $99/mo: 5,000 validations, 50 inbox placement tests, spam trap monitoring for 1 domain, blocklist monitoring for 1 IP and 1 domain, Google Postmaster Tools and Microsoft SNDS integration, and an email health score.
- Contract: custom. Extra inbox placement tests start at $0.75 each. Pilot and Starter start with a free month.
Mailgun Inspect (previews of your email across mail clients) is $99 a month for 1,000 previews or $199 for 2,000 plus accessibility, code, link and spam checks.
Extra dedicated IPs are $59 per IP per month. Mailgun’s own guidance is that a dedicated IP only makes sense once you consistently send 100,000 or more emails a month. Below that, a lone IP doesn’t send enough to build a reputation.
What Mailgun costs at real volumes
The cheapest way to reach each monthly volume with Mailgun’s published tiers and overage rates:
| Emails a month | Cheapest Mailgun setup | Monthly cost |
|---|---|---|
| 3,000 (100 a day max) | Free | $0 |
| 10,000 | Basic | $15 |
| 20,000 | Basic + 10,000 at $1.80 | $33 |
| 50,000 | Foundation 50K | $35 |
| 75,000 | Foundation 50K + 25,000 at $1.30 | $67.50 |
| 100,000 | Foundation 100K | $75 |
| 200,000 | Foundation 100K + 100,000 at $1.10 | $185 |
| 250,000 | Scale 250K | $215 |
| 500,000 | Scale 500K | $400 |
| 1,000,000 | Scale 1M | $700 |
| 2,500,000 | Scale 2.5M | $1,250 |
Three things fall out of that table:
- Basic stops being cheapest at about 21,000 emails. Past that, Basic plus overage costs more than Foundation’s $35, which also gives you 1,000 domains and 5-day logs.
- Foundation 100K beats Scale 100K by $15 and still includes a dedicated IP. With overage it stays cheaper than Scale up to about 227,000 emails a month.
- Scale earns its price through features, not volume: 30-day logs, up to 7 days of stored messages, 5,000 validations, SSO, IP pools and phone support. Pay for it when you need those.
Receiving email on Mailgun
Mailgun can receive mail through routes. A route matches incoming mail by recipient or header and then forwards it to a URL or another address, stores it temporarily, or stops processing. Free gets 1 route, Basic 5, Foundation and Scale full routing. A newer Forwards API handles the simple case (forward everything for support@ to a webhook) with wildcard patterns. If that pattern is new, email-to-webhook walks through it.
Mailgun parses inbound mail well, including a stripped-text field with the quoted reply chain removed. What it hands you is one POST per message, and the rest is your build:
- Threading is your code. Each inbound message arrives as its own record. Matching replies to conversations and keeping
In-Reply-ToandReferencesright on your answers is up to you. - History is short. Stored copies last none (Free, Basic), 1 day (Foundation) or up to 7 days (Scale). An agent that needs last month’s thread needs your own database behind the webhook.
- Spoof checks are headers you have to read. Inbound spam filtering is off by default. Turn it on and SPF and DKIM results arrive as MIME headers (
X-Mailgun-Spf,X-Mailgun-Dkim-Check-Result) that your handler must check. When an LLM reads the mail and follows instructions, a forged “from your CEO” email is an attack. - Per-customer isolation is Enterprise. Subaccounts aren’t on any self-serve plan.
When the mail has to come back: CarlyEmail
CarlyEmail is an email API for apps and AI agents that hold conversations. One API call creates a real inbox, at hello@carlyemail.com or on your own domain. Mail from Gmail, Outlook or anything else is received, threaded and stored, including the replies Outlook mangles, and your reply lands inside the thread.
import { CarlyEmail } from "carlyemail";
const carly = new CarlyEmail();
const inbox = await carly.inboxes.create({ username: "hello" });
const { messages } = await carly.messages.list(inbox.email);
await carly.messages.reply(inbox.email, messages[0].message_id, { text: "On it." });
Put the plans side by side for a two-way app:
| Mailgun Basic ($15) | Mailgun Foundation ($35) | CarlyEmail Startup ($20) | |
|---|---|---|---|
| Sends a month | 10,000 | 50,000 | 10,000; received mail isn’t counted |
| Inboxes | none; routes POST each message to you | none; routes POST each message to you | 25 real inboxes |
| Threading | your code | your code | assembled automatically |
| Stored copy of each email | none | 1 day | until you delete it, within 25 GB |
| Custom domains | 1 | 1,000 | 10 |
| Team seats | 1 | unlimited | 10 |
| Per-customer isolation | Enterprise subaccounts | Enterprise subaccounts | 5 pods, keys scoped per pod or inbox |
| Spoofed mail | headers to check, if filtering is on | headers to check, if filtering is on | separate message.received.unauthenticated event |
| At the limit | overage billed, can’t be switched off | overage billed, can’t be switched off | refused with a 429 naming the cap |
What you stop building:
- Events that resume the right conversation. Signed webhooks and WebSockets fire on arrival carrying a
thread_id, so Michael’s support agent picks up the thread where it left off. - Spoof filtering before your handler. Mail failing SPF, DKIM or DMARC arrives as
message.received.unauthenticatedand spam asmessage.received.spam, so a forged sender never reaches yourmessage.receivedcode. It’s kept and labelled, not dropped. - Tenant isolation on every plan. Pods give each customer their own space, and an API key can be scoped to one pod or one inbox. Another tenant’s mail returns 404.
- A human-in-the-loop guardrail the agent can’t argue past. A key with
draft_createbut notmessage_sendgets a 403 on send. The agent drafts, Claire approves. - Every interface your stack already speaks. REST, a TypeScript SDK (
npm install carlyemail), a Python SDK (pip install carlyemail), a CLI, and a hosted MCP server athttps://api.carlyemail.com/mcp. Guides cover LangChain, the OpenAI Agents SDK, the Claude Agent SDK, the Vercel AI SDK, Mastra and Cloudflare Agents. You keep your agent and your model key. - An agent can sign itself up. Paste this into any agent:
Read https://docs.carlyemail.com/llms.txt and set yourself up with an email address.Until you confirm a 6-digit code, the account can only email you.
CarlyEmail pricing: Free is $0 with no card: 3 inboxes, 1,000 emails a month (100 a day), 1 custom domain, 1 GB of storage. Startup is $20 a month for 25 inboxes, 10,000 emails, no daily cap, 10 domains and 25 GB. Business is $200 a month for 250 inboxes, 100,000 emails, 100 domains and 250 GB. Enterprise covers higher volume, a dedicated sending domain or custom terms. Every plan gets the whole API, there’s no “Sent via” footer even on free, and the free custom domain works without a card. Get started at carlyemail.com.
The honest scope line: if all you do is send receipts at volume, Mailgun is priced for that. Foundation’s 50,000 emails for $35 is more one-way mail per dollar than CarlyEmail offers, and Scale adds IP pools and an EU region for big senders. If mail has to come back and be answered, that’s what CarlyEmail is for, and plenty of teams run both: Mailgun for notifications, CarlyEmail for the agent’s inbox.
For the wider field, see Mailgun alternatives, SendGrid vs Mailgun, SendGrid pricing, Resend pricing, Amazon SES pricing and email APIs for AI agents.
FAQ
Is Mailgun free?
Yes. The free plan is permanent: 100 emails a day, 1 custom domain, 1 inbound route, 1 day of logs and 2 API keys, for a single user. Until you add a card, you can only send from the sandbox domain to up to 5 verified addresses. There’s no overage on free.
How much does Mailgun cost per month?
Basic is $15 for 10,000 emails. Foundation is $35 for 50,000 or $75 for 100,000. Scale runs from $90 for 100,000 to $1,250 for 2.5 million. Overage is $1.80 per 1,000 on Basic, $1.30 or $1.10 on Foundation, and $1.10 down to $0.40 on Scale.
What happens if I go over my Mailgun plan?
Mailgun keeps sending and bills the extra emails at your tier’s overage rate on the 1st of the next month. You can’t disable overage. Upgrading before the month ends moves the excess into the new plan’s allowance instead.
Does Mailgun offer annual pricing?
Not on its pricing pages. Send, Optimize and Inspect are listed as monthly prices with no annual toggle. Foundation and Scale include a free first month, and longer contracts go through Mailgun’s sales team as Enterprise.
How much is a dedicated IP on Mailgun?
One is included with Foundation 100K ($75) and Scale, and Foundation 50K can add one. Extra dedicated IPs are $59 per IP per month. Mailgun recommends one only if you consistently send 100,000 or more emails a month.
Can Mailgun receive email for an AI agent?
It can receive through routes, which POST each message to your endpoint, but threading, history beyond 1 to 7 days and spoof checks are yours to build. CarlyEmail gives each agent a real inbox with threads, signed events and mail kept until you delete it, free for 3 inboxes.
Give your agent a real inbox
Your agent gets its own email address. People can email it, it answers in the same thread, and your personal inbox stays out of it. Start with 3 inboxes, no card needed.
Get startedSee the prompt
Read https://docs.carlyemail.com/llms.txt and set yourself up with an email address.


