Bird vs Mailgun
Bird vs Mailgun for transactional email
Deliver transactional emails and marketing broadcasts on sending infrastructure Bird owns and operates, with 30-day message retention, hosted MCP agent tooling, and email, SMS, WhatsApp, and voice in one API.
Drag an icon onto the dots. Use arrow keys to move a focused icon. Press Escape to cancel a drag.
Trusted by engineering and product teams
shipping at global scale.
By the numbers
Bird network
About 40% of commercial emailStored message bodies
Up to 30 days, with storage enabledWho controls the sending stack?
Mailgun: IPs, routing and validation
Mailgun provides dedicated IP pools, automated IP warm-up, and Automatic Sender Security to rotate DKIM keys via delegated CNAME records.
Mailgun’s bulk list validation cleans uploaded address lists, while Inbound Routes match incoming mail against filter expressions and forward or store messages. Mailgun fits workflows built around list uploads or regex-based inbound forwarding.
Mailgun Optimize adds inbox-placement testing and blocklist monitoring, with managed Deliverability Services available for enterprise senders.
Bird: infrastructure and reputation
Bird runs its own global sending infrastructure and develops the underlying MTA software, including PowerMTA for on-premises sending. Bird’s SparkPost network delivers roughly 40% of the world’s commercial email.
Manage shared IPs, dedicated IPs, and IP pools with automated warm-up and shared-pool overflow. Bird’s Momentum MTA adapts delivery rates per mailbox provider in real time and automatically suppresses hard bounces and spam complaints to protect your sender reputation.
Check folder placement with Inbox Insights seed tests, inspect delivery metrics in Email analytics, and benchmark rival senders in Competitive Insights, backed by Bird’s deliverability specialists.
How do Bird and Mailgun compare?
Mailgun’s bulk list validation and inbound routing rules suit list-cleaning and forwarding workflows. Bird pairs its global SparkPost sending network with 30-day message retention, programmable agent mailboxes, hosted MCP tooling, and multi-channel messaging in one API.
| Capability | Bird | Mailgun | Who wins? |
|---|---|---|---|
| Transactional send API | Bird’s TypeScript SDK accepts JSON payloads, throws typed errors by default, and offers a result-tuple mode for explicit error branching. | Mailgun’s JavaScript SDK and Messages API submit multipart form-data payloads scoped to a sending domain. | |
| SMTP relay | Bird SMTP supports implicit TLS on port 465 and STARTTLS on ports 587 and 2525, authenticated with your standard workspace API key. | Mailgun SMTP supports implicit TLS on port 465 and STARTTLS on ports 25, 587, and 2525 using per-domain SMTP credentials. | |
| Email address validation | Bird email lookup verifies single addresses in real time, returning a deliverability verdict, confidence score, address risk flags, and typo suggestions. | Mailgun Validate supports both real-time single-address checks and bulk validation of uploaded address lists. | |
| Idempotency on send | Bird retains completed send responses for 3 hours so retried requests with the same key never duplicate an email. | Mailgun’s inbox-placement test key deduplicates seed-list placement tests rather than deduplicating customer email sends. | |
| Stored message retention | Bird stores rendered message bodies for up to 30 days when content storage is enabled. | Mailgun’s published plans include 1 day of message body storage on Foundation and up to 7 days on Scale, tracked separately from event log retention. | |
| Published pricing | Bird email plans and rates are read live in the table below. | Compare the selected plan with Mailgun’s published rates, including its billing period and features. | |
| Dedicated IPs and pools | Bird dedicated IPs and pools automate IP warm-up and route excess volume through the shared pool. | Mailgun IP pools group dedicated IPs by stream, while automated warm-up caps stage volume and overflows to shared or sibling IPs. | |
| Deliverability heritage | Bird acquired SparkPost in 2021, and its sending network delivers roughly 40% of the world’s commercial email. | Mailgun’s sending infrastructure runs across US and EU regions selectable from a single account. | |
| SPF, DKIM, DMARC and BIMI | Bird verifies DKIM, custom return-path, and DMARC, with BIMI configured through DNS and your brand logo. | Mailgun Automatic Sender Security rotates DKIM keys automatically, and its sending plans support SPF, DKIM, DMARC, and BIMI. | |
| Event webhooks and signing | Bird signs webhook deliveries using Standard Webhooks so your handler can verify authenticity with any compliant library. | Mailgun webhook verification signs a timestamp and token using HMAC-SHA256 with your Webhook Signing Key. | |
| Channels beyond email | Bird’s API covers email, SMS, WhatsApp, voice, Verify, and Realtime in one workspace. | Mailgun provides an email API, while parent company Sinch offers separate SMS and voice APIs. | |
| Vendor and procurement | Review Bird’s published legal terms and policies against your existing agreement and procurement requirements. | Review Mailgun’s published terms against your existing agreement and procurement requirements. | |
| Mailboxes | Bird’s agent mailboxes provide programmable inboxes, conversation threads, quote-stripped replies, and sender rules. | Mailgun Routes match incoming mail with recipient and header regex filters and trigger forward, store, or stop actions. | |
| Agent tooling | Bird’s hosted MCP server exposes 354 tools, and the Bird CLI manages domains, templates, webhooks, and sends with structured JSON output and semantic exit codes. | Mailgun’s open-source MCP server runs locally to send mail, inspect stored messages, and manage domains, routes, templates, and deliverability without a hosted endpoint. |
How do you send one HTML email?
Both SDKs send a transactional HTML email in a single call. Mailgun’s client passes the sending domain alongside a multipart message payload, while Bird’s SDK sends JSON and supports both thrown typed errors and result-object branching.
Mailgun
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
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?
How should I prevent duplicate sends during migration?
Published email plans
Bird paid plans add a monthly deposit to a shared balance. Transactional sends use the plan's rate. The comparison below assumes the balance is used only for email; other usage and add-ons cost extra.
Pricing verdict: Bird. At each rival allowance, Bird's estimated monthly cash requirement is the greater of the paid plan deposit and transactional usage at its published rate. The Free plan uses its included allowance where available. Deposits are spendable balance, not an extra fee. Only matching volumes and currencies with complete rates affect the verdict.
| Emails per month | Bird plan and monthly cash required | Mailgun |
|---|---|---|
| 50,000 | Email Startup: $20 (USD) | |
| 100,000 | Email Startup: $40 (USD) | |
| 250,000 | Email Startup: $100 (USD) | |
| 500,000 | Email Startup: $200 (USD) | |
| 1,000,000 | Email Startup: $400 (USD) | |
| 2,500,000 | Email Startup: $1,000 (USD) |
Mailgun: Published plans
How should you compare email costs?
What do the Bird and Mailgun price rows include?
Switching cost
What does a Mailgun migration involve?
Start by mapping Mailgun’s multipart form parameters and recipient variables to Bird’s JSON send payload and batch entries. Verify your sending domains in Bird and export each Mailgun domain’s bounces, spam complaints, and unsubscribes into Bird’s workspace suppression list using our Mailgun migration guide.
Next, update Mailgun’s HMAC webhook verification to use Standard Webhooks, and map Mailgun’s temporary vs. permanent failure events to Bird’s deferred and bounced webhook events. Test your handlers in Bird’s mail sandbox before switching live traffic, and allow time for automated warm-up on new dedicated IPs.
Put it into practice.
Continue with the documentation, guides and examples for this topic.
Where to go next
Start with the migration guide to map the integration and test the cutover.
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.