Tailkits product guide

Mailgun

Email API with US or EU hosting and inbound routes; $75 for 100,000 emails

FreemiumEmail
Visit Mailgun
Pricing
Freemium
Categories
Email
Listed
Sep 2026
Updated
Oct 2026

Details about Mailgun

Short verdict: Mailgun's strengths on every plan are a choice of US or EU hosting, which Postmark, Mailtrap and Loops lack, and inbound routes that pass incoming mail to your app. It costs $15 a month for 10,000 emails, $75 for 100,000 and $700 for 1 million: far above Amazon SES, below Postmark from 100,000 up. The first real send needs SMS verification, a card for your own domain and possibly a business review. It suits apps that need EU data residency or inbound email; if you want the lowest bill, the quickest sign-up or a published uptime record, look elsewhere.

How we reviewed it: We did not create an account or send email through Mailgun. On 21 October 2026 we set the pricing page's volume slider to 10,000, 100,000 and 1,000,000 emails and read the quickstart, SDK, MCP and sending docs. We also read the help-center articles on activation, sandbox limits and business verification, checked Mailgun's packages on npm and GitHub, and read 90 days of status-page history. Deliverability, delivery speed and the dashboard are untested. Prices are monthly in USD before tax, and comparisons use the figures from our other email API reviews.

What Mailgun costs and includes

Free plan$0: 100 emails a day (up to 3,100 a month), 1 custom domain, 1-day logs, 1 inbound route, 1 user. Without a card on file, sending is limited to the sandbox domain and 5 verified addresses.
10,000 emails a month$15 (Basic, 10,000 included)
100,000 emails a month$75 (Foundation 100k)
1,000,000 emails a month$700 (Scale 1M)
Before you send to customersEmail and SMS verification, a card on file for custom domains, SPF, DKIM, tracking CNAME and MX records, and possibly a business-verification review
RegionsUS or EU, chosen for each domain when you add it; it cannot be changed later
Sending and receivingREST API and SMTP on every plan, batches of up to 1,000 recipients, inbound routes (1 on Free, 5 on Basic, full routing from Foundation)
SDKs and AI toolsOfficial SDKs for Node.js, Python, PHP, Ruby, Go and Java; a local MCP server; a read-only CLI
Uptime commitment99.99% SLA on Foundation and Scale only. The status page publishes no uptime figure. Mailgun pricing

What we found in Mailgun's pricing, docs and status page

The cheapest plan changes at each volume

At 10,000 emails a month, Basic at $15 covers it exactly ($1.50 per 1,000). At 100,000, Foundation 100k at $75 is cheapest. Basic would cost $177 ($15 plus 90,000 extra emails at $1.80 per 1,000), and Scale 100k costs $90. At 1 million, Scale 1M costs $700, or $0.70 per 1,000; Foundation plus overage would cost $1,065. Foundation and Scale start with a free month, and there is no annual discount.

Mailgun pricing slider set to 100,000 emails a month: Basic $15 with 10,000 emails included, Foundation $75 and Scale $90 with 100,000 included
The pricing slider at 100,000 emails a month on 21 October 2026. We left out the Free card ($0, 100 emails a day) so the paid plans stay readable.

The plan also sets how far back you can look. Free and Basic keep logs for 1 day and store no messages. Foundation keeps 5 days and includes a dedicated IP at the 100k tier. Scale keeps 30 days and adds IP pools, SAML SSO, send-time optimization and phone support. Extra dedicated IPs cost $59 a month each, and messages sent in test mode are billed like real ones. Validation, inbox-placement tests (Optimize, from $49 a month) and client previews (Inspect, from $99) cost extra.

A phone, a card and possibly a review before real sending

Activation takes an email link and an SMS code to a mobile number; VoIP and landline numbers are refused. The Free plan needs no card, but without one you can only send from the sandbox domain, to at most 5 addresses that have confirmed by email. A card unlocks a custom domain, one on Free. That domain needs SPF, DKIM, a tracking CNAME and MX records; DNS can take 24-48 hours, and unverified domains are capped at 300 emails a day.

Mailgun's automated checks can also disable an account, or limit it to 100 messages an hour for example, until a business verification is approved: two forms, then a ticket decided by Mailgun staff. The flag may not relate to your own sending, and no turnaround time is published.

EU hosting is per domain and permanent

Every plan can put a sending domain in the EU. Its messages, logs, suppressions, routes and statistics stay there, while account details, API keys and domain names are global. The region cannot be changed later: to move, you export the domain's data, delete it and add it again, or start a new subdomain in the other region. EU domains use api.eu.mailgun.net, which you set in the SDK client, in the MCP server (MAILGUN_API_REGION=eu) and by hand in the quickstart samples. Templates are per region too.

Inbound routes on every plan

Routes match incoming mail by recipient or header, then forward it to an address or URL, store it, or stop. A URL ending in json receives the parsed message, attachments included, as one JSON document; other URLs get form fields. Mailgun adds its SPF and DKIM results to each message. Free gets 1 route and Basic 5. Storing messages takes Foundation (1 day) or Scale (up to 7 days).

The quickstart skips the SDK

The quickstart promises a first email "in under two minutes" from the sandbox domain. Its Node.js tab ignores Mailgun's own mailgun.js package and calls fetch on the US address with a hand-built auth header. A note in step 2 points to a "Step 2B" that does not exist. The page never mentions the SMS check, the 5-recipient limit or the card.

Mailgun quickstart step 3 on the Node.js tab, showing a fetch call to api.mailgun.net with a hand-built Basic auth header, under a note that refers to a Step 2B
The quickstart's Node.js sample uses raw fetch and the US address instead of the SDK, and the note above it points to a step that is not on the page.

Reliability and developer experience

Mailgun's status page tracks the API, SMTP, delivery, inbound, logs and stats separately but shows no uptime percentage. In the 90 days to 21 October 2026 it logged 10 incidents:

  • Two critical EU outages took down the API, SMTP and delivery: 37 minutes on 27 August and 17 minutes on 4 September.

  • A Google Cloud outage on 20 August delayed logs, webhooks and a few sends.

  • US event logs were delayed for 7 hours 14 minutes on 31 August.

  • A denial-of-service attack degraded US click and open tracking on 10-11 August.

  • EU inbound routes were delayed three times.

From 14 to 17 August, Microsoft 365 rejected some mail with "5.7.511 Access denied, banned sender". The block came from Microsoft's side and SendGrid reported the same problem, but Mailgun posted its notice only after the fact, and customers had to resend the affected messages themselves.

Mailgun status history for August 2026 listing an EU Messaging Outage, US event log delays, a Google Cloud outage and Microsoft 365 delivery failures with a 5.7.511 banned sender error
August 2026 on Mailgun's status history: the EU outage, the 7-hour log delay, the Google Cloud incident and the Microsoft 365 notice posted after the fact.

Foundation and Scale carry a 99.99% monthly SLA, crediting 5% of the fee per 30 minutes beyond the allowance, up to 50%, if you open a ticket within 30 days.

PackageVersionSize and dependenciesnpm downloads, 28 Sep-4 Oct 2026
mailgun.js (SDK)14.1.0, 8 October 20261.75 MB unpacked; axios, base-64, url-join; TypeScript types included1,325,863
@mailgun/mcp-server2.1.3, 16 September 2026803 KB; MCP SDK, zod, js-yaml2,096
@mailgun/cli0.2.0, 15 September 2026277 KB; commander, chalk, ora, zod17

The SDK needs Node.js 18 or later; its GitHub repository has 552 stars and 7 open issues. The MCP server runs on your own machine with an API key and leaves out delete operations. The CLI is mostly read-only and does not send. Downloads are for 28 September to 4 October, as npm's counts for 6 and 13-15 October read zero. Mailgun MCP docs

What you still have to set up

  • Domain authentication. Add the SPF, DKIM, tracking CNAME and MX records. Automatic Sender Security rotates 2048-bit DKIM keys every 120 days by default; otherwise the form defaults to 1024-bit keys. Mailgun's list leaves out DMARC, so add that yourself.

  • Bounces and complaints. Subscribe webhooks to permanent_fail, complained and unsubscribed and check their HMAC signatures, so your user records match Mailgun's suppression lists.

  • Log storage. On Free and Basic, logs are gone after a day; keep the events your support team needs.

  • Templates. Mailgun stores templates with {{variable}} placeholders (100 per account, 40 versions each). To build them in code, use React Email or Maizzle.

Pros and cons

Pros

  • US or EU hosting on every plan, with messages and logs kept in the chosen region.

  • Inbound routes on every plan, including JSON posts with SPF and DKIM results.

  • $75 for 100,000 emails includes a dedicated IP.

  • Official SDKs in six languages, a typed Node.js SDK and a local MCP server without delete operations.

  • A 99.99% SLA with credits on Foundation and Scale.

Cons

  • SMS verification, a card for custom domains and a possible business review before real sending.

  • Basic overage costs $1.80 per 1,000, and Free and Basic keep logs for only a day.

  • 10 incidents in 90 days, including two critical EU outages, and no published uptime.

  • A domain's region can't be changed after you create it.

  • The quickstart skips the SDK and the EU address, and test-mode sends are billed.

How Mailgun compares

  • Amazon SES costs $16.38 for 100,000 emails and $163.84 for 1 million on its default plan, with five EU regions. Each region starts in a sandbox that takes a manual review to leave. Choose it if the bill matters more than setup time.

  • Postmark also costs $15 for 10,000, but $115 at 100,000 and $775 at 1 million, and has no EU hosting. Its free 100 emails a month need no card. Choose it for transactional-only sending outside the EU.

  • Mailtrap charges $30 for 100,000 emails, has a free tier of 4,000 a month and a separate testing sandbox, but hosts in the US only. Choose it around 100,000 emails a month if you don't need the EU.

See all email tools, including SendGrid, Loops and Cloudflare Email Service.

Who should use Mailgun

Use Mailgun if you need EU data residency or inbound email processing, accept $75 for 100,000 emails or $700 for a million, and can clear the SMS, card and verification checks before launch. Look elsewhere for the lowest price (Amazon SES), a free tier without a card (Postmark) or a published uptime record.

FAQ

Is Mailgun free?

Yes, with limits. The Free plan sends 100 emails a day with 1 custom domain, 1-day logs and 1 inbound route. Sign-up needs SMS verification of a mobile number, and without a card on file you can only send from the sandbox domain to up to 5 verified addresses.

How much does Mailgun cost for 100,000 emails a month?

$75 a month on the Foundation 100k plan, as of 21 October 2026. Staying on Basic with overage would cost $177, and Scale 100k costs $90. For 10,000 emails Basic costs $15, and for 1 million Scale costs $700.

Can Mailgun keep my data in the EU?

Yes, on every plan. You choose US or EU for each sending domain when you add it, and its messages, logs and suppressions stay in that region; account details, API keys and domain names are global. The region cannot be changed later, and EU domains use the api.eu.mailgun.net address.

Why is my new Mailgun account limited or disabled?

Mailgun's automated checks can put an account on probation, for example limited to 100 messages an hour, until it passes business verification: two forms and a support ticket reviewed by Mailgun staff. Mailgun publishes no turnaround time, so allow for it before a launch.

Does Mailgun have an MCP server?

Yes. The official @mailgun/mcp-server runs locally with your API key and covers sending, domains, stats, templates, suppressions and routes, without delete operations. Set MAILGUN_API_REGION to eu for EU domains. Mailgun's CLI is mostly read-only and does not send email.