Skip to main content
← Back to Webhooks This page documents the outbound events that Vobiz delivers to your server (Vobiz → your url). For the inbound Meta → Vobiz contract and how to register a subscription, see the Webhooks overview and the Webhooks API. All outbound webhooks are HTTP POST requests with Content-Type: application/json, signed with the X-Webhook-Signature header (see Verifying signatures).

Common Envelope

Every outbound webhook body is the same envelope. Only the payload object differs per event type.
Envelope shape
The X-Webhook-Event request header carries the same value as event_type, so you can route on the header before parsing the body.
There are exactly three outbound event types: message.inbound, message.status, and call.<event>. There is no separate message.delivered, message.read, message.sent, or message.failed event - those are delivery states reported inside message.status.

message.inbound

An end customer sent a message to your WhatsApp number. This is the event you build conversational experiences and auto-replies on. The payload contains the WhatsApp Cloud API change value: the channel metadata, the sender in contacts[], and the message in messages[] (with the WhatsApp message id wamid and the type-specific content).
message.inbound

Message types

The messages[].type field reflects the WhatsApp message type, e.g. text, image, video, audio, document, location, contacts, button, interactive. Text content is in text.body; media and interactive messages carry their own type-specific object alongside.

message.status

A delivery-status update for a message you sent. The payload contains the change value with a statuses[] array; each entry has the WhatsApp message id (id = the wamid returned when you sent the message), the recipient_id, and a status. status is one of:
delivered and read are values of status inside a single message.status event - they are not separate event types. Use the id to correlate the update back to the message you sent.
message.status

call.<event>

WhatsApp Business Calling lifecycle events. The event_type suffix mirrors Meta’s call event, so values you may receive include:
  • call.connect - a call is being set up (carries the SDP offer in the session).
  • call.status_change - the call status changed (e.g. ringing → accepted).
  • call.terminate - the call ended.
The payload contains the change value with a calls[] array. Each call entry includes id, from, to, event, status, direction, and (for connect) a session with the SDP.
call.connect

Handling tips

  • Deduplicate on event_id - Vobiz may retry a delivery, and the underlying WhatsApp event can repeat.
  • Verify the signature on every request before trusting the body (see the overview).
  • Respond fast - return 200 quickly and process asynchronously; Vobiz uses a short per-delivery timeout.