Sign inGet Started

Webhook status pesan WhatsApp

Setiap perubahan status pesan keluar dapat dikirim ke endpoint Anda saat terjadi. Setiap payload menggunakan envelope event WhatsApp dan membawa field yang dibawa setiap event pesan.

Event pengiriman

whatsapp.accepted, whatsapp.sent, whatsapp.delivered, dan whatsapp.read hanya membawa field yang dibawa setiap event pesan. Event siklus hidup menjelaskan arti masing-masing dan kapan whatsapp.delivered dilewati.
Contoh kode
{
  "data": {
    "direction": "outbound",
    "from": { "phone_number": "+13124495569" },
    "metadata": { "session_id": "sess_4821" },
    "tags": [{ "name": "flow", "value": "login-otp" }],
    "to": { "phone_number": "+14155550100" },
    "whatsapp_id": "wam_01ky7qbvswf3fvyaw3az90391c",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-07-23T14:51:39.913Z",
  "type": "whatsapp.delivered"
}
whatsapp.failed dan whatsapp.rejected juga membawa objek error dengan Bird code yang stabil, description yang mudah dibaca, meta_error_code opsional, dan occurred_at. Lihat event kegagalan untuk mengetahui perbedaan keduanya. Pada WhatsApp kegagalan yang dilaporkan, description adalah penjelasan langsung dari WhatsApp. Pesan layanan yang jendela layanan pelanggannya ditutup antara penerimaan dan pengiriman gagal seperti ini:
Contoh kode
{
  "data": {
    "direction": "outbound",
    "error": {
      "code": "service_window_expired",
      "description": "Message failed to send because more than 24 hours have passed since the customer last replied to this number.",
      "meta_error_code": "131047",
      "occurred_at": "2026-07-23T14:51:40.201Z"
    },
    "from": { "phone_number": "+13124495569" },
    "metadata": null,
    "tags": null,
    "to": { "phone_number": "+14155550100" },
    "whatsapp_id": "wam_01ky7qbvswf3fvyaw3az90391c",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-07-23T14:51:40.201Z",
  "type": "whatsapp.failed"
}
Menandai pesan masuk sebagai sudah dibaca mencatat whatsapp.read dalam timeline pesan, tetapi tidak memicu webhook.

Langkah selanjutnya