Skip to main content

Outbound webhooks

Moveo delivers bot responses, agent messages, and session events to your webhook endpoint via HTTP POST requests.

Webhook request format

All webhook requests include the following headers:

HeaderDescription
Content-Typeapplication/json
X-Moveo-SignatureHMAC-SHA256 signature of the request body.

Every webhook payload contains these base fields:

{
"event_type": "message:brain_send",
"request_id": "req-123",
"session_id": "sess-456",
"external_session_id": "your-session-789",
"integration_id": "intg-001",
"desk_id": "desk-456",
"context": {
"user": {
"user_id": "user-789"
}
},
"timestamp": 1704067200000
}
FieldTypeDescription
event_typestringType of event. See event types.
request_idstringUnique identifier for this request.
session_idstringMoveo's internal session ID.
external_session_idstringYour session ID, if provided during session creation.
integration_idstringThe integration ID associated with this session.
desk_idstringThe desk ID associated with this session.
contextobjectSession context object, if available. See sessions for the context schema.
timestampintegerEvent creation time as a Unix timestamp in milliseconds.

Event types

Event typeDescription
message:brain_sendAI agent sends a message to the user.
message:sendMoveo live chat agent sends a message to the user.
message:composeTyping indicator (start/stop).
message:readMessages marked as read.
message:deliveredMessages marked as delivered.
conversation:member_joinAgent joined the conversation.
conversation:member_leaveAgent left the conversation.
conversation:closedConversation marked as resolved.
conversation:reopenedConversation reopened.
session:closedSession closed.
session:expiredSession expired due to timeout.

For detailed payload schemas of each event type, see event payloads.


Event subscription

You can filter which events you receive by configuring subscribed_events during integration setup.

Example: Only receive bot and agent messages.

{
"subscribed_events": ["message:brain_send", "message:send"]
}

If subscribed_events is empty or not set, you receive all event types.


Next steps