Start at the Receive messages overview for a guided step-by-step setup.
Configure endpoints
OpenAPI: API reference → Webhooks.
Delivery shape (not a single event_type wrapper)
Unlike some BSP docs that wrap every event as { "type": "…", "data": { } }, Wazapin deliveries follow the standard webhook signing model:
The event name (for example
message.new) is the subscription / delivery type. It is not repeated as event_type on the body in the general case.
Use the delivery id header for idempotency (same as event_id in other providers). See Message lifecycle and idempotency.
Messaging event types (common)
Subscribe to these in the app when you integrate send/receive:
Full list with samples: Webhook event catalog. Filter event types per endpoint in webhook settings.
Example body: message.new (inbound text)
Example body: message.status_update
Verify signatures
Use the endpoint signing secret (whsec_…) and verify headers on the raw body before parsing JSON.
Delivery and retries
- Respond with
2xxquickly; process asynchronously. - Inspect and retry failed deliveries via the deliveries API.
- Deduplicate by delivery id header +
message_idwhere applicable.