Wazapin delivers events to URLs you configure under Developer → Webhooks. Each request is signed — verify first. See Webhook signature examples and Webhooks.
Event type (for example message.new) is determined by your endpoint subscription and delivery metadata, not by a top-level event_type field on every body. The JSON body contains the fields below.
Deduplicate using the svix-id (or webhook-id) header on each delivery. See Message lifecycle and idempotency.

Inbound text (message.new)

Task guide: Handle inbound text User sent a text message to your WhatsApp number.

Interactive button reply (message.new)

Task guide: Handle interactive replies User tapped a quick-reply button from your buttons message.
Fetch full content with GET /v1/messages/{messageID} when you need button id / title.

Interactive list reply (message.new)

Task guide: Handle interactive replies User picked a row from a list message.

Location shared by user (message.new)

After a location request, the user may share coordinates.

Delivery status (message.status_update)

Task guide: Handle delivery status When an outbound message moves through sent, delivered, read, or failed:
Subscribe to message.status_update on your endpoint. Status values match message records from GET /v1/messages/{messageID}.