Skip to contentSkip to navigationSkip to topbar
Page toolsOn this page
Looking for more inspiration?Visit the

Webhooks


Set up webhooks to receive notifications when conversations, participants, or communications change in Conversation Orchestrator. Each notification includes the event type, a timestamp, and the affected resource.

To receive webhooks, add one or more status callback URLs to your conversation configuration.


Configure status callbacks

configure-status-callbacks page anchor

Add status callback URLs when you create or update a configuration using the Twilio Console or the Conversation Orchestrator API reference.

To configure status callbacks in the Console, follow these steps:

  1. Sign in to the Twilio Console(link takes you to an external page).
  2. Go to Products & services > Conversation Orchestrator > Conversation configurations.
  3. Select your conversation configuration.
  4. In the Details section, click Edit.
  5. In the Webhook section of the Edit details modal, enter your webhook URL in the Callback URL field and select an HTTP method.
  6. Click Save changes.

To configure status callbacks with the API, include the statusCallbacks array when you create or update a Configuration resource. Status callback URLs must use HTTPS with a public host.


Conversation Orchestrator sends the following event types:

Event typeDescription
CONVERSATION_CREATEDA new conversation starts.
CONVERSATION_UPDATEDA conversation's status or name changes.
PARTICIPANT_ADDEDA participant joins a conversation.
PARTICIPANT_UPDATEDA participant's details change.
PARTICIPANT_REMOVEDA participant leaves a conversation.
COMMUNICATION_CREATEDA new message or transcription joins a conversation.
COMMUNICATION_UPDATEDA communication's details change.

Webhook payload structure

webhook-payload-structure page anchor

Every webhook payload is a JSON object with three top-level properties:

PropertyTypeDescription
eventTypestringThe event that triggered the webhook. See Event types for possible values.
timestampstringThe date and time when the event occurred, in ISO 8601 format (UTC).
dataobjectThe resource object. The structure depends on the event type.

The structure of the data object depends on the event type:

Conversation resource

conversation-resource page anchor

The data object for conversation events contains the following properties:

PropertyTypeDescription
idstringThe conversation ID.
accountIdstringThe account SID.
configurationIdstringThe conversation configuration ID.
configurationobjectThe conversation configuration, including channel settings, capture rules, and status callbacks.
statusstringThe conversation status. Possible values: ACTIVE, INACTIVE, CLOSED.
namestringThe conversation name.
createdAtstringThe date and time when the conversation was created, in ISO 8601 format.
updatedAtstringThe date and time when the conversation was last updated, in ISO 8601 format.

The data object for participant events contains the following properties:

PropertyTypeDescription
idstringThe participant ID.
conversationIdstringThe conversation ID.
accountIdstringThe account SID.
namestringThe participant display name.
typestringThe participant type. Possible values: CUSTOMER, HUMAN_AGENT, AI_AGENT, AGENT, or UNKNOWN.
profileIdstring or nullThe profile ID associated with Conversation Memory. It's resolved for CUSTOMER participants only.
addressesarray of objectsThe participant's communication addresses. Each object contains address, channel, and channelId.
createdAtstring or nullThe date and time when the participant was added, in ISO 8601 format.
updatedAtstring or nullThe date and time when the participant was last updated, in ISO 8601 format.

The data object for communication events contains the following properties:

PropertyTypeDescription
idstringThe communication ID.
conversationIdstringThe conversation ID.
accountIdstringThe account SID.
authorobjectThe sender's address. Contains address, channel, and participantId.
contentobjectThe communication content, which includes a type field (TEXT or TRANSCRIPTION), the message text, and, for voice transcriptions, a transcription object with word-level timing data.
channelIdstringThe channel-specific reference ID (for example, a Message SID or Call SID).
recipientsarray of objectsThe recipients of the communication. Each object contains address, channel, participantId, and deliveryStatus.
occurredAtstringThe date and time when the communication occurred, in ISO 8601 format.
createdAtstringThe date and time when the communication was created, in ISO 8601 format.
updatedAtstringThe date and time when the communication was last updated, in ISO 8601 format.

Delivery status values

delivery-status-values page anchor

The deliveryStatus field on each recipient has one of the following values:

ValueDescription
INITIATEDThe communication is queued to send.
IN_PROGRESSThe communication is being sent.
DELIVEREDThe provider confirms delivery.
COMPLETEDFor voice, the call has ended. For messaging, the recipient has read the message.
FAILEDThe communication couldn't be sent or delivered.

Webhook payload examples

webhook-payload-examples page anchor
1
{
2
"eventType": "CONVERSATION_CREATED",
3
"timestamp": "2026-03-31T16:32:51.345476911Z",
4
"data": {
5
"id": "conv_conversation_01kn2bv81ne86bpt2ad7wafpqz",
6
"accountId": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
7
"configuration": {
8
"channelSettings": {
9
"SMS": {
10
"captureRules": [
11
{
12
"from": "*",
13
"to": "+15551234567",
14
"metadata": {}
15
},
16
{
17
"from": "+15551234567",
18
"to": "*",
19
"metadata": {}
20
}
21
],
22
"statusTimeouts": {
23
"closed": 15,
24
"inactive": null
25
}
26
},
27
"VOICE": {
28
"captureRules": [],
29
"statusTimeouts": null
30
}
31
},
32
"conversationGroupingType": "GROUP_BY_PARTICIPANT_ADDRESSES_AND_CHANNEL_TYPE",
33
"description": "Configuration for support interactions",
34
"displayName": "support-conversations",
35
"intelligenceConfigurationIds": [],
36
"memoryExtractionEnabled": true,
37
"memoryStoreId": "mem_store_01kfp5sj35ecqsvff0b2vn77wr",
38
"redaction": null,
39
"statusCallbacks": [
40
{
41
"url": "https://example.com/webhook",
42
"method": "POST"
43
}
44
]
45
},
46
"configurationId": "conv_configuration_01km10y03se0dakjayz4vnxybc",
47
"createdAt": "2026-03-31T16:32:51.254049339Z",
48
"name": "Auto-generated conversation",
49
"status": "ACTIVE",
50
"updatedAt": "2026-03-31T16:32:51.254049558Z"
51
}
52
}
1
{
2
"eventType": "PARTICIPANT_ADDED",
3
"timestamp": "2026-03-31T16:32:51.346215804Z",
4
"data": {
5
"id": "conv_participant_01kn2bv81nfh9826g8cthk73ak",
6
"conversationId": "conv_conversation_01kn2bv81ne86bpt2ad7wafpqz",
7
"accountId": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"name": "+15559876543",
9
"addresses": [
10
{
11
"channel": "SMS",
12
"address": "+15559876543",
13
"channelId": null
14
}
15
],
16
"createdAt": null,
17
"profileId": "mem_profile_01kg5rdy0af2jtrjfr7vpxsaad",
18
"type": "CUSTOMER",
19
"updatedAt": null
20
}
21
}
1
{
2
"eventType": "COMMUNICATION_CREATED",
3
"timestamp": "2026-03-31T16:32:51.353676996Z",
4
"data": {
5
"id": "conv_communication_01kn2bv81ff44r5h81ar7r1z69",
6
"conversationId": "conv_conversation_01kn2bv81ne86bpt2ad7wafpqz",
7
"accountId": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
8
"author": {
9
"address": "+15559876543",
10
"channel": "SMS",
11
"participantId": "conv_participant_01kn2bv81nfh9826g8cthk73ak"
12
},
13
"content": {
14
"type": "TEXT",
15
"text": "Hello, I need help with my order"
16
},
17
"recipients": [
18
{
19
"address": "+15551234567",
20
"channel": "SMS",
21
"participantId": "conv_participant_01kn2bv81nfvfr1j2mdesj84z2",
22
"deliveryStatus": "DELIVERED"
23
}
24
],
25
"channelId": "SM5f4c40fd4643b8394bc0fe83e3d20ca9",
26
"createdAt": "2026-03-31T16:32:51.343567735Z",
27
"occurredAt": "2026-03-31T16:32:51.247963992Z",
28
"updatedAt": "2026-03-31T16:32:51.343573651Z"
29
}
30
}