BIRD Email

L'API Email per sviluppatori che inviano anche il resto del messaggio.

Configurazione in:
Cursor

Email transazionali e di marketing sulla stessa infrastruttura che gestisce SMS, voce e WhatsApp. Circa il 40% delle email commerciali mondiali transita sulla rete Bird. Siamo in questo settore da un decennio. Durante il weekend del Black Friday 2025 abbiamo elaborato 19,9 miliardi di email.

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..."

5 minuti con npm install al primo invio

Invia un'email dal linguaggio che già utilizzi.

SDK per ogni runtime principale. Il primo invio puo essere indirizzato a un indirizzo di test dedicato (delivered@messagebird.dev), cosi puoi sviluppare sull'API live (invii, webhook, l'intero flusso) prima di verificare un dominio.

1
2
3
4
5
6
7
const msg = await bird.email.send({
  from: { email: "onboarding@messagebird.dev", name: "Bird" },
  to: ["delivered@messagebird.dev"],
  subject: "Hello from Bird",
  html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"

Dieci aspetti dell'email che non sono più un vostro problema.

Primitive di deliverability e operative, nominati e verificabili.

  1. 01

    Firma all'edge.

    Three records to publish: DKIM, a return-path CNAME, and a DMARC policy. The CNAME covers SPF too, so nothing has to go on your domain apex.

  2. 02

    An audit before you send a byte.

    Point the audit tool at any domain and it resolves the live DMARC, SPF, DKIM, BIMI, and MX records, grades how they work together, and ranks what to fix. No account needed.

  3. 03

    IP dedicati gestiti.

    Forniti per account e riscaldati automaticamente nell'arco di circa 30 giorni, organizzati in pool che controlli tu.

  4. 04

    Lista di soppressione dinamica.

    Bounce, reclami e disiscrizioni sopprimono il destinatario automaticamente e in modo reversibile.

  5. 05

    No polling to verify a domain.

    Add a domain, publish the records, and Bird re-checks on its own until they resolve, usually within minutes of DNS propagating. There's a verify call if you want an answer right now.

  6. 06

    Stored templates, or your own HTML.

    Name a stored template and Bird renders it with Liquid, or render React Email to HTML in your app and pass the result.

  7. 07

    Log delle email ricercabile.

    Ogni messaggio inviato viene registrato con i relativi eventi di consegna e lo stato. Interroga qualsiasi email tramite ID.

  8. 08

    Metriche di deliverability, dettagliate.

    Codici di bounce, tipi di reclamo e suddivisioni per provider di posta e client, ripartiti per dominio, ISP e IP, nella dashboard e tramite l'API delle statistiche.

  9. 09

    Parsing in entrata.

    Take a Bird-generated forwarding address, or publish MX records on a subdomain you own. Either way the mail arrives as a signed webhook you can thread.

  10. 10

    Invio in batch fino a 100.

    Fino a 100 messaggi indipendenti per chiamata, ciascuno con il proprio destinatario e le proprie variabili. Una sola chiave di idempotenza copre l'intero batch.

Perché sviluppiamo l'email

Perché i tuoi codici di verifica non dovrebbero trovarsi su un fornitore diverso dalle tue ricevute di consegna.

L'email non e un prodotto a se; e un canale all'interno di un flusso. I codici di autenticazione partono come email e ripiegano su SMS. Le ricevute vengono inviate via WhatsApp quando il cliente lo preferisce. Bird Email e quello la cui API, i cui webhook e il cui contratto di idempotenza corrispondono a ogni altro canale, perche lo stesso team di ingegneria li ha costruiti tutti sulla stessa rete.

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..."

Ogni cambio di stato è un webhook.

Payload firmati in HMAC, protetti dai replay, idempotenti. La stessa busta firmata su ogni canale Bird, cosi l'handler che scrivi per l'email gia analizza i tuoi eventi SMS e WhatsApp.

POST /webhooks/bird
signed
{
  "type": "email.delivered",
  "timestamp": "2026-05-19T15:42:01.221Z",
  "data": {
    "email_id":       "em_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient_id":   "er_01krdgeqcxet5s7t44vh8rt9mg",
    "workspace_id":   "ws_01krdgeqcxet5s7t44vh8rt9mg",
    "recipient":      "ada@example.com",
    "recipient_role": "to",
    "tags":     [{ "name": "campaign", "value": "spring-2026" }],
    "metadata": { "order_id": "ord_5512" }
  }
}

Eight attempts over roughly 27.5 hours, backing off 5s, 5m, 30m, 2h, 5h, 10h, 10h with 20% jitter so retries don't synchronize. Every attempt reuses the same webhook-id, which is what makes your deduplication check work. After the last one the delivery is permanently failed, and a replay call recovers it.

  • email.acceptedThe send was accepted and is being prepared for delivery.
  • email.processedQueued for the recipient's mail server.
  • email.deliveredThe recipient's mail server accepted the message.
  • email.openedThe recipient opened the message. Can fire more than once.
  • email.clickedThe recipient clicked a tracked link.
  • email.bouncedPermanently failed: bounce type and SMTP code in the payload.
  • email.complainedThe recipient reported the message as spam.
  • email.unsubscribedThe recipient opted out through a tracked unsubscribe link.
  • email.list_unsubscribedThe recipient used their mail client's one-click unsubscribe.

Se hai integrato l'email, hai integrato gli SMS.

Stesso modello di autenticazione, stesso contratto di idempotenza, stessa busta di errore, stessa forma del webhook. La differenza sta in cosa fa ciascuno, non in come lo chiami.

Email

Dominio verificato, firma all'edge, gestione delle soppressioni integrata. Renderizza con React o invia HTML grezzo.

order-shipped.tsx
await bird.email.send({
  from:    "hello@bird.com",
  to:      ["ada@example.com"],
  subject: "Your code",
  html:    `<p>Code: ${code}</p>`,
});

SMS

Stesso envelope, stessa idempotenza, stesso registro dei tipi di errore. Il trasporto è l'unica differenza.

order-shipped.tsx
await bird.sms.send({
  from:     "Bird",
  to:       "+14155550172",
  text:     `Your code is ${code}.`,
  category: "authentication",
});

Prezzi

A partire da 0,30$ ogni 1.000 email

Inizia gratis: 1.000 email al mese, senza carta. I piani a pagamento partono da $15 per 50K, e la tariffa per messaggio del piano Growth continua a calare man mano che scali fino a 2,5M. Nessun costo di piattaforma, nessun costo per postazione, nessuna funzionalita di livello bloccata dietro impegni annuali.

Scelto ogni giorno dai team che sviluppano software di livello mondiale

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor