Wazapin pakai webhook buat nge-push event (kayak balasan customer atau laporan pengiriman) ke server kamu real-time. Nggak perlu polling API terus — cukup siapin server yang bisa dengerin HTTP POST yang udah di-sign.
Dapatkan indeks dokumentasi lengkap di: llms.txt
Ikuti langkah-langkah ini buat terima event webhook WhatsApp pertamamu.
Langkah 1: Siapin dulu
Sebelum mulai, pastiin kamu punya:
- Nomor WhatsApp yang udah terhubung: Mau WABA resmi atau channel unofficial sama-sama bisa. Cek Hubungkan nomormu.
- API key yang aktif: Buat ngatur webhook lewat API kalau dibutuhin. Cek API key.
- Endpoint HTTPS: URL publik di server kamu yang bisa nerima HTTP
POST. Buat ngulik di lokal, pakai Ngrok atau Localtunnel biar port lokal kamu bisa diakses dari luar.
Langkah 2: Daftarin endpoint webhook kamu
Kamu bisa atur endpoint lewat Dashboard Wazapin di Settings → Developer → Webhooks, atau langsung lewat API:
| Aksi | Method dan path | Deskripsi |
|---|---|---|
| Buat endpoint | POST /v1/settings/developer/webhooks/endpoints |
Daftarin URL webhook baru. |
| Cek daftar pengaturan | GET /v1/settings/developer/webhooks |
Cek endpoint yang udah terdaftar dan langganan yang aktif. |
| Update endpoint | PATCH /v1/settings/developer/webhooks/endpoints/{endpointID} |
Ganti URL atau jenis event yang kamu subscribe. |
| Hapus endpoint | DELETE /v1/settings/developer/webhooks/endpoints/{endpointID} |
Hapus endpoint. |
Buat referensi OpenAPI lengkapnya, lihat Referensi API Webhook.
Langkah 3: Verifikasi signature
Tiap webhook yang dikirim udah di-sign pakai endpoint signing secret (formatnya whsec_...). Biar nggak ada yang iseng kirim request palsu ke server kamu, verifikasi dulu header signature-nya sebelum kamu baca body JSON-nya.
Cek header ini di tiap request yang masuk:
svix-idatauwebhook-idsvix-timestampatauwebhook-timestampsvix-signatureatauwebhook-signature
Buat cara verifikasi manual dan helper SDK (Node/Express, Python), cek Panduan verifikasi signature webhook.
Langkah 4: Pilah event sesuai jenisnya
Kalau udah verified, cek jenis event-nya. Event yang kamu subscribe bakal dikirim sebagai JSON simpel (flat object). Pilah di logic aplikasi kamu berdasarkan msg_type atau nama event:
| Jenis event | Deskripsi | Panduan |
|---|---|---|
message.new (msg_type: text) |
User ngirim balasan teks. | Handle teks masuk |
message.new (msg_type: image, video, audio, document, sticker) |
User ngirim foto, voice note, dokumen, dll. | Handle media masuk |
message.new (msg_type: interactive) |
User pencet tombol quick-reply atau pilih menu list. | Handle balasan interaktif |
message.status_update |
Pesan berubah status jadi sent, delivered, read, atau failed. |
Handle status pengiriman |
Buat daftar lengkap event yang bisa kamu subscribe, lihat Katalog event webhook.
Langkah 5: Jangan proses event dobel (idempotency)
Kadang karena retry jaringan, server kamu bisa dapet event yang sama dua kali.
- Ambil header
svix-id(atauwebhook-id) dari request. - Simpan ID event yang udah kamu proses di database atau cache (misalnya Redis).
- Kalau ada request masuk dengan ID yang udah pernah kamu proses, langsung balas
200 OKaja dan skip.
Buat pola desain yang lebih detail, lihat Siklus hidup pesan dan idempotency.
Langkah 6: Langkah selanjutnya
- Cek contoh payload JSON buat tiap jenis event di Contoh payload webhook.
- Bikin webhook receiver yang solid dan siap produksi pakai resep Contoh: handle event webhook.