Bird vs Mailgun
Bird vs Mailgun for transactional email
Bird operates the email sending infrastructure, 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.
Trusted every day by teams that
build world-class software.
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 manages dedicated IP pools and automatic IP warm-up. Its Automatic Sender Security rotates DKIM keys through delegated DNS records.
Mailgun’s bulk validation processes uploaded address lists, and its Routes apply filters and actions to incoming email. Keep Mailgun when list cleaning or declarative inbound rules are central to your integration.
Mailgun Optimize provides inbox-placement testing and reputation monitoring. Mailgun also offers Deliverability Services from its email experts for high-volume senders.
Bird: infrastructure and reputation
Bird operates its sending infrastructure and develops MTA software, including PowerMTA, which Bird also licenses for self-hosted sending. Bird’s SparkPost sending network carries about 40% of the world’s commercial email.
Bird manages its shared sending IPs, dedicated IPs and pools, with automatic warm-up and shared-pool overflow. Bird’s delivery technology adjusts traffic per mailbox provider, while its platform processes delivery feedback and acts on bounce and complaint signals. These are controls Bird operates within its sending stack.
Bird provides Inbox Insights for placement estimates and seed tests, Email analytics for your own sending results, and Competitive Insights for observed competitor campaigns. Bird’s email team 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 throws typed errors by default; .safe() returns data and error. | Mailgun’s JavaScript SDK takes a FormData constructor and sends with messages.create(domain, data). The Messages API accepts multipart form data. | |
| SMTP relay | Bird SMTP accepts port 465 with TLS or 587 and 2525 with STARTTLS, using an API key. | Mailgun SMTP supports TLS on port 465 and STARTTLS on 25, 587 and 2525, with credentials managed per domain. | |
| Email address validation | Bird email lookup checks one address per call, returning a verdict, confidence, address flags and suggested corrections. | Mailgun Validate supports real-time single-address checks and bulk validation of uploaded lists. | |
| Idempotency on send | Bird retains completed responses for 3 hours; later retries are fresh requests. | Mailgun’s o:inbox-placement-test-key deduplicates inbox-placement tests. That scope is different from deduplicating the email send itself. | |
| Stored message retention | Bird stores message bodies for up to 30 days when content storage is enabled. | Mailgun’s published plans list 1 day of message retention on Foundation and up to 7 days on Scale. Log retention is a separate allowance. | |
| 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 include automatic warm-up with overflow through the shared pool. | Mailgun IP pools group dedicated addresses by sending stream; automatic warm-up caps sending by stage and routes overflow through shared or other dedicated IPs on the domain. | |
| Deliverability heritage | Bird acquired SparkPost in 2021. Its sending network carries about 40% of the world’s commercial email. | Mailgun’s sending infrastructure is hosted in the US and EU, with a choice of region from one account. | |
| SPF, DKIM, DMARC and BIMI | Bird verifies DKIM, return-path and DMARC. BIMI is a separate DNS and logo configuration. | Mailgun Automatic Sender Security rotates DKIM keys automatically. Its sending plans list SPF, DKIM, DMARC and BIMI support. | |
| Event webhooks and signing | Bird signs webhook deliveries using Standard Webhooks. | Mailgun webhook verification uses HMAC-SHA256 over timestamp and token with the Webhook Signing Key. | |
| Channels beyond email | Bird’s API covers email, SMS, WhatsApp, voice, Verify and Realtime. | Mailgun provides an email API; Sinch also publishes 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 addressable inboxes, threads, replies and sender rules managed through code. | Mailgun Routes combine filters with forward, store and stop actions; recipient and header filters support regular expressions. | |
| Agent tooling | Bird’s hosted MCP server at mcp.bird.com exposes 354 tools. The bird CLI sends and inspects email, manages domains, templates and webhooks, and gives agents JSON output and semantic exit codes. | Mailgun’s local 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. |
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
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’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 | Nearest published volume | |
| Startup | 50,000 | Matching volume | |
| Startup | 100,000 | 2 plans at this volumeExpand to compare every option and its billing terms. Matching volume Matching volume | |
| Growth | 100,000 | 2 plans at this volumeExpand to compare every option and its billing terms. Matching volume Matching volume | |
| Growth | 250,000 | Matching volume | |
| Growth | 500,000 | Matching volume | |
| Growth | 1,000,000 | Matching volume | |
| Growth | 2,500,000 | Matching volume |
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?
Map Mailgun’s form parameters and recipient variables to Bird’s JSON fields and batch entries. Publish Bird’s domain-authentication records and import each domain’s bounces, complaints and unsubscribes into Bird’s workspace suppressions using the migration guide.
Rewrite Mailgun webhook verification for Standard Webhooks. Split Mailgun’s failed event by severity 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.
Put it into practice.
Continue with the documentation, guides and examples for this topic. Resources are in English.
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.