Mailgun vs SparkPost: $15 for 10,000 emails or for 50,000, and what the overage ceiling does
Mailgun Basic is $15 for 10,000 emails a month. SparkPost's cheapest paid row is $15 for 50,000. From there the gap widens: at 250,000 emails SparkPost Growth is $175 against $215 for Mailgun Scale, and at 500,000 it is $295 against $400. Mailgun answers with longer log retention on its top plan and a one-month free start on Foundation and Scale, while SparkPost pauses sending at five times your plan unless you arrange otherwise.
By Julian Pryor · Updated 7 Oct 2026
Short answer
If you send 50,000 to 500,000 transactional emails a month and price is the main filter, SparkPost's listed rows are lower than Mailgun's at every volume read: by $20 at 50,000 and $105 at 500,000. Choose Mailgun if you want US and EU sending from one account, inbound routing and email validation in the same product, a free first month on Foundation or Scale, or a dedicated IP included with Scale and not sold as an add-on at $24.95.
Cost at six volumes
Readings are from the two pricing pages on 7 October 2026. SparkPost's page shows one row per volume with a price and an effective rate per 1,000 emails; Mailgun's are plan prices read at its slider stops.
| Emails per month | Mailgun | SparkPost | Mailgun minus SparkPost |
|---|---|---|---|
| 10,000 | Basic, $15 | No row; first paid row is 50,000 at $15 | Level on price; SparkPost's $15 covers five times the volume |
| 50,000 | Foundation, $35 | Startup, $15 ($0.30 per 1,000) | $20 |
| 100,000 | Foundation, $75; Scale, $90 | Startup, $30; Growth, $80 ($0.80 per 1,000) | $45 on the lower plans, $10 on the top ones |
| 250,000 | Scale, $215 | Growth, $175 ($0.70 per 1,000) | $40 |
| 500,000 | Scale, $400 | Growth, $295 ($0.59 per 1,000) | $105 |
| 1,000,000 | Not read | Growth, $530 ($0.53 per 1,000) | No comparison |
The yearly gap at 500,000 emails is $105 times twelve, which is $1,260. Mailgun's effective rate per 1,000 emails is $0.70 at 50,000 ($35 divided by 50), $0.86 at 250,000 and $0.80 at 500,000, while SparkPost's Growth rate falls from $0.70 at 250,000 to $0.59 at 500,000 and $0.53 at a million. SparkPost's plan boundary is the oddity: the 100,000 row costs $30 on Startup and $80 on Growth, so crossing from Startup to Growth at the same volume adds $50 a month. Read what Growth adds on SparkPost's page before paying for it, because it is not a different number of emails.
SparkPost's own pricing page now sits under Bird's branding. The capture available on 7 October 2026 was covered by a privacy-choices dialog, so no image of it is shown here; the rows in the table are quoted from the page text: "Startup from $15 / month, 50K to 100K emails / month" and "Growth from $80 / month, 100K to 2.5M emails / month". Source: sparkpost.com/pricing.
Free plans, trials and entry limits
Mailgun's Free plan allows 100 emails a day, one custom sending domain and one day of log retention. Foundation and Scale each start with a free month, after which they bill $35 and $90. SparkPost's Free plan allows 1,000 emails a month with a 50-a-day cap. For a staging environment that is plenty either way. For production, the number to remember is Mailgun's 10,000-email allowance on Basic against SparkPost's 50,000-email floor on Startup: both are $15, so anyone sending between 10,000 and 50,000 pays $15 on SparkPost and $35 on Mailgun Foundation, while below 10,000 the choice comes down to features, not price.
Overage: two very different behaviours
Mailgun states per-1,000 overage rates on each card: from $1.80 on Basic, $1.30 on Foundation and $1.10 on Scale. Sending 60,000 emails on Foundation costs $35 plus 10,000 at $1.30 per 1,000, so $35 + $13 = $48. SparkPost bills extra sends separately and puts a hard stop on them: the default overage ceiling is five times your plan, and sends pause at that ceiling unless you agree different terms. For a product with a spiky send, such as a launch announcement, a pause is worse than a bill, so ask SparkPost to agree your ceiling in writing before the launch date.
Dedicated IPs
Mailgun includes one dedicated IP on Foundation 100k, Growth and Scale and charges $59 a month for each extra, which you add in the control panel or through support. SparkPost sells a dedicated IP at $24.95 a month each on Growth only, up to five. At 250,000 emails with two IPs the comparison is Mailgun Scale at $215 plus $59, or $274, against SparkPost Growth at $175 plus 2 × $24.95, or $224.90, which is $49.10 apart.
Webhooks and event data
Mailgun posts one JSON event for each of accepted, delivered, temporary_fail, permanent_fail, opened, clicked, unsubscribed and complained, signed by an HMAC-SHA256 of timestamp plus token under one account-wide key, and retries over eight hours at 5 minutes to 4 hours. SparkPost has a longer event list (bounce, delivery, injection, spam_complaint, out_of_band, policy_rejection, delay, click, open, initial_open, list_unsubscribe, link_unsubscribe and relay events) and delivers them in batches. Its webhook can use no auth, basic auth or OAuth 2.0, expects an answer inside 10 seconds, and retries a batch for eight hours. Both give you a stable identifier for deduplication: the event_id and an X-MessageSystems-Batch-ID header on SparkPost, and on Mailgun a signature token that can be cached to reject repeats. SparkPost keeps 30 days of retention and a 20 MB message-size limit on every plan, where Mailgun's log retention climbs from one day on Basic to 30 on Scale.
Transactional sends for billing events
Both are sending infrastructure, not lifecycle tools. A billing-aware SaaS uses either of them for the messages your code triggers from a Stripe or Paddle webhook: the receipt, the card-update request after a failed invoice, the trial-ending reminder. The webhook differences above decide how you learn that one of those messages bounced, and that matters most for a card-update email, since a bounced address means the customer will never see the request. Write the handler so that a permanent failure marks the user in your database and flags the account in-app.
Switching between them
- Add the new provider's DKIM and SPF records on the sending domain before any traffic moves; keep the old records.
- Mirror the webhook handler for the new event names and shapes (single JSON events on Mailgun, batches on SparkPost) and replay a few sample payloads through it.
- Move a share of traffic, for example one email type, and compare bounce and complaint rates for a week.
- If you rely on a dedicated IP, plan its warm-up: a new IP starts with no reputation, so ramp volume gradually.
Which to choose
- SparkPost Startup or Growth from 50,000 emails a month, when the listed rows decide it and you can agree an overage ceiling.
- Mailgun Basic below 10,000 emails when you want inbound routes, validation or EU sending in the same account, or a free first month of Foundation or Scale to try.
- Mailgun Scale if you want a dedicated IP, 30 days of logs and SAML SSO in one plan.
Related reading: Mailgun vs Amazon SES, SendGrid vs SparkPost, SendGrid vs Mailgun, Resend vs SparkPost and the comparison index.
Mailgun vs SparkPost: common questions
Is SparkPost cheaper than Mailgun?
On the listed rows it is cheaper or level at every volume read: $15 against Mailgun Foundation at $35 for 50,000 emails, $175 against $215 at 250,000, and $295 against $400 at 500,000. At the bottom the two tie on price, since Mailgun Basic is $15 for 10,000 emails and SparkPost's first paid row is $15 for 50,000.
What happens if I send more than my SparkPost plan includes?
Extra sends are billed separately, and SparkPost's pricing page says the default overage ceiling is five times your plan; sends pause at the ceiling unless you agree different terms. A 100,000-email plan therefore stops at 500,000 in a month by default. Mailgun lists overage rates from $1.80, $1.30 and $1.10 per 1,000 on Basic, Foundation and Scale.
Which has the cheaper dedicated IP?
SparkPost lists $24.95 a month for each IP on Growth only, up to five. Mailgun includes one dedicated IP with Foundation 100k, Growth and Scale and charges $59 a month for each extra IP. For a second IP, SparkPost is $34.05 a month cheaper.
Do both retry a webhook if my server is down?
Yes. Mailgun retries over eight hours at 5 minutes, 10 minutes, 15 minutes, 1 hour, 2 hours and 4 hours. SparkPost retries a failed batch for a total of eight hours before discarding it, delivers events in batches with a batch ID header, and gives each event an event_id for deduplication.