# Zdarzenia statusu wiadomości WhatsApp

Bird rejestruje **zdarzenia** dla przychodzących i wychodzących wiadomości WhatsApp. Oś czasu wiadomości wychodzącej pokazuje, co się wydarzyło po tym, jak wysyłka zwróciła `202`: przyjęcie, przekazanie do WhatsApp, doręczenie, odczytanie lub niepowodzenie. Oś czasu wiadomości przychodzącej rejestruje moment odebrania wiadomości przez Bird.

Ta strona opisuje odczytywanie tej osi czasu przez API. Aby Bird wysyłał każde zdarzenie do Twojego endpointu w momencie jego wystąpienia, zobacz [Webhooki statusu wiadomości](/docs/guides/whatsapp/webhooks/message-status). Reakcje mają własną historię, opisaną w [Zdarzenia reakcji](/docs/guides/whatsapp/events/reactions).

## Zdarzenia cyklu życia

Zdarzenia pojawiają się w kolejności chronologicznej. Wiadomość wychodząca może zatrzymać się na [`whatsapp.failed` lub `whatsapp.rejected`](#zdarzenia-niepowodzenia), a jej zdarzenie `whatsapp.read` pojawi się tylko wtedy, gdy odbiorca otworzy wiadomość. Oś czasu wiadomości przychodzącej zaczyna się od `whatsapp.received` i może zarejestrować `whatsapp.read` po tym, jak Twój obszar roboczy oznaczy wiadomość jako przeczytaną.

| Zdarzenie            | Znaczenie                                                                 |
| -------------------- | ------------------------------------------------------------------------- |
| `whatsapp.accepted`  | Bird przyjął żądanie wysyłki. To jest to, co zgłosił `202`.               |
| `whatsapp.sent`      | Bird przekazał wiadomość do sieci WhatsApp.                               |
| `whatsapp.delivered` | WhatsApp potwierdził doręczenie na urządzenie odbiorcy.                   |
| `whatsapp.read`      | Odbiorca otworzył wiadomość.                                              |
| `whatsapp.failed`    | Wiadomość nie została doręczona. `error.code` wskazuje, co ją zatrzymało. |
| `whatsapp.rejected`  | Bird odrzucił wiadomość przed wysłaniem. Nie została naliczona opłata.    |
| `whatsapp.received`  | Bird odebrał wiadomość przychodzącą od kontaktu.                          |

Odpowiednie wywołania zwrotne `delivered` lub `read` mogą uruchomić naliczenie opłaty Meta. Dane zdarzeń WhatsApp nie zawierają kosztu. Odczytaj wiadomość za pomocą [`GET /v1/whatsapp/messages/{message_id}`](/docs/api/reference/get-whatsapp-message), aby sprawdzić jej koszt. Zobacz [Koszty i rozliczenia](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing).

[Oznaczenie wiadomości przychodzącej jako przeczytanej](/docs/guides/whatsapp/mark-message-as-read) rejestruje `whatsapp.read` na jej osi czasu, ale nie emituje webhooka potwierdzenia odczytu. Wiadomość przychodząca zachowuje status `received` i rejestruje `read_at` po tym, jak WhatsApp przyjmie potwierdzenie.

`whatsapp.read` **nie** zmienia `status` wiadomości. Doręczona wiadomość pozostaje w statusie `delivered`; wiadomość dodatkowo rejestruje odczytanie w `read_at`.

**`whatsapp.delivered` może zostać całkowicie pominięte.** Gdy odbiorca ma już otwarty czat na swoim urządzeniu, Meta zgłasza odczytanie bez uprzedniego zgłoszenia doręczenia, więc oś czasu wygląda tak: `whatsapp.accepted` → `whatsapp.sent` → `whatsapp.read` bez `whatsapp.delivered` pomiędzy. Traktuj `read` jako dowód doręczenia: konsument czekający na `delivered`, zanim uzna wiadomość za dostarczoną, zawiesi się właśnie na odbiorcach, którzy zobaczyli ją najszybciej, a konsument obliczający wskaźnik doręczeń wyłącznie na podstawie `delivered` zaniży go. `status` wiadomości w tym przypadku pozostaje `sent`, ponieważ tylko potwierdzenie doręczenia go aktualizuje.

Wywołanie zwrotne samego odczytu nadal może uruchomić naliczenie odpowiedniej opłaty Meta. Bird używa jednej tożsamości opłaty zarówno dla ścieżki doręczenia, jak i odczytu; brak zdarzenia doręczenia nie oznacza darmowego komponentu Meta. Zobacz [Koszty i rozliczenia](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing).

Lista typów zdarzeń jest otwarta: nowe typy mogą być dodawane z czasem, więc traktuj nierozpoznaną wartość jako przyszłe zdarzenie, a nie błąd.

## Zdarzenia niepowodzenia

`whatsapp.failed` i `whatsapp.rejected` są terminalne. **Odrzucenie** oznacza, że Bird zatrzymał wiadomość przed wysłaniem jej do WhatsApp, więc nie została naliczona opłata. Przyczyny obejmują [wyciszonego lub wypisanego odbiorcę](/docs/guides/whatsapp/opt-outs), niewystarczające saldo portfela lub miejsce docelowe bez skonfigurowanej ceny. **Niepowodzenie** oznacza, że wiadomość nie została doręczona, a `error.code` wskazuje, kto o tym zdecydował. Większość kodów zawiera werdykt WhatsApp, zmapowany z kodu, który zgłosił. `internal_error` jest wyjątkiem: rejestruje brak użytecznych danych uwierzytelniających nadawcy lub wyczerpanie ponownych prób przetwarzania. Niepewna próba transportu nie dowodzi, że Meta nigdy nie otrzymała żądania. `meta_error_code` zawiera kod WhatsApp, gdy jest dostępny, a niepowodzenie `internal_error` z założenia go nie ma.

Oba zdarzenia zawierają obiekt `error` ze stabilnym Bird `code`, czytelnym dla człowieka `description`, opcjonalnym `meta_error_code` oraz `occurred_at`. Obiekt pojawia się w rekordach API i danych webhooków tylko dla tych typów zdarzeń.

## Odczytywanie zdarzeń z API

`GET /v1/whatsapp/messages/{message_id}/events` zwraca oś czasu w kolejności chronologicznej. Lista ograniczona nie jest paginowana. Odczytywanie zdarzeń wymaga klucza API z `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](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.ts.md) · [Python](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.py.md) · [Go](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.go.md) · [PHP](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.php.md) · [CLI](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.cli.md) · [MCP](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.mcp.md) · [cURL](/pl-pl/dokumentacja/guides/whatsapp/events/message-status.curl.md)

Wiadomość, która została przyjęta, wysłana, doręczona i odczytana, zwraca cztery zdarzenia:

```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"
    }
  ]
}
```

Przekaż `type`, aby zwrócić dokładnie jeden publiczny typ zdarzenia, np. `?type=whatsapp.failed` lub `?type=whatsapp.read`. Pomiń go, aby otrzymać pełną oś czasu.

Ta sama oś czasu jest tym, co renderuje strona [dziennika WhatsApp](/docs/guides/whatsapp/message-log), gdy otworzysz wiadomość.

![Arkusz szczegółów wiadomości WhatsApp w panelu Bird, otwarty dla doręczonej wiadomości bird_delivery_update: karta Events pokazująca oś czasu cyklu życia wiadomości z etapami Accepted, Sent, Delivered i Read, każdy z czasem trwania i znacznikiem czasu, na przyciemnionej liście wiadomości](/images/docs/dashboard-whatsapp-detail.png)

## Następne kroki

- [Webhooki statusu wiadomości](/docs/guides/whatsapp/webhooks/message-status): odbieraj każde zdarzenie w momencie jego wystąpienia
- [Zdarzenia reakcji](/docs/guides/whatsapp/events/reactions): odczytuj bieżące reakcje i dziennik reakcji
- [Oznacz wiadomość jako przeczytaną](/docs/guides/whatsapp/mark-message-as-read): potwierdź wiadomość przychodzącą i pokaż pisanie
- [Dziennik WhatsApp](/docs/guides/whatsapp/message-log): widok poszczególnych wiadomości renderujący tę oś czasu
- [Wysyłanie wiadomości WhatsApp](/docs/guides/whatsapp/sending-whatsapp): miejsce, w którym zaczyna się cykl życia wiadomości

## 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)
