# Bird vs Mailgun for transactional email

Bird operates the [email sending infrastructure](/docs/guides/deliverability), manages IP reputation and builds its own delivery tools. Choose Bird when you want the team running your sending network to handle delivery feedback, with email, SMS and voice in one API.

[Start for Free](/dashboard/signup?returnTo=%2Fdashboard%2Fw%2Femail)

[Contact sales](/demo?product=migrate-mailgun)

## Set up with your agent

[Read the agent setup guide](/docs/ai/set-up-your-agent)

Copy this prompt into your coding agent:

```text
Bird connects customer communications, data and automation. Help me build with Bird using my coding agent.
1. Read https://bird.com/docs/ai/set-up-your-agent.md and follow its setup workflow for this client. Use an existing connected Bird MCP server or signed-in CLI when available.
2. Read the product guide for the task I want to complete and inspect my existing integration. Identify the workspace, available operations and required setup.
3. Help me complete a first example for the product and destination I choose. Follow the operation through to its actual result, explain any uncertainty, and help me choose the next step.

First task: Compare the documented sending workflows and prepare a small migration test, including domains, templates and delivery events. Keep the current provider running until I approve a cutover.

Use this Bird page as the starting context: https://bird.com/email-api/compare/bird-vs-mailgun
Read its Markdown alternative and linked guides. Keep the first example relevant to this page and the customer outcome I choose. Preserve the supplied campaign context when following Bird signup or sales links.
```

[Read customer stories](/customers)

[Explore Enterprise](/enterprise)

- [Airwallex](/customers/airwallex)
- [Glovo](/customers/glovo)
- [Zillow](/customers/zillow)
- Uber
- [Binance](/customers/binance)
- Adobe
- Meta
- PayPal
- Pinterest
- Square
- [Al Jazeera](/customers/aljazeera)
- [Aramex](/customers/aramex)
- [Bazaar Technologies](/customers/bazaar)
- [ComparaOnline](/customers/compara)
- [Emma](/customers/emma)

- By the numbers: Bird
- Bird network: [About 40% of commercial email](/email-api)
- Stored message bodies: [Up to 30 days, with storage enabled](/docs/api/reference/get-email-message-content)

## Who controls the sending stack?

### Mailgun: IPs, routing and validation

- Mailgun manages [dedicated IP pools](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/ip-pools) and [automatic IP warm-up](https://www.mailgun.com/blog/product/ip-warm-up/). Its [Automatic Sender Security](https://documentation.mailgun.com/docs/mailgun/user-manual/domains/dkim_security) rotates DKIM keys through delegated DNS records.
- Mailgun’s [bulk validation](https://www.mailgun.com/products/validate/) processes uploaded address lists, and its [Routes](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/routes) apply filters and actions to incoming email. Keep Mailgun when list cleaning or declarative inbound rules are central to your integration.
- [Mailgun Optimize](https://www.mailgun.com/products/optimize/) provides inbox-placement testing and reputation monitoring. Mailgun also offers [Deliverability Services from its email experts](https://www.mailgun.com/blog/product/ip-warm-up/) for high-volume senders.

### Bird: infrastructure and reputation

- Bird operates its [sending infrastructure](/docs/guides/deliverability) and develops MTA software, including [PowerMTA, which Bird also licenses for self-hosted sending](/pricing/connectivity/powermta). Bird’s [SparkPost sending network carries about 40% of the world’s commercial email](/email-api/features/sparkpost).
- Bird manages its [shared sending IPs, dedicated IPs and pools](/docs/guides/email/dedicated-ips-and-pools), with automatic warm-up and shared-pool overflow. Bird’s delivery technology [adjusts traffic per mailbox provider](/email-api/features/momentum), while its platform [processes delivery feedback](/docs/guides/deliverability) and [acts on bounce and complaint signals](/email-api/features/deliverability). These are controls Bird operates within its sending stack.
- Bird provides [Inbox Insights for placement estimates and seed tests](/email-api/features/inbox-insights), [Email analytics for your own sending results](/email-api/features/analytics), and [Competitive Insights for observed competitor campaigns](/email-api/features/competitive-insights). [Bird’s email team](/email-api/enterprise) can help assess your requirements.

## How do Bird and Mailgun compare?

Mailgun’s bulk validation and inbound rules suit list-cleaning and routing workflows. Bird combines its sending network, delivery tools and mailboxes with other channels in one API. Compare the controls and storage your application needs.

| Capability | Bird | Mailgun | Who wins |
| --- | --- | --- | --- |
| Transactional send API | [Bird’s TypeScript SDK](/docs/sdks/typescript) throws typed errors by default; .safe() returns data and error. | [Mailgun’s JavaScript SDK](https://github.com/mailgun/mailgun.js/blob/master/README.md) takes a FormData constructor and sends with messages.create(domain, data). The [Messages API](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/messages/post-v3--domain-name--messages) accepts multipart form data. | Even |
| SMTP relay | [Bird SMTP](/docs/guides/email/smtp) accepts port 465 with TLS or 587 and 2525 with STARTTLS, using an API key. | [Mailgun SMTP](https://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/send-smtp) supports TLS on port 465 and STARTTLS on 25, 587 and 2525, with credentials managed per domain. | Even |
| Email address validation | [Bird email lookup](/docs/guides/lookup/email-addresses) checks one address per call, returning a verdict, confidence, address flags and suggested corrections. | [Mailgun Validate](https://www.mailgun.com/products/validate/) supports real-time single-address checks and bulk validation of uploaded lists. | Even |
| Idempotency on send | [Bird retains completed responses for 3 hours](/docs/guides/idempotency); later retries are fresh requests. | [Mailgun’s o:inbox-placement-test-key](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/messages/post-v3--domain-name--messages) deduplicates inbox-placement tests. That scope is different from deduplicating the email send itself. | Even |
| Stored message retention | [Bird stores message bodies for up to 30 days](/docs/api/reference/get-email-message-content) when content storage is enabled. | [Mailgun’s published plans](https://www.mailgun.com/pricing/) list 1 day of message retention on Foundation and up to 7 days on Scale. Log retention is a separate allowance. | Bird |
| Published pricing | [Bird email plans and rates](/email-api/pricing) are read live in the table below. | Compare the selected plan with [Mailgun’s published rates](https://www.mailgun.com/pricing/), including its billing period and features. | Bird |
| Dedicated IPs and pools | [Bird dedicated IPs and pools](/docs/guides/email/dedicated-ips-and-pools) include automatic warm-up with overflow through the shared pool. | [Mailgun IP pools](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/ip-pools) group dedicated addresses by sending stream; [automatic warm-up](https://www.mailgun.com/blog/product/ip-warm-up/) caps sending by stage and routes overflow through shared or other dedicated IPs on the domain. | Even |
| Deliverability heritage | Bird acquired [SparkPost in 2021](/blog/welcome-to-the-nest-sparkpost). Its sending network [carries about 40% of the world’s commercial email](/email-api/features/sparkpost). | [Mailgun’s sending infrastructure](https://www.mailgun.com/pricing/) is hosted in the US and EU, with a choice of region from one account. | Bird |
| SPF, DKIM, DMARC and BIMI | Bird verifies [DKIM, return-path and DMARC](/docs/guides/email/dkim-spf-dmarc). [BIMI](/docs/guides/email/bimi) is a separate DNS and logo configuration. | [Mailgun Automatic Sender Security](https://documentation.mailgun.com/docs/mailgun/user-manual/domains/dkim_security) rotates DKIM keys automatically. Its [sending plans](https://www.mailgun.com/pricing/) list SPF, DKIM, DMARC and BIMI support. | Even |
| Event webhooks and signing | [Bird signs webhook deliveries using Standard Webhooks](/docs/guides/webhooks). | [Mailgun webhook verification](https://documentation.mailgun.com/docs/mailgun/user-manual/webhooks/securing-webhooks) uses HMAC-SHA256 over timestamp and token with the Webhook Signing Key. | Even |
| Channels beyond email | [Bird’s API](/docs/api) covers email, SMS, WhatsApp, voice, Verify and Realtime. | Mailgun provides an [email API](https://www.mailgun.com/products/send/); Sinch also publishes [SMS](https://developers.sinch.com/docs/sms/) and [voice APIs](https://developers.sinch.com/docs/voice/). | Even |
| Vendor and procurement | Review [Bird’s published legal terms and policies](/legal) against your existing agreement and procurement requirements. | Review [Mailgun’s published terms](https://www.mailgun.com/legal/terms/) against your existing agreement and procurement requirements. | Even |
| Mailboxes | [Bird’s agent mailboxes](/docs/guides/email/mailboxes) provide addressable inboxes, threads, replies and sender rules managed through code. | [Mailgun Routes](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/routes) combine filters with forward, store and stop actions; [recipient and header filters](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/route-filters) support regular expressions. | Bird |
| Agent tooling | [Bird’s hosted MCP server](/docs/ai/mcp-server) at mcp.bird.com exposes 354 tools. The [bird CLI](/docs/cli) sends and inspects email, manages domains, templates and webhooks, and gives [agents JSON output and semantic exit codes](/docs/ai/cli-for-agents). | [Mailgun’s local MCP server](https://github.com/mailgun/mailgun-mcp-server) sends email, retrieves stored messages and manages domains, routes, templates and deliverability operations. Its command-line options select tool groups; Mailgun publishes no hosted version of that server. | Bird |

## How do you send one HTML email?

Mailgun’s JavaScript client sends through messages.create with the sending domain as an argument. Bird throws typed errors by default; this example opts into .safe() so the application can branch on data and error.

**Mailgun** · send.ts

```typescript
import Mailgun from "mailgun.js";
import formData from "form-data";

const mg = new Mailgun(formData).client({
  username: "api",
  key: process.env.MAILGUN_API_KEY!,
});

await mg.messages.create("yourdomain.com", {
  from:    "onboarding@yourdomain.com",
  to:      ["customer@example.com"],
  subject: "Your March invoice",
  html:    "<p>Attached.</p>",
});
```

**Bird** · send.ts

```typescript
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.email
  .send({
    from:    { email: "onboarding@yourdomain.com", name: "Acme" },
    to:      ["customer@example.com"],
    subject: "Your March invoice",
    html:    "<p>Attached.</p>",
  })
  .safe();

if (error) console.error(error.message);
else console.log(data.id);
```

## What changes around the send call?

### How do Mailgun Routes map to Bird mailboxes?

[Mailgun Routes](https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/routes) evaluate incoming messages against rules, with forwarding and storage actions. Bird’s [mailboxes](/docs/guides/email/mailboxes) expose inboxes, threads, replies and sender rules. Map every route filter and action to your receiving handler or mailbox workflow before changing MX records.

### How should I prevent duplicate sends during migration?

Keep a record of each business operation and its send outcome. The [Mailgun Messages API](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/messages/post-v3--domain-name--messages) describes its inbox-placement test key precisely: “Retried or duplicate send requests that use the same key will not create additional tests.” Keep test deduplication separate from send retries. Bird’s [3-hour idempotency window](/docs/guides/idempotency) protects retries within that window; check your send record before retrying after it expires.

## Published email plans

Bird’s full monthly ladder is shown below. Nearest-volume plans are labelled and are not quotes for Bird’s volume. Check billing terms, features and overages.

Pricing verdict: Bird. The verdict compares the lowest published monthly amount at each exact volume and currency; daily-only allowances, annual commitments, usage rates, starting prices and custom quotes are not compared.

| Bird tier | Emails per month | Bird | Mailgun |
| --- | --- | --- | --- |
| Free | 1,000 | [$0 / month (USD)](/email-api/pricing); [€0 / month (EUR)](/email-api/pricing) | Nearest published volume: [Basic: Starting at $15/mo](https://www.mailgun.com/pricing/); 10,000 emails; Monthly billing; starting price.; as published 2026-09-07 |
| Startup | 50,000 | [$15 / month (USD)](/email-api/pricing); [€15 / month (EUR)](/email-api/pricing) | Matching volume: [Foundation: $35/mo](https://www.mailgun.com/pricing/); 50,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Startup | 100,000 | [$30 / month (USD)](/email-api/pricing); [€27.5 / month (EUR)](/email-api/pricing) | Matching volume: [Foundation: $75/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07; Matching volume: [Scale: $90/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Growth | 100,000 | [$80 / month (USD)](/email-api/pricing); [€72.5 / month (EUR)](/email-api/pricing) | Matching volume: [Foundation: $75/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07; Matching volume: [Scale: $90/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Growth | 250,000 | [$175 / month (USD)](/email-api/pricing); [€160 / month (EUR)](/email-api/pricing) | Matching volume: [Scale: $215/mo](https://www.mailgun.com/pricing/); 250,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Growth | 500,000 | [$295 / month (USD)](/email-api/pricing); [€270 / month (EUR)](/email-api/pricing) | Matching volume: [Scale: $400/mo](https://www.mailgun.com/pricing/); 500,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Growth | 1,000,000 | [$530 / month (USD)](/email-api/pricing); [€480 / month (EUR)](/email-api/pricing) | Matching volume: [Scale: $700/mo](https://www.mailgun.com/pricing/); 1,000,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Growth | 2,500,000 | [$1,039 / month (USD)](/email-api/pricing); [€950 / month (EUR)](/email-api/pricing) | Matching volume: [Scale: $1,250/mo](https://www.mailgun.com/pricing/); 2,500,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |

## Mailgun published plans

| Plan | Published price and terms |
| --- | --- |
| Free | [Free: $0/mo](https://www.mailgun.com/pricing/); Custom or daily emails; Daily allowance: 100 emails a day.; as published 2026-09-07 |
| Basic | [Basic: Starting at $15/mo](https://www.mailgun.com/pricing/); 10,000 emails; Monthly billing; starting price.; as published 2026-09-07 |
| Foundation | [Foundation: $35/mo](https://www.mailgun.com/pricing/); 50,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Foundation | [Foundation: $75/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Scale | [Scale: $90/mo](https://www.mailgun.com/pricing/); 100,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Scale | [Scale: $215/mo](https://www.mailgun.com/pricing/); 250,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Scale | [Scale: $400/mo](https://www.mailgun.com/pricing/); 500,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Scale | [Scale: $700/mo](https://www.mailgun.com/pricing/); 1,000,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Scale | [Scale: $1,250/mo](https://www.mailgun.com/pricing/); 2,500,000 emails; Monthly billing after the free trial.; as published 2026-09-07 |
| Enterprise services | [Enterprise services: Request a quote](https://www.mailgun.com/pricing/); Custom or daily emails; Custom features and pricing.; as published 2026-09-07 |

## How should you compare email costs?

### What do the Bird and Mailgun price rows include?

The table shows Bird’s full monthly ladder. Rival plans match the volume or are labelled with the nearest published volume. Bird’s amounts come from its live catalogue; Mailgun’s linked amounts carry their check dates. Compare the billing period and included features before choosing a plan. Use [Mailgun’s pricing page](https://www.mailgun.com/pricing/) to check the features and add-ons for the selected plan.

## Switching cost: What does a Mailgun migration involve?

Map [Mailgun’s form parameters and recipient variables](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/messages/post-v3--domain-name--messages) to Bird’s JSON fields and batch entries. Publish Bird’s domain-authentication records and import each domain’s [bounces](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/bounces), [complaints](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/complaints) and [unsubscribes](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/unsubscribe) into Bird’s workspace suppressions using the [migration guide](/docs/guides/email/migrate/mailgun).

Rewrite [Mailgun webhook verification](https://documentation.mailgun.com/docs/mailgun/user-manual/webhooks/securing-webhooks) for Standard Webhooks. Split [Mailgun’s failed event by severity](https://documentation.mailgun.com/docs/mailgun/user-manual/events/event-types) into Bird’s deferred or bounced handling. Test in Bird’s mail sandbox before switching traffic and plan a warm-up for new dedicated IPs.

[Read the migration guide](/docs/guides/email/migrate/mailgun)

[Test in Bird’s mail sandbox](/docs/guides/email/testing-sandbox)

## Where to go next

Start with the migration guide to map the integration and test the cutover.

- [Migrate email from Mailgun](/docs/guides/email/migrate/mailgun): Map form fields, domain suppressions and failed-event severity.
- [Bird email pricing](/email-api/pricing): Read the rates and plan features published in Bird’s email catalogue.
- [Mailgun pricing](https://www.mailgun.com/pricing/): Check Mailgun’s published plans for your sending volume.
- [Bird vs Resend](/email-api/compare/bird-vs-resend): Compare published pricing, retry handling and channels beyond email.
- [Bird vs Amazon SES](/email-api/compare/bird-vs-amazon-ses): Compare the send integration and published billing terms.
- [All email comparisons](/email-api/compare): See every Bird email comparison in one place.
- [Mailgun alternatives](/alternatives/mailgun): Compare email providers by use case and integration needs.

Talk to our email team

## See how Bird fits your Mailgun workflow.

Test your sender, templates and delivery events before moving traffic from Mailgun. For a larger move, plan the cutover with an email specialist.

Create your account and test your integration. Your migration enquiry will include the provider you are comparing.



## Related resources

- [Getting started with email](/learn/email/getting-started-with-email) (video)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=email)
