> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ada.cx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ada.cx/_mcp/server.

# Webhook: Conversation ended

POST 

A webhook sent when a conversation ends

Reference: https://docs.ada.cx/reference/conversations/conversation-ended-webhook

## Request

### Payload

- `type` (enum, optional) — The webhook event type
  - Allowed values: `v1.conversation.ended`
- `timestamp` (string, optional) — The timestamp for when the event was generated, uses millisecond precision to help with event ordering
- `data` (ConversationEndedWebhookPayloadData, optional) — The webhook event data

## Types

### ConversationEndedWebhookPayloadData

The webhook event data

- `conversation_id` (string, optional) — The ID of the conversation that was ended
- `channel_id` (string, optional) — The ID of the channel
- `end_user_id` (string, optional) — The ID of the end user associated with the conversation
- `created_at` (string, optional) — The date and time the conversation was created
- `updated_at` (string, optional) — The date and time the conversation was last updated
- `ended_by` (ConversationEndedWebhookPayloadDataEndedBy, optional)
- `metadata` (map from string to ConversationEndedWebhookPayloadDataMetadata, optional) — A dictionary of key, value pairs assigned to the conversation - `metadata` keys may only be of type: `string` - `metadata` values may only be one of type: `string`, `boolean`, `integer`, or `number` (float)
- `ai_agent_domain` (string, optional) — The API domain of the AI Agent environment this webhook event is emitted from

### ConversationEndedWebhookPayloadDataEndedBy

- `id` (string, optional, nullable) — The ID of the user that ended the conversation
- `role` (enum, optional) — The role that ended the conversation
  - Allowed values: `end_user`, `system`, `human_agent`

### ConversationEndedWebhookPayloadDataMetadata