> ## 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.

# record.deleted

> A record was deleted from any object in the workspace.

Fires once for each record that is deleted, on **any** object: from the app, by
a workflow's delete step, or by the assistant. Undoing an assistant change or an
accepted suggestion that created a record deletes that record too, and fires the
same event. Deleting several rows from a table at once delivers one event per
record.

## Payload

```json theme={null}
{
  "id": "whd_8Lp4vQ2nX",
  "event": "record.deleted",
  "createdAt": "2026-09-11T16:07:12.448Z",
  "data": {
    "recordId": "rec_3Ab9xK2mQ7",
    "objectId": "obj_2Zc7pL",
    "name": "Ravenna Foods"
  }
}
```

<ResponseField name="recordId" type="string" required>
  The deleted record's id. Always present: a payload without one is not sent at
  all.
</ResponseField>

<ResponseField name="objectId" type="string">
  The object the record belonged to.
</ResponseField>

<ResponseField name="name" type="string">
  The record's name at the moment it was deleted, so a receiver can say what
  went without keeping a copy. `null` when the record had no name.
</ResponseField>

## There is nothing left to read

The payload carries no fields. The record's fields, its links to other records
and the tasks about it are removed as it is deleted, so reading it back from the
API afterwards finds nothing. A receiver that needs the record's last values has
to have kept them, for example from
[`record.created`](/dev/webhooks/events/record-created) and
[`record.updated`](/dev/webhooks/events/record-updated).

## Worth knowing

* **Deleting an object fires nothing for its records.** Removing a whole object
  does not send a `record.deleted` for each record on it.
* **A bulk delete from a table is one delivery per record.** A record that fails
  to delete sends nothing.
* **Side effects send no events of their own.** The record's sequence
  enrollments are cancelled and its tasks are removed, and neither of those
  delivers a webhook.

## Example

```ts theme={null}
custral.on("record.deleted", async (event) => {
  const {recordId, objectId, name} = event.data;

  if (objectId !== process.env.DEALS_OBJECT_ID) return;

  await crm.archiveDeal({
    externalId: recordId,
    note: `Deleted in Custral: ${name ?? recordId}`,
  });
});
```


## Related topics

- [Records](/dev/webhooks/events/records.md)
- [Event catalog](/dev/webhooks/events/overview.md)
- [Webhooks](/dev/webhooks/overview.md)
- [conversation.deleted](/dev/webhooks/events/conversation-deleted.md)
- [My Account](/start/account/overview.md)
