Webhook Status Pesan WhatsApp: Terkirim, Dibaca, sampai Gagal

Oleh Jalinara · 2026-07-27 · 6 menit baca
Ringkasan singkat: Webhook status pesan WhatsApp memberi tahu sistemmu secara realtime begitu pesan yang kamu kirim berubah status jadi terkirim, sampai, dibaca, atau gagal - beda dengan webhook pesan masuk yang menangkap chat dari pelanggan.

Kamu kirim pesan lewat API Jalinara, dapat respons sukses, terus bagaimana caranya tahu pesan itu beneran sampai atau dibaca pelanggan? Di sinilah gunanya webhook status pesan - cara sistemmu tahu perkembangan pesan yang kamu kirim tanpa harus cek manual satu-satu di dashboard.

Beda webhook status pesan dengan webhook pesan masuk

Ini yang sering bikin bingung, jadi perlu ditegaskan di awal. Webhook pesan masuk melaporkan chat baru yang datang dari pelanggan ke nomormu - itu soal pesan yang masuk. Webhook status pesan yang dibahas di artikel ini soal arah sebaliknya: melaporkan status pesan yang kamu kirim, apakah sudah terkirim, sampai ke perangkat penerima, dibaca, atau malah gagal.

Dua webhook ini beda event, beda kegunaan, dan biasanya didaftarkan sebagai endpoint yang terpisah di sistemmu. Kalau kamu cuma pasang salah satu, kamu cuma dapat separuh gambaran dari percakapan yang sedang berjalan.

Empat status yang perlu kamu tahu

Webhook status pesan Jalinara melaporkan empat kondisi utama:

  • sent - pesan sudah berhasil dikirim dari sisi Jalinara.
  • delivered - pesan sudah sampai di perangkat penerima.
  • read - penerima sudah membuka dan membaca pesannya.
  • failed - pesan gagal terkirim.

Urutan status ini biasanya berjalan bertahap: sent dulu, baru delivered, baru read. Tapi tidak semua pesan pasti sampai ke status read - tergantung apakah penerima membuka pesannya atau tidak.

Kenapa harus realtime lewat webhook

Bayangkan kamu kirim ratusan notifikasi transaksi dalam sehari. Kalau harus cek manual satu-satu di dashboard mana yang sudah terkirim dan mana yang gagal, itu kerjaan yang tidak masuk akal buat dilakukan terus-menerus. Webhook status pesan menghilangkan kebutuhan itu - begitu ada perubahan status, sistemmu langsung dapat kabarnya, didorong otomatis oleh proses pengiriman Jalinara tanpa kamu harus polling atau cek ulang secara berkala.

Sistem eksternal seperti aplikasi invoice atau notifikasi transaksi otomatis bisa memanfaatkan ini buat update status secara otomatis begitu tahu pesan sudah terkirim atau dibaca, tanpa campur tangan manual dari tim kamu.

Alur kerja konkretnya

Supaya lebih jelas, begini alur umum dari kirim pesan sampai sistemmu update record terkait:

  1. Kamu kirim pesan lewat API Jalinara.
  2. Respons API memberi kamu ID unik untuk pesan tersebut (messageId).
  3. Sistemmu menyimpan messageId itu, dikaitkan dengan record terkait - misalnya nomor invoice.
  4. Begitu status pesan berubah, webhook masuk ke endpoint yang sudah kamu daftarkan, membawa messageId yang sama plus status terbaru.
  5. Sistemmu mencocokkan messageId itu dan mengupdate record terkait - misalnya menandai invoice sebagai "sudah dinotifikasi".

Semua ini jalan tanpa perlu ada orang yang buka dashboard dan cek manual satu per satu.

Contoh payload webhook

Sebagai ilustrasi konsep, payload yang dikirim webhook status kurang lebih membawa informasi seperti ini:

{
  "messageId": "msg_8a2f91",
  "status": "delivered",
  "timestamp": "2026-07-27T10:15:00Z",
  "target": "628123456789"
}

Ini cuma ilustrasi untuk menggambarkan konsepnya, bukan skema resmi persis. Struktur payload yang detail dan lengkap ada di dokumentasi API Jalinara.

Kalau status "failed", bukan berarti ada error di Jalinara

Status gagal itu wajar terjadi dan penyebabnya biasanya di luar kendali sistem pengiriman. Beberapa penyebab umum:

  • Nomor tujuan tidak valid atau salah format.
  • Nomor tujuan tidak terdaftar di WhatsApp.
  • Kontak sudah memblokir nomor pengirim.

Kalau kamu lihat banyak status failed, cek dulu kualitas daftar nomor yang kamu kirimi, bukan buru-buru menyimpulkan ada masalah di sisi infrastruktur pengiriman Jalinara.

Webhook status pesan mengubah "semoga sampai" jadi kepastian yang bisa dicatat sistemmu sendiri, tanpa harus menebak-nebak.

Simpan riwayat status ini di sistemmu sendiri, terutama kalau statusnya dipakai untuk keperluan seperti audit trail atau bukti notifikasi transaksi. Jangan cuma mengandalkan tampilan dashboard sebagai satu-satunya sumber riwayat, karena sistemmu sendiri yang paling tahu konteks bisnis di balik tiap pesan yang dikirim.

Poin Penting

  • Webhook status pesan berbeda dari webhook pesan masuk: yang satu soal pesan yang kamu kirim, yang satu soal pesan masuk dari pelanggan.
  • Empat status yang dikirim lewat webhook ini: sent, delivered, read, dan failed.
  • Update status ini realtime, didorong otomatis oleh proses pengiriman Jalinara begitu ada perubahan.
  • Alur umum: kirim pesan lewat API, simpan messageId dari respons, lalu cocokkan dengan messageId yang sama saat webhook status masuk.
  • Status failed biasanya karena nomor tidak valid, tidak terdaftar di WhatsApp, atau diblokir kontak - bukan berarti ada error di sistem Jalinara.
  • Struktur payload detail ada di dokumentasi API; contoh di artikel ini sekadar ilustrasi konsep.

Pertanyaan yang sering ditanyakan

Apa beda webhook status pesan dengan webhook pesan masuk?

Webhook status pesan melaporkan perubahan status pesan yang kamu kirim (terkirim, sampai, dibaca, gagal). Webhook pesan masuk melaporkan chat baru yang datang dari pelanggan ke nomormu. Keduanya event yang beda arah.

Kenapa status pesan saya "failed"?

Status gagal biasanya karena nomor tujuan tidak valid, nomor tidak terdaftar di WhatsApp, atau kontak memblokir nomor pengirim. Ini bukan indikasi ada masalah di sistem Jalinara.

Apakah update status ini realtime?

Ya. Begitu ada perubahan status di sisi pengiriman, webhook langsung mendorong update ke endpoint yang kamu daftarkan, tanpa perlu polling manual.

Bagaimana cara mencocokkan status dengan pesan yang saya kirim?

Setiap pesan yang kamu kirim lewat API menghasilkan messageId di respons awal. ID ini yang sama muncul lagi di payload webhook status, jadi kamu tinggal mencocokkan ID tersebut di sistemmu.

Apakah bentuk payload webhook ini sama persis dengan dokumentasi resmi?

Contoh payload di artikel ini sekadar ilustrasi konsep umum (messageId, status, timestamp, target). Struktur field yang detail dan pasti mengikuti dokumentasi API Jalinara.

Perlu simpan history status di sistem saya sendiri?

Sebaiknya iya, terutama kalau statusnya dipakai untuk keperluan seperti audit trail invoice atau notifikasi transaksi, supaya kamu punya catatan tanpa bergantung terus ke riwayat di dashboard.