Skip to main content
WEBHOOK
message.received
{
  "id": "97e1d724-f38d-46f6-bc4c-d9e0f4cf9285",
  "event_type": "message.received",
  "timestamp": "2026-04-26T09:15:30Z",
  "organization_id": "0f1d6e38-d6bc-49be-9c39-1fcf2f946d7e",
  "webhook_id": "a17d6351-d8f6-4cd8-ae0e-fce090afdb8f",
  "data": {
    "message_id": "f4fd147d-e2a8-4d52-9eb5-98a72f5b90ab",
    "whatsapp_message_id": "wamid.HBgMNjI4MTIzNDU2Nzg5MAUCABIYFjQ1Njc4OTA1QjQ2M0M0Q0QwAA==",
    "phone_number": "6281234567890",
    "account_name": "Support Device",
    "status": "delivered",
    "direction": "inbound",
    "message_type": "text",
    "failure_reason": null,
    "reason": null,
    "sent_at": null,
    "delivered_at": "2026-04-26T09:15:29Z",
    "read_at": null,
    "failed_at": null,
    "whatsapp_account_id": "c053d8ef-6c19-4ecb-9cc5-a4a64be79d92",
    "campaign_id": null,
    "batch_id": null
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.wazzapi.com/llms.txt

Use this file to discover all available pages before exploring further.

Headers

X-Wazzapi-Signature
string
required

HMAC-SHA256 signature of the raw request body using your webhook secret. Verify the exact body bytes before parsing JSON.

Example:

"sha256=4e710b7fb7f5fa8ef4c8c9c7c4a28d9f6d8eb83ca8012f1d64d0170dc0f7f7d4"

X-Wazzapi-Event
string
required

Webhook event type for quick routing before inspecting the JSON payload.

Example:

"message.received"

X-Wazzapi-Event-ID
string<uuid>
required

Stable delivery attempt identifier that you can use for idempotency and tracing.

Body

application/json

Standard envelope for every webhook delivery sent by Wazzapi to your endpoint.

id
string<uuid>
required

Payload identifier generated for this webhook body.

event_type
enum<string>
required

Webhook event name you subscribed to.

Available options:
message.received
timestamp
string<date-time>
required

UTC timestamp when Wazzapi created the webhook payload.

organization_id
string<uuid>
required

Organization that owns the event and webhook subscription.

webhook_id
string<uuid>
required

Webhook subscription identifier that produced the delivery.

data
object
required

Message lifecycle payload. Timestamps are populated according to the event: inbound messages usually set delivered_at, outbound send confirmations set sent_at, read receipts set read_at, and failures set failed_at.

Response

Acknowledge delivery. Any 2xx response marks the attempt as successful.