Webhooks & APIOutbound
conversation.updated
Emitted when a conversation row changes - new activity, status, assignment or rollups
type: conversation.updated
Fired when the conversation row changes: new activity arrives, its status moves, or Wexio recalculates the rollups it shows in the inbox (unread count, last message, last activity).
When it fires
- A message arrives or is sent in any of the conversation's threads.
- The conversation is closed, reopened, assigned, blocked, or its AI toggle changes.
- A rollup recalculation changes what the inbox row displays.
data shape
type Data = {
conversation: ConversationPayload;
previous?: Partial<ConversationPayload>; // prior values of the changed fields
};previous is populated when the emitting code supplied it - diff against it rather than re-reading the whole conversation.
Example envelope
{
"id": "evt_01JV4QHM087D3H6NM2Z1U4C7GS",
"type": "conversation.updated",
"timestamp": "2026-04-24T12:14:22.000Z",
"data": {
"conversation": {
"id": "6804f4d5a6f9f35f6e66f1c4",
"contactId": "6804f4d5a6f9f35f6e66f1a2",
"createdAt": "2026-04-24T12:14:20.000Z",
"updatedAt": "2026-04-24T12:14:22.000Z"
}
},
"meta": {
"eventId": "evt_01JV4QHM087D3H6NM2Z1U4C7GS",
"event": "conversation.updated",
"occurredAt": "2026-04-24T12:14:22.000Z",
"organisationId": "6640f3d5c8a0d7e8b7f20222",
"connectionId": "6640f45ac8a0d7e8b7f2014a",
"apiVersion": "2026-04-01",
"attempt": 1
}
}Notes
- This is a chatty event: it fires on every message in every thread of the conversation, on top of the
message.*event for that message. If you only need messages, subscribe to the message events instead. - The payload is lean - see the warning on
conversation.created.channelsandprimaryThreadChatIdmay be absent. - There is no
conversation.deleted. A conversation goes away when its contact is removed, which surfaces ascontact.deletedandchat.deletedper thread.
Related
conversation.createdchat.updated- thread-level changes- Shared Types -
ConversationPayload