Webhooks

Organisation Events

organisation.deleted - a client org you manage was torn down

One event, and it is partner-only: it reaches your subscription and nothing else, because the client's own webhook connections are about to be wiped along with the rest of their data.

Subscribe with ORGANISATION_DELETED.

organisation.deleted

type: organisation.deleted

A managed client org was deprovisioned - you called deprovisionClientOrg.

data

type Data = {
  organisationId: string;
  externalId: string | null; // your id for the client, or null if never set
};

Note that externalId appears both in data and in meta here. In data it is explicitly null when unset; in meta it is omitted.

Example

{
  "id": "evt_09122334-4556-6778-8990-011223344556",
  "type": "organisation.deleted",
  "timestamp": "2026-09-30T19:00:00.000Z",
  "data": {
    "organisationId": "6716b2f0a1c34d0012ab89ef",
    "externalId": "crmco-client-5541"
  },
  "meta": {
    "eventId": "evt_09122334-4556-6778-8990-011223344556",
    "event": "organisation.deleted",
    "occurredAt": "2026-09-30T19:00:00.000Z",
    "organisationId": "6716b2f0a1c34d0012ab89ef",
    "externalId": "crmco-client-5541",
    "partnerId": "6716b1001c34d0012ab89abc",
    "apiVersion": "2026-04-01",
    "attempt": 1
  }
}

This event is emitted before the deletion cascade runs, so the org still resolves for fan-out. Expect it to arrive ahead of the deprovisionClientOrg mutation's own response, and do not assume the client's data is already gone when you receive it.

What You Will Not Receive

The cascade deletes the client's chats, messages, contacts, and everything else, but it does not emit a chat.deleted or contact.deleted per row. This single event is the whole signal.

Treat it as "everything for this client is gone" and clean up your own mirror in one pass, keyed on data.organisationId or data.externalId.

On this page