Kunden weltweit mit der WhatsApp API ansprechen

Verbinden Sie Marketing-, Service- und Operations-Teams mit Kunden auf der weltweit beliebtesten Messaging-App.

send-notification.ts
202 · 480ms
import { BirdClient } from "@messagebird/sdk";

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

const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_delivery_update",
    components: [{ type: "body", parameters: [
      { type: "text", name: "ref",  text: "#4821" },
      { type: "text", name: "date", text: "Wednesday" },
    ] }],
  },
});

console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"
Reminder: you have an appointment on 3 Sep at 14:30. We look forward to seeing you.9:42 AM
Reschedule
Your order #4821 is out for delivery, arriving Wednesday. Thanks for shopping with us.9:43 AM
Your subscription renews on 3 Sep for €12.00. No action is needed.9:44 AM
View plan

5 Minuten von npm install bis zum ersten Versand

Senden Sie eine WhatsApp-Nachricht in der Sprache, die Sie bereits nutzen.

SDKs für jede gängige Laufzeitumgebung. Der erste Versand erfolgt über ein von Bird verwaltetes Template wie bird_delivery_update – bereits von Meta genehmigt und mit automatischer Absenderauswahl. So sehen Sie eine echte Nachricht ankommen, bevor Sie ein eigenes Template erstellen.

1
2
3
4
5
6
7
8
const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_otp",
    components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
  },
});
console.log(msg.id, msg.status);

Acht Dinge, die wir zwischen Ihnen und Meta übernehmen.

WhatsApp ist reglementiert: ein genehmigtes Template, ein Empfänger mit Opt-in, ein verifiziertes Unternehmen. Diese Hürden bleiben bestehen. Ihr Anbieter entscheidet, ob sie in Ihrem Code sichtbar sind oder in einem Dashboard versteckt werden.

  1. 01

    Offizieller Meta Business Solution Provider (BSP)

    Direkte Beziehung zu Meta, seit es die API gibt. Kein weiterverkaufter Transit, kein Drittanbieter-Hop.

  2. 02

    Template-Verwaltung

    Lesen Sie den Katalog und Metas Bewertung pro Sprache über die CLI oder MCP-Tools. Erstellung und Einreichung erfolgen im Dashboard.

  3. 03

    Templates in jeder Sprache

    Ein Slug, viele Sprachen. Geben Sie beim Versand einen an oder lassen Sie den Standard des Templates greifen.

  4. 04

    Buttons und Karussells

    Link-, Schnellantwort-, Telefonnummer- und Code-kopieren-Buttons sowie Karussells mit 2–10 Karten.

  5. 05

    Medien und Rich Content

    Bilder, Video, Audio, Sticker, Dokumente und Standort – jeweils über ein einzelnes Feld beim Versand.

  6. 06

    Tags und Metadaten bei jedem Versand

    Tags werden zu Filter- und Analyse-Dimensionen; Metadaten kommen bei jedem Webhook zurück.

  7. 07

    Webhooks für eingehende Nachrichten

    HMAC-signierte Events für eingehende Nachrichten, Zustellbestätigungen und Lesebestätigungen.

  8. 08

    3 Mrd.+ Nutzer über einen Endpunkt

    Über drei Milliarden monatliche WhatsApp-Nutzer, erreichbar über einen einzigen bird.whatsapp.send-Aufruf.

Warum wir WhatsApp entwickeln

Wir waren einer der ersten WhatsApp-BSPs. Und wir sind immer noch einer der wenigen, die Code mit Ihnen ausliefern.

WhatsApp ist reglementiert. Sie brauchen ein genehmigtes Template; Sie brauchen ein offenes Kundenservice-Fenster, um etwas anderes als ein Template zu senden; Sie brauchen eine Meta-Unternehmensverifizierung. Das ändert sich nicht – und wird es auch nicht. Was sich ändert, ist ob Ihr BSP diese Hürden einfacher oder schwieriger macht: indem er sie in Ihrem Code sichtbar macht, über Webhooks, die Sie abonnieren können, in Fehlermeldungen, die genau sagen, was falsch ist. Wir haben uns für Ersteres entschieden.

send-notification.ts
202 · 480ms
import { BirdClient } from "@messagebird/sdk";

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

const msg = await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_delivery_update",
    components: [{ type: "body", parameters: [
      { type: "text", name: "ref",  text: "#4821" },
      { type: "text", name: "date", text: "Wednesday" },
    ] }],
  },
});

console.log(msg.id, msg.status);
// → "wam_01krdgeqcxet5s7t44vh8rt9mg", "accepted"

Jede Statusänderung ist ein Webhook.

HMAC-signierte Payloads, Replay-geschützt, idempotent. Dasselbe Format auf jedem Bird-Kanal: einen lernen, alle beherrschen.

POST /webhooks/bird
signed
{
  "type": "whatsapp.read",
  "timestamp": "2026-05-19T15:42:08.114Z",
  "data": {
    "whatsapp_id":  "wam_01krdgeqcxet5s7t44vh8rt9mg",
    "workspace_id": "ws_01krdgeqcxet5s7t44vh8rt9mg",
    "direction":    "outbound",
    "from":         { "phone_number": "+15557654321" },
    "to":           { "phone_number": "+15551234567" },
    "tags":         [{ "name": "campaign", "value": "order-updates" }],
    "metadata":     { "order_id": "BRD-49217" }
  }
}

Wiederholungsplan: 5s, 5m, 30m, 2h, 5h, dann zweimal 10h. Nach dem letzten Versuch gilt die Zustellung als endgültig fehlgeschlagen – Replay stellt sie über das Dashboard oder die API wieder her.

  • whatsapp.acceptedVon der API akzeptiert und für den Versand an Meta in die Warteschlange gestellt.
  • whatsapp.sentAn Metas Cloud API übergeben.
  • whatsapp.deliveredMeta meldet, dass die Nachricht auf dem Gerät des Empfängers angekommen ist.
  • whatsapp.readEmpfänger hat die Nachricht geöffnet (sofern Lesebestätigungen aktiviert sind).
  • whatsapp.rejectedVor dem Versand abgelehnt und nicht berechnet: Fehlercode in der Payload.
  • whatsapp.failedPermanenter Fehler: Fehlercode im Payload.
  • whatsapp.receivedEingehende Nachricht von einem WhatsApp-Nutzer.

Denselben Kunden per SMS zu erreichen, ist derselbe Aufruf – nur ein Feld weiter.

Derselbe Client, dieselbe Authentifizierung, dasselbe Fehlerformat, dieselbe Webhook-Struktur. Was sich ändert, ist die Payload: WhatsApp enthält ein von Meta genehmigtes Template, SMS enthält Text. Tags und Metadaten werden bei beiden mitgesendet, sodass ein Dashboard-Set beide Kanäle abdeckt.

WhatsApp

whatsapp
await bird.whatsapp.send({
  to: "+15551234567",
  template: {
    slug: "bird_delivery_update",
    language: "en",
    components: [{ type: "body", parameters: [
      { type: "text", name: "ref",  text: "BRD-49217" },
      { type: "text", name: "date", text: "10 Jul 2026" },
    ] }],
  },
});

Ein von Bird verwaltetes Template: von Meta genehmigt, in über 70 Sprachen verfügbar, mit automatischer Absenderauswahl. Platzhalterwerte werden als Komponenten übergeben.

SMS

sms
await bird.sms.send({
  from:     "Bird",
  to:       "+15551234567",
  text:     `Your order BRD-49217 has shipped.`,
  category: "transactional",
});

Derselbe Befehl auf dem anderen Kanal: Freitext plus Kategorie, ohne Template-Genehmigung.

Ein Preis pro Nachricht, inklusive Meta-Gebühr.

Nutzungsbasierte Preise. Jeder Preis deckt die Meta-Gebühr und unsere in einer einzigen Zahl ab und richtet sich nach Zielland und Nachrichtenkategorie. Keine Gebühr pro Nutzer und nichts, was eine Jahresbindung voraussetzt.

Starten Sie mit einem Kanal.
Fügen Sie die anderen hinzu, wenn Sie bereit sind.

Ein Test-API-Key steht Ihnen sofort zur Verfügung. Der Produktivzugang wird freigeschaltet, sobald Sie eine Zahlungsmethode hinzufügen und einen Absender verifizieren.

Sie nutzen Claude Code, Cursor oder Codex? Kopieren Sie einen Setup-Prompt und Ihr Agent installiert die Bird CLI und Skills für Sie. Wählen Sie Ihren:

Cursor