Overview
When a session processes a message, whatabot sends aPOST request to the callback URL configured on your API Key. This is how your system receives the bot’s responses — text messages, media, interactive menus, transfers, and session finalization.
Configuration
The webhook URL is set per API Key via thecallbackUrl field. See Create API Key or Update API Key.
Payload Structure
Every webhook is aPOST request with the following JSON body:
Top-level Fields
The changes Array
The changes array tells your system what happened during this flow step. There are three possible change types:
A single webhook can contain multiple change types — for example, when a node sends a message, transfers the conversation, and emits a kanban event in the same step.
Message Types
Whenfield is "messages", the value.messages array contains one or more messages. Each message has a type that determines its structure.
All messages may contain an optional tags field (string[]) with the tags configured on the flow node that produced the message. Use tags to categorize or route messages in your system.
Text
A plain text message.Media
A file attachment (image, video, audio, document, or sticker).Template
A pre-approved WhatsApp message template.Interactive — Button
A message with tappable buttons (up to 3).Interactive — List
A scrollable list with sections and rows.Interactive — CTA URL
A message with a link button.Function Types
Whenfield is "function", the value.functions array contains one or more actions triggered by the flow.
Transfer
The conversation was transferred to a human agent or sector.Finish
The session was finalized.Event Types
Whenfield is "event", the value.events array contains domain events emitted during flow processing. Each event has domain, type, payload, and timestamp.