Webhooks
Webhooks memungkinkan Anda menerima notifikasi real-time saat event terjadi di kirim.dev, seperti pesan masuk atau status update.
Membuat Webhook
- Buka Webhooks di sidebar
- Klik Create Webhook
- Isi form:
- URL: Endpoint yang akan menerima webhook
- Events: Pilih events yang ingin diterima
- Secret (opsional): Secret untuk signature verification
- Klik Create
- Verifikasi webhook (lihat bagian Verification)
Events
Message Events
| Event | Deskripsi |
|---|---|
message.received | Pesan baru diterima |
message.sent | Pesan berhasil dikirim |
message.delivered | Pesan terdelivered ke device |
message.read | Pesan dibaca oleh penerima |
message.failed | Pengiriman pesan gagal |
Contact Events
| Event | Deskripsi |
|---|---|
contact.created | Kontak baru dibuat |
contact.updated | Kontak diupdate |
contact.deleted | Kontak dihapus |
Conversation Events
| Event | Deskripsi |
|---|---|
conversation.opened | Percakapan baru dimulai |
conversation.resolved | Percakapan di-resolve |
conversation.reopened | Percakapan dibuka kembali |
Broadcast Events
| Event | Deskripsi |
|---|---|
broadcast.started | Broadcast mulai berjalan |
broadcast.completed | Broadcast selesai |
Webhook Payload
Message Received
Code
Message Status Update
Code
Verification
Saat membuat webhook, kirim.dev akan mengirim verification request:
Code
Response yang diharapkan:
- Status: 200
- Body: nilai
hub.challenge
Signature Verification
Jika Anda set secret, setiap webhook request akan menyertakan signature di header:
Code
Verify Signature (Node.js)
Code
Verify Signature (PHP)
Code
Verify Signature (Python)
Code
Retry Policy
Jika webhook gagal (non-2xx response), kirim.dev akan retry:
| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 1 menit |
| 3 | 5 menit |
| 4 | 30 menit |
| 5 | 2 jam |
Setelah 5 kali gagal, webhook akan di-disable otomatis.
Mengelola Webhooks
Edit Webhook
- Klik webhook di list
- Update URL atau events
- Klik Save
Test Webhook
- Klik Test pada webhook
- Pilih event type
- Kirim test payload
- Lihat response
Disable/Enable
Toggle status webhook untuk sementara menonaktifkan tanpa menghapus.
Delete Webhook
- Klik icon Delete
- Konfirmasi penghapusan
Best Practices
1. Respond Quickly
Return 200 OK secepat mungkin, proses data secara async:
Code
2. Handle Duplicates
Webhook bisa dikirim lebih dari sekali. Gunakan message_id untuk dedupe:
Code
3. Verify Signature
Selalu verify signature untuk memastikan request berasal dari kirim.dev.
4. Use HTTPS
Webhook URL harus menggunakan HTTPS untuk keamanan.
5. Log Everything
Log semua webhook untuk debugging:
- Timestamp
- Event type
- Payload
- Response
Troubleshooting
Webhook tidak diterima
- Cek URL accessible dari internet
- Cek firewall/security rules
- Pastikan respond dengan 2xx status
- Lihat webhook logs di dashboard
Signature verification gagal
- Pastikan secret di code sama dengan di dashboard
- Gunakan raw body untuk verification, bukan parsed JSON
- Cek encoding (harus UTF-8)