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. channels and primaryThreadChatId may be absent.
  • There is no conversation.deleted. A conversation goes away when its contact is removed, which surfaces as contact.deleted and chat.deleted per thread.

On this page