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

Who 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

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.

CapabilityBirdMailgunWho wins?
Transactional send APIBird’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 relayBird 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 validationBird 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 sendBird 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 retentionBird 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 pricingBird 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 poolsBird 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 heritageBird 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 BIMIBird 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 signingBird 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 emailBird’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 procurementReview 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.
MailboxesBird’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 toolingBird’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

send.ts
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
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 evaluate incoming messages against header or recipient expressions and trigger forwarding or temporary storage. Bird’s agent mailboxes give your app or AI agent persistent inboxes with automatic conversation threading, quote-stripped replies, and sender allowlists. Map your existing route filters to either Bird’s inbound webhook or a managed mailbox before switching your domain’s MX records.
How should I prevent duplicate sends during migration?
Store an application-side record for each send and attach an idempotency key when calling Bird. The Mailgun Messages API notes that its inbox-placement test key applies to seed testing: “Retried or duplicate send requests that use the same key will not create additional tests.” For production customer emails, Bird’s 3-hour idempotency window replays the original completed response across network retries so your customer never receives a duplicate message.

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.

Same-volume transactional email costs
Emails per monthBird plan and monthly cash requiredMailgun
50,000Email Startup: $20 (USD)
Foundation: $35/mo

50,000 emails

Monthly billing after the free trial.

as published

100,000Email Startup: $40 (USD)
Foundation: $75/mo

100,000 emails

Monthly billing after the free trial.

as published

250,000Email Startup: $100 (USD)
Scale: $215/mo

250,000 emails

Monthly billing after the free trial.

as published

500,000Email Startup: $200 (USD)
Scale: $400/mo

500,000 emails

Monthly billing after the free trial.

as published

1,000,000Email Startup: $400 (USD)
Scale: $700/mo

1,000,000 emails

Monthly billing after the free trial.

as published

2,500,000Email Startup: $1,000 (USD)
Scale: $1,250/mo

2,500,000 emails

Monthly billing after the free trial.

as published

Mailgun: Published plans

Free: $0/mo

Daily allowance: 100 emails a day.

as published

Basic: Starting at $15/mo

10,000 emails

Monthly billing; starting price.

as published

Foundation: $35/mo

50,000 emails

Monthly billing after the free trial.

as published

Foundation: $75/mo

100,000 emails

Monthly billing after the free trial.

as published

Scale: $90/mo

100,000 emails

Monthly billing after the free trial.

as published

Scale: $215/mo

250,000 emails

Monthly billing after the free trial.

as published

Scale: $400/mo

500,000 emails

Monthly billing after the free trial.

as published

Scale: $700/mo

1,000,000 emails

Monthly billing after the free trial.

as published

Scale: $1,250/mo

2,500,000 emails

Monthly billing after the free trial.

as published

Enterprise services: Request a quote

Custom features and pricing.

as published

How should you compare email costs?

What do the Bird and Mailgun price rows include?
The tables compare the monthly cash outlay on Bird at each send volume against Mailgun’s published tiers. Bird’s figures read live from our pricing catalogue, while Mailgun’s figures link directly to their pricing page with the verification date. Check the billing cadence, included send allowances, and add-on fees before selecting a tier. Review Mailgun’s pricing page to confirm which retention windows, validation quotas, and dedicated IPs come with your chosen plan.

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.

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.

Your details
Products (optional)
Email

Privacy policy

Start building with Bird in minutes.