> ## Documentation Index
> Fetch the complete documentation index at: https://docs.custral.com/llms.txt
> Use this file to discover all available pages before exploring further.

# conversation.deleted

> A conversation was deleted.

Fires once for each conversation that is deleted: from the app, one at a time or
several at once, by a workflow's delete step, or when the workspace's retention
policy removes old conversations.

## Payload

```json theme={null}
{
  "id": "whd_9Pw2xH6cN",
  "event": "conversation.deleted",
  "createdAt": "2026-09-11T17:22:08.114Z",
  "data": {
    "conversationId": "conv_7Yn2kP",
    "sourceType": "email"
  }
}
```

<ResponseField name="conversationId" type="string" required>
  The deleted conversation. Always present.
</ResponseField>

<ResponseField name="sourceType" type="string">
  The channel the conversation came from: `phone`, `email`, `sms`, `widget`,
  `meeting`, `slack`.
</ResponseField>

## Worth knowing

* **Ids only.** The conversation's messages and recording are deleted with it,
  so there is nothing to read back when this arrives. Keep your own copy of
  anything you need later.
* **A bulk delete is one delivery per conversation.**
* **Deleting it twice sends one event.** An id that is no longer in the
  workspace is skipped, so a repeated delete delivers nothing the second time.

## Example

```ts theme={null}
custral.on("conversation.deleted", async (event) => {
  const {conversationId} = event.data;

  // The conversation is gone in Custral, so drop the copy you kept.
  await warehouse.deleteConversation({externalId: conversationId});
});
```


## Related topics

- [Conversations](/dev/webhooks/events/conversations.md)
- [Webhooks](/dev/webhooks/overview.md)
- [Event catalog](/dev/webhooks/events/overview.md)
- [record.deleted](/dev/webhooks/events/record-deleted.md)
- [My Account](/start/account/overview.md)
