What you do as an integrator
- Add your webhook URL in Wazapin dashboard.
- Save your webhook secret in your backend.
- Verify signatures on every incoming request.
- Process events idempotently (deduplicate by event ID).
Common events
message.new: New inbound or outbound message recorded.message.status.updated: Delivery status changes (queued,sent,delivered,read,failed).conversation.updated: Conversation state changes.
Example payload
message.status.updated
Signature verification
Always verify webhook signatures before processing payload.- Reject invalid signatures with
403. - Use raw request body bytes when calculating HMAC.
- Compare signatures using constant-time comparison.
Delivery and retry behavior
- Webhooks are asynchronous.
- Your endpoint should return
2xxquickly. - If your endpoint fails, Wazapin retries delivery.
Best practices
- Store processed
event_idto prevent duplicate processing. - Queue heavy work (DB updates, notifications) in background jobs.
- Log event IDs for support and incident tracing.