Webhook Setup
Terima notifikasi real-time dari Wahero ke sistem Anda via webhook
Apa itu Webhook?
Webhook adalah cara untuk Wahero mengirim notifikasi otomatis ke server Anda ketika ada event tertentu (seperti pesan masuk, status berubah, dll).
Berbeda dengan polling (mengecek API berulang kali), webhook push data langsung ke Anda secara real-time.
⚡ Real-time
Terima event instant tanpa delay
🔄 Automatic
Tidak perlu polling API secara berkala
💰 Efisien
Hemat API calls dan bandwidth
Event yang Tersedia
message.receivedTriggered ketika menerima pesan masuk dari customer
message.sentTriggered ketika pesan berhasil dikirim
message.deliveredTriggered ketika pesan terkirim ke device customer
message.readTriggered ketika pesan dibaca customer
device.connectedTriggered ketika WhatsApp berhasil terhubung
device.disconnectedTriggered ketika WhatsApp terputus
Cara Setup Webhook
Siapkan Endpoint di Server Anda
Buat HTTP endpoint yang akan menerima POST request dari Wahero
Example (Node.js/Express):
app.post('/webhook/wahero', (req, res) => {
const event = req.body;
console.log('Webhook received:', event);
// Process event here
res.status(200).send('OK');
});Daftarkan Webhook URL di Dashboard
Login ke dashboard → Settings → Webhook → Add Webhook URL
Events: Pilih event yang ingin Anda subscribe
Verifikasi Signature
Untuk keamanan, verifikasi signature di header X-Wahero-Signature
const crypto = require('crypto');
const signature = req.headers['x-wahero-signature'];
const body = JSON.stringify(req.body);
const secret = 'YOUR_WEBHOOK_SECRET';
const hash = crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
if (hash !== signature) {
return res.status(401).send('Invalid signature');
}Test Webhook
Klik "Test Webhook" di dashboard untuk mengirim test payload. Pastikan endpoint Anda return status 200.
Webhook Aktif!
Webhook sudah aktif dan akan mengirim event ke endpoint Anda secara real-time
Contoh Payload
message.received event:
{
"event": "message.received",
"timestamp": "2025-12-04T10:30:00Z",
"data": {
"message_id": "msg_abc123xyz",
"from": "628123456789",
"to": "628987654321",
"message": "Halo, saya mau order",
"media_url": null,
"chat_id": "chat_xyz789"
}
}Best Practices
Respond Cepat (dalam 5 detik)
Return status 200 secepat mungkin. Jika processing lama, jalankan async/background job
Verifikasi Signature
Selalu verify signature untuk memastikan request memang dari Wahero
Handle Idempotency
Webhook bisa terkirim lebih dari sekali untuk event yang sama. Gunakan message_id untuk dedup
Log Semua Request
Simpan log untuk debugging. Berguna ketika ada issue atau discrepancy
Troubleshooting
Webhook tidak terkirim?
• Pastikan URL webhook accessible dari internet (bukan localhost)
• Cek firewall/security group apakah allow incoming dari Wahero IPs
• Pastikan endpoint return status 200
• Cek webhook logs di dashboard untuk error details
Signature verification failed?
• Pastikan menggunakan webhook secret yang benar
• Hash body sebelum parsing (raw body, bukan parsed JSON)
• Check case-sensitive header name
Butuh Bantuan Setup?
Tim support kami siap membantu setup webhook Anda