Webhooks and APIOutbound
contact.deleted
Emitted when a contact is hard-deleted
type: contact.deleted
Fired when a contact (People record) is permanently removed.
When it fires
- An operator deletes a contact in Wexio, and the record is removed.
It fires after the record is gone. Deleting a conversation without deleting its contacts does not fire it.
A merge is not a delete. When two contacts are folded into one, the retired contacts do not produce contact.deleted. They produce contact.merged with a { from, into } forwarding pointer. If you treat merges as deletions, your copy of the data drifts out of sync.
data shape
type Data = {
contact: { peopleId: string };
deletedAt: string; // ISO-8601 UTC
};Only peopleId is included - by the time this event fires, the full record is gone. See ContactPayload for the slim variant.
Example envelope
{
"id": "evt_01JV4QKM7T2C8N5XQ1B6D9F3HA",
"type": "contact.deleted",
"timestamp": "2026-04-24T11:00:00.000Z",
"data": {
"contact": {
"peopleId": "6804f4d5a6f9f35f6e66f1a2"
},
"deletedAt": "2026-04-24T11:00:00.000Z"
},
"meta": {
"eventId": "evt_01JV4QKM7T2C8N5XQ1B6D9F3HA",
"event": "contact.deleted",
"occurredAt": "2026-04-24T11:00:00.000Z",
"organisationId": "6640f3d5c8a0d7e8b7f20222",
"connectionId": "6640f45ac8a0d7e8b7f2014a",
"apiVersion": "2026-04-01",
"attempt": 1
}
}Notes
- A GDPR erase of a contact does not fire this event. The contact stays, anonymised, and you get
contact.updated.
Related
contact.createdcontact.updated- Shared Types -
ContactPayloadslim variant - Envelope & Delivery