# WhatsApp-Nachrichtenstatusereignisse

Bird zeichnet **Events** für eingehende und ausgehende WhatsApp-Nachrichten auf. Eine ausgehende Timeline zeigt, was nach dem Senden mit Rückgabe von `202` passiert ist: Annahme, Übergabe an WhatsApp, Zustellung, Lesebestätigung oder Fehlschlag. Eine eingehende Timeline erfasst, wann Bird die Nachricht empfangen hat.

Diese Seite behandelt das Auslesen dieser Zeitleiste über die API. Wenn Bird jedes Ereignis beim Eintreten an Ihren Endpunkt senden soll, lesen Sie [Nachrichtenstatus-Webhooks](/docs/guides/whatsapp/webhooks/message-status). Reaktionen haben eine eigene Historie, beschrieben unter [Reaktionsereignisse](/docs/guides/whatsapp/events/reactions).

## Lifecycle-Events

Events erscheinen in chronologischer Reihenfolge. Eine ausgehende Nachricht kann bei [`whatsapp.failed` oder `whatsapp.rejected`](#fehlschlag-events) enden, und das `whatsapp.read`-Event erscheint nur, wenn der Empfänger die Nachricht öffnet. Eine eingehende Timeline beginnt mit `whatsapp.received` und kann `whatsapp.read` aufzeichnen, nachdem Ihr Workspace die Nachricht als gelesen markiert hat.

| Event                | Bedeutung                                                                            |
| -------------------- | ------------------------------------------------------------------------------------ |
| `whatsapp.accepted`  | Bird hat die Sendeanfrage angenommen. Das ist, was die `202` gemeldet hat.           |
| `whatsapp.sent`      | Bird hat die Nachricht an das WhatsApp-Netzwerk übergeben.                           |
| `whatsapp.delivered` | WhatsApp hat die Zustellung an das Gerät des Empfängers bestätigt.                   |
| `whatsapp.read`      | Der Empfänger hat die Nachricht geöffnet.                                            |
| `whatsapp.failed`    | Die Nachricht wurde nicht zugestellt. `error.code` gibt an, was sie aufgehalten hat. |
| `whatsapp.rejected`  | Bird hat die Nachricht vor dem Versand abgelehnt. Sie wurde nicht berechnet.         |
| `whatsapp.received`  | Bird hat eine eingehende Nachricht von einem Kontakt empfangen.                      |

Zutreffende `delivered`- oder `read`-Callbacks können Metas Preisanteil auslösen. WhatsApp-Event-Payloads enthalten keine Kosten. Lesen Sie die Nachricht mit [`GET /v1/whatsapp/messages/{message_id}`](/docs/api/reference/get-whatsapp-message) zurück, um die Kosten zu sehen. Siehe [Kosten und Abrechnung](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing).

[Eine eingehende Nachricht als gelesen markieren](/docs/guides/whatsapp/mark-message-as-read) zeichnet `whatsapp.read` in der Timeline auf, löst aber keinen Lesebestätigungs-Webhook aus. Die eingehende Nachricht behält ihren `received`-Status und zeichnet `read_at` auf, nachdem WhatsApp die Bestätigung akzeptiert hat.

`whatsapp.read` ändert den Nachrichten-`status` **nicht**. Eine zugestellte Nachricht bleibt `delivered`; die Nachricht zeichnet die Lesebestätigung zusätzlich in `read_at` auf.

**`whatsapp.delivered` kann vollständig übersprungen werden.** Wenn der Empfänger den Chat bereits auf seinem Gerät geöffnet hat, meldet Meta die Lesebestätigung, ohne jemals eine Zustellung zu melden. Die Timeline lautet dann `whatsapp.accepted` → `whatsapp.sent` → `whatsapp.read` ohne `whatsapp.delivered` dazwischen. Behandeln Sie `read` als Zustellnachweis: Ein Consumer, der auf `delivered` wartet, bevor er die Nachricht als zugestellt betrachtet, blockiert genau bei den Empfängern, die sie am schnellsten gesehen haben, und einer, der die Zustellrate nur aus `delivered` berechnet, unterschätzt sie. Der Nachrichten-`status` bleibt in diesem Fall `sent`, da nur eine Zustellbestätigung ihn weiterschaltet.

Ein reiner Lese-Callback kann trotzdem die zutreffende Meta-Gebühr auslösen. Bird verwendet eine einzige Gebührenidentität über die Zustell- und Lesepfade hinweg; das fehlende Zustellungs-Event bedeutet keine kostenlose Meta-Komponente. Siehe [Kosten und Abrechnung](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing).

Die Event-Typ-Liste ist offen: Neue Typen können im Laufe der Zeit hinzukommen. Behandeln Sie einen unbekannten Wert als zukünftiges Event, nicht als Fehler.

## Fehlschlag-Events

`whatsapp.failed` und `whatsapp.rejected` sind terminal. Eine **Ablehnung** bedeutet, dass Bird die Nachricht vor dem Versand an WhatsApp gestoppt hat, sodass sie nicht berechnet wurde. Ursachen sind unter anderem ein [unterdrückter oder abgemeldeter Empfänger](/docs/guides/whatsapp/opt-outs), unzureichendes Wallet-Guthaben oder ein Ziel ohne konfigurierten Preis. Ein **Fehlschlag** bedeutet, dass die Nachricht nicht zugestellt wurde, und `error.code` gibt an, wer das entschieden hat. Die meisten Codes enthalten das Urteil von WhatsApp, abgeleitet aus dem gemeldeten Code. `internal_error` ist die Ausnahme: Es erfasst fehlende nutzbare Absender-Credentials oder erschöpfte Verarbeitungsversuche. Ein unsicherer Transportversuch beweist nicht, dass Meta die Anfrage nie erhalten hat. `meta_error_code` enthält den Code von WhatsApp, wenn verfügbar, und ein `internal_error`-Fehlschlag hat konstruktionsbedingt keinen.

Beide Events enthalten ein `error`-Objekt mit einem stabilen Bird `code`, einer menschenlesbaren `description`, einem optionalen `meta_error_code` und `occurred_at`. Das Objekt erscheint in API-Einträgen und Webhook-Payloads nur für diese Event-Typen.

## Events aus der API lesen

`GET /v1/whatsapp/messages/{message_id}/events` gibt die Timeline in chronologischer Reihenfolge zurück. Die begrenzte Liste ist nicht paginiert. Das Lesen von Events erfordert einen API-Schlüssel mit `whatsapp:read`:

**TypeScript**

```typescript
const { data } = await bird.whatsapp.listEvents("wa_abc123");
for (const event of data) console.log(event.type, event.occurred_at);
```

Examples: [TypeScript](/de-de/dokumentation/guides/whatsapp/events/message-status.ts.md) · [Python](/de-de/dokumentation/guides/whatsapp/events/message-status.py.md) · [Go](/de-de/dokumentation/guides/whatsapp/events/message-status.go.md) · [PHP](/de-de/dokumentation/guides/whatsapp/events/message-status.php.md) · [CLI](/de-de/dokumentation/guides/whatsapp/events/message-status.cli.md) · [MCP](/de-de/dokumentation/guides/whatsapp/events/message-status.mcp.md) · [cURL](/de-de/dokumentation/guides/whatsapp/events/message-status.curl.md)

Eine Nachricht, die angenommen, gesendet, zugestellt und gelesen wurde, gibt vier Events zurück:

```json
{
  "data": [
    {
      "id": "ev_01ky7q6a1fejfbvs0myn41hj41",
      "occurred_at": "2026-07-23T14:48:34.71Z",
      "type": "whatsapp.accepted"
    },
    {
      "id": "ev_01ky7q6a2denvtd6jg1vqwmg13",
      "occurred_at": "2026-07-23T14:48:35.671Z",
      "type": "whatsapp.sent"
    },
    {
      "id": "ev_01ky7q6a2zff9r2qm74mmg1g6z",
      "occurred_at": "2026-07-23T14:48:36.642Z",
      "type": "whatsapp.delivered"
    },
    {
      "id": "ev_01ky7q6c21frssf0vj8h50qysw",
      "occurred_at": "2026-07-23T14:48:38.65Z",
      "type": "whatsapp.read"
    }
  ]
}
```

Übergeben Sie `type`, um genau einen öffentlichen Event-Typ zurückzugeben, z. B. `?type=whatsapp.failed` oder `?type=whatsapp.read`. Lassen Sie ihn weg, um die vollständige Timeline zu erhalten.

Dieselbe Timeline zeigt die Seite [WhatsApp-Protokoll](/docs/guides/whatsapp/message-log) an, wenn Sie eine Nachricht öffnen.

![Das WhatsApp-Nachrichtendetail-Sheet im Bird-Dashboard, geöffnet für eine zugestellte bird_delivery_update-Nachricht: Der Events-Tab zeigt die Lifecycle-Timeline pro Nachricht mit Accepted, Sent, Delivered und Read, jeweils mit verstrichener Zeit und Zeitstempel, über der abgedunkelten Nachrichtenliste](/images/docs/dashboard-whatsapp-detail.png)

## Nächste Schritte

- [Nachrichtenstatus-Webhooks](/docs/guides/whatsapp/webhooks/message-status): jedes Ereignis beim Eintreten empfangen
- [Reaktions-Events](/docs/guides/whatsapp/events/reactions): Aktuelle Reaktionen und das Reaktionsprotokoll lesen
- [Nachricht als gelesen markieren](/docs/guides/whatsapp/mark-message-as-read): Eine eingehende Nachricht bestätigen und Tipp-Indikator anzeigen
- [WhatsApp-Protokoll](/docs/guides/whatsapp/message-log): Die Ansicht pro Nachricht, die diese Timeline darstellt
- [WhatsApp-Nachrichten senden](/docs/guides/whatsapp/sending-whatsapp): Wo der Lifecycle einer Nachricht beginnt

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/whatsapp-api) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
