Sending domains

Verify a domain. Sign every message.

Set up in:

Add a sending domain, drop the generated DNS records into your provider, and Bird signs every message with DKIM, SPF, and DMARC. Most verifications resolve within minutes, and you can watch DMARC alignment from the dashboard.

welcome.tsx
200 · 1.2s
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";

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

const { data, error } = await bird.email.send({
  from:    "Bird <hello@bird.com>",
  to:      ["ada@example.com"],
  subject: "Your invite is ready",
  html:    await render(<WelcomeEmail name="Ada" />),
}).safe();

if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."

Authentication, without the DNS archaeology.

Sending domains are where deliverability starts on the Bird Email API. Bird generates the records, signs at the edge, and tells you the moment a domain falls out of alignment. Authentication becomes a setup step, not an ongoing investigation.

Five steps to a signed domain.

Bird generates every record. You publish them once, and we keep them verified.

  1. 01

    Add a domain in minutes.

    Paste the generated DNS records at your provider and hit verify. Most resolve within minutes of propagating.

  2. 02

    DKIM, SPF, DMARC signed.

    Every message from a verified domain is signed automatically, with optional BIMI support.

  3. 03

    Many domains per account.

    Run separate domains for transactional and marketing, or one per brand. Each carries its own reputation.

  4. 04

    DMARC monitoring.

    Watch DMARC alignment and authentication results from the dashboard. A misconfiguration surfaces before it costs you delivery, not after a campaign quietly underperforms.

  5. 05

    Subdomain-friendly.

    Send from a dedicated subdomain to isolate your sending reputation from your corporate mail.

One command, every record you need.

Add a domain from the dashboard, the API, or the CLI. Bird returns the exact records to publish: a DKIM key to sign your mail, a return-path CNAME that aligns SPF without touching your apex record, a DMARC record, and an optional tracking CNAME for branded open and click links. Then it verifies them for you.

bird domains create
pending
$ bird domains create mail.acme.com

Created dom_01k8a2hq9v publish these records at your DNS provider:

  TYPE   HOST                            VALUE
  TXT    bird._domainkey.mail.acme.com   v=DKIM1; k=rsa; p=MIGfMA0GCSq…
  CNAME  send.mail.acme.com              us1.bounce.bird.com
  TXT    _dmarc.mail.acme.com            v=DMARC1; p=none; rua=mailto:…
  CNAME  links.mail.acme.com             us1.links.bird.com

Status: pending run `bird domains verify dom_01k8a2hq9v` once they propagate.

Branded open and click tracking.

Add the optional tracking CNAME and Bird measures opens and clicks under your own domain instead of a generic redirect. Opens come from a pixel in the HTML; clicks come from links rewritten through your branded hostname, so both the redirect and the link reputation stay with your brand, served over HTTPS.

Tracking is its own capability, separate from sending. A domain sends the moment DKIM, the return-path, and DMARC verify, with or without the tracking record in place. Open and click tracking switch on once the CNAME verifies and you turn them on.

It's opt-in for a reason. Rewritten links change the URL a recipient sees on hover and add a redirect hop, so leave click tracking off for password resets and security mail, where a clean direct link matters more than the metric.

Verified once, watched forever.

Bird polls frequently right after you add a domain, then re-checks every domain daily. A verified domain only drops after two consecutive failed checks, so one transient DNS blip won't knock you offline. The moment the records come back, it re-verifies on its own.

Go deeper in the docs.

Add and verify a domain with the sending domains guide, and read how the records work in the DKIM, SPF & DMARC guide.

Sending domains FAQ

How long does domain verification take?+
Add the domain, paste the generated DNS records at your provider, and hit verify. Most verifications resolve within minutes of DNS propagation, though it can occasionally take longer.
What records do I need?+
Bird generates them for you: a DKIM TXT record to sign your mail, a return-path CNAME that aligns SPF (no apex SPF record required), and a DMARC TXT record. A tracking CNAME for branded open/click links is optional. Add them at your DNS provider and verify.
What does the DMARC record actually do?+
DMARC tells receiving servers what to do with mail that fails DKIM or SPF alignment, and where to send the aggregate reports that show who is sending as your domain. Bird requires a DMARC record before a domain can send, and recommends starting at p=none, which monitors without affecting delivery. Once you have confirmed every legitimate source aligns, tighten the policy to p=quarantine or p=reject. If you already publish DMARC at your domain or a parent domain, Bird uses it as is. Major inbox providers now expect bulk senders to publish a policy, so having one is increasingly part of reaching the inbox at volume.
Can I send from a subdomain?+
Yes, and it's recommended. Sending from a dedicated subdomain isolates your email reputation from your corporate mail.
Can I use more than one domain?+
Yes. Run separate domains for transactional and marketing mail, or one per brand, each with its own authentication and reputation.

About 40% of the world's commercial email already runs on Bird.

Transactional and marketing email on infrastructure we've run for a decade. Domain authentication is one capability of the Bird Email API: sending, deliverability, dedicated IPs, suppression, and analytics ship with it.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours: