Use webhooks to receive events on your server instead of polling the API.
Start at the Receive messages overview for a guided step-by-step setup.
Connect WhatsApp in the dashboard, then register HTTPS endpoints under Settings → Developer → Webhooks (or the API below). Wazapin POSTs signed JSON to your URL when subscribed events occur.

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

More samples: Webhook payload examples.

Verify signatures

Use the endpoint signing secret (whsec_…) and verify headers on the raw body before parsing JSON.

Delivery and retries

  • Respond with 2xx quickly; process asynchronously.
  • Inspect and retry failed deliveries via the deliveries API.
  • Deduplicate by delivery id header + message_id where applicable.
Reject requests that fail signature verification. Never verify on re-encoded JSON.