Webhook WhatsApp
Bird mendorong aktivitas WhatsApp ke endpoint Anda secara real-time, sehingga Anda tidak perlu melakukan polling. Berlangganan dari halaman Webhooks atau dengan POST /v1/webhooks. Panduan Webhooks membahas endpoint, verifikasi tanda tangan, dan percobaan ulang.
Event yang dapat Anda langgani
Setiap event tertaut ke payload-nya.
| Event | Dipicu ketika |
|---|---|
whatsapp.accepted | Bird menerima permintaan pengiriman keluar |
whatsapp.sent | Bird menyerahkan pesan ke jaringan WhatsApp |
whatsapp.delivered | WhatsApp mengonfirmasi pengiriman ke perangkat penerima |
whatsapp.read | Penerima membuka pesan |
whatsapp.failed | Pesan gagal terkirim |
whatsapp.rejected | Bird menolak pesan sebelum mengirimnya |
whatsapp.received | Kontak mengirimkan pesan kepada Anda |
whatsapp.reacted | Kontak menambahkan, mengubah, atau menghapus reaksi |
whatsapp_suppression.created | Supresi terbuka di workspace Anda |
whatsapp.group.join_request_created | Seseorang meminta untuk bergabung ke grup |
whatsapp.group.join_request_revoked | Seseorang membatalkan permintaan untuk bergabung ke grup |
Daftar tipe event bersifat terbuka: tipe baru dapat ditambahkan sewaktu-waktu, jadi perlakukan nilai yang tidak dikenali sebagai event baru, bukan sebagai kesalahan.
Envelope event
Setiap event WhatsApp menggunakan envelope webhook standar: sebuah type, sebuah timestamp, dan objek data khusus tipe.
{
"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"
}Field yang selalu ada di setiap event pesan
Setiap payload webhook WhatsApp untuk pesan membawa whatsapp_id, workspace_id, direction, from, dan to. Event reaksi, supresi, dan grup bukan tentang pesan, sehingga masing-masing memiliki struktur sendiri yang dijelaskan di halamannya.
- Alamat:
fromdantodapat berisiphone_numberE.164, business-scoped user ID Meta dibsuid, atau keduanya. Pesan yang diterima dari pengguna WhatsApp juga membawa profil yang mereka publikasikan, diusernamedandisplay_name. tagsdanmetadatamuncul di setiap event untuk pesan yang Anda kirim, mengulang nilai dari permintaan pengiriman, dan bernilainulljika permintaan tersebut tidak menyertakannya. Payloadwhatsapp.receivedtidak memiliki keduanya, karena pesan yang diterima tidak memiliki permintaan pengiriman.in_reply_to_message_idmuncul di setiap event keluar dari pesan yang dikirim sebagai balasan, dariwhatsapp.acceptedhinggawhatsapp.read,whatsapp.failed, atauwhatsapp.rejected, yang menyebutkan pesan yang dijawabnya.
Payload event tidak membawa informasi biaya. Baca kembali pesan dengan GET /v1/whatsapp/messages/{message_id} untuk melihat biayanya.
Langkah selanjutnya
- Webhook status pesan: payload pengiriman dan kegagalan
- Webhook pesan masuk: payload
whatsapp.received - Webhook reaksi: payload
whatsapp.reacted - Panduan Webhooks: endpoint, tanda tangan, percobaan ulang, dan katalog event lengkap
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini.