Skip to content

Webhook payload examples

Example JSON bodies Wazapin POSTs to your webhook URL.

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}. ::: :::

Navigation

Type to search…

↑↓ navigate↵ selectEsc close