Wazapin delivers events to URLs you configure under Developer → Webhooks. Each request is signed — verify first. See Webhook signature examples and Webhooks.
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.
:::details[Example body]
{
"message_id": "9f1fd66d-c37a-4b50-a8c2-b4dca523f9c8",
"conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
"contact_id": "c1a2b3c4-d5e6-7890-abcd-ef1234567890",
"channel_id": "wzp_abc123",
"direction": "inbound",
"from_phone": "6281234567890",
"msg_type": "text"
}:::
Interactive button reply (message.new)
Task guide: Handle interactive replies
User tapped a quick-reply button from your buttons message.
:::details[Example body]
{
"message_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
"channel_id": "wzp_abc123",
"direction": "inbound",
"from_phone": "6281234567890",
"msg_type": "interactive"
}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.
:::details[Example body]
{
"message_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
"direction": "inbound",
"from_phone": "6281234567890",
"msg_type": "interactive"
}:::
Location shared by user (message.new)
After a location request, the user may share coordinates.
:::details[Example body]
{
"message_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
"direction": "inbound",
"from_phone": "6281234567890",
"msg_type": "location"
}:::
Delivery status (message.status_update)
Task guide: Handle delivery status
When an outbound message moves through sent, delivered, read, or failed:
:::details[Example body]
{
"message_id": "9f1fd66d-c37a-4b50-a8c2-b4dca523f9c8",
"conversation_id": "0f89b0f9-74b4-44f9-b9b6-48f6d4de57aa",
"status": "delivered",
"organization_id": "org_123"
}:::note
Subscribe to message.status_update on your endpoint. Status values match message records from GET /v1/messages/{messageID}.
:::
:::