Skip to main content
Webhook memungkinkan WABeres mengirim notifikasi secara real-time ke server kamu setiap kali ada pesan masuk. Kamu tidak perlu polling API secara berkala — WABeres akan langsung push event ke URL yang kamu daftarkan.

Setup Webhook URL

Daftarkan URL webhook kamu melalui dashboard di bagian Pengaturan Webhook. URL yang didaftarkan harus:
  • Dapat diakses publik dari internet
  • Mendukung method POST
  • Mengembalikan HTTP status 200 sebagai tanda berhasil menerima event
Webhook tidak akan berfungsi jika URL kamu hanya bisa diakses secara lokal (localhost). Gunakan layanan tunnel seperti ngrok atau cloudflared saat development.

Struktur Payload

WABeres mengirim payload dalam format JSON via HTTP POST ke URL webhook kamu.

Pesan Masuk (incoming_message)

Verifikasi Signature

Setiap request webhook menyertakan tiga header tambahan: Signature webhook dibuat dengan cara: HMAC-SHA256(secret_key, webhook_id + timestamp + raw_body) Berbeda dengan signature API request, body pada webhook tidak di-hash SHA256 terlebih dahulu — body JSON ditulis langsung ke dalam HMAC.
Jika kamu menggunakan SDK, kamu tinggal panggil fungsi helper verifyWebhookSignature saja untuk verifikasi webhook yang datang dari WABeres API.
Contoh verifikasi di Go:
Contoh verifikasi di JavaScript/TypeScript:
Gunakan raw body (Buffer/byte array) saat verifikasi — jangan parse JSON terlebih dahulu. Me-parse lalu stringify ulang bisa menghasilkan body yang berbeda dan menyebabkan verifikasi selalu gagal.
Selalu gunakan timingSafeEqual atau fungsi perbandingan yang timing-safe saat membandingkan signature. Perbandingan string biasa (===) rentan terhadap timing attack.

Mekanisme Retry

Jika server kamu tidak mengembalikan HTTP 200, WABeres akan otomatis mencoba mengirim ulang event hingga 5 kali dengan jeda antar retry menggunakan random jitter — interval acak untuk menghindari thundering herd ke servermu.
Jika seluruh retry habis dan event tetap tidak berhasil diterima, event tersebut akan dicatat sebagai gagal dan dapat dilihat di dashboard pada tab Monitor Akses.
Pastikan endpoint webhook kamu idempotent — artinya menerima event yang sama lebih dari sekali tidak menyebabkan duplikasi data di sistemmu, karena retry dapat mengirim payload yang identik.

Best Practices

Respond cepat, proses belakangan. Kembalikan HTTP 200 sesegera mungkin setelah menerima webhook, lalu proses payload secara async. Jika pemrosesan memakan waktu lama, koneksi bisa timeout dan WABeres akan menganggap pengiriman gagal. Selalu verifikasi signature. Jangan proses payload dari request yang signature-nya tidak valid — ini bisa jadi indikasi request palsu dari pihak lain. Gunakan chat_id sebagai idempotency key. Simpan ID pesan yang sudah diproses untuk menghindari duplikasi saat retry terjadi.

Selanjutnya

Kirim Pesan

Kirim pesan teks ke nomor WhatsApp tujuan