Which events can the Webhook Sender send, and what do they contain?
Updated October 19, 2026
You choose the events when you create an outbound webhook. Use the exact names below in the tool that receives them: they are also sent in the X-Webhook-Event header.
Events
| Event | Category | Sent when |
|---|---|---|
record.created | CRM | A new record is created. |
record.updated | CRM | A field of a record is updated. One event per field change. |
record.deleted | CRM | A record is deleted. |
relation.added | CRM | A relation is added between two records. |
relation.removed | CRM | A relation between two records is removed. |
note.created | Notes | A note is added to a record. |
note.updated | Notes | A note is edited. |
note.deleted | Notes | A note is deleted. |
task.created | Tasks | A task is linked to a record. |
task.completed | Tasks | A task is marked as completed. |
call.linked | Communication | A call recording is linked to a record. |
call.unlinked | Communication | A call recording is unlinked from a record. |
file.uploaded | Files | A file is uploaded to a record. |
file.deleted | Files | A file is deleted from a record. |
The Filter by Object Type of a webhook applies to the record the event is about: with only Deal selected, a note added to a person sends nothing.
Payload
Every message has the same envelope. Here is a record.created for a person:
{
"event": "record.created",
"eventId": "evt_1760870400000_k3j9x2ab",
"timestamp": "2026-10-19T10:00:00.000Z",
"workspaceId": "<workspace id>",
"data": {
"id": "<record id>",
"objectType": "person",
"objectTypeName": "Person",
"name": "Ana Lopez",
"fields": {
"name": "Ana Lopez",
"email": "ana@acme.example"
},
"createdAt": "2026-10-19T10:00:00.000Z",
"updatedAt": "2026-10-19T10:00:00.000Z"
}
}
What data holds depends on the event:
record.created,record.updated: the record'sid,objectType,objectTypeName,name,fields(by field slug) and dates.fieldsholds text, email, phone, number, checkbox, URL, social and single-select fields (the option's name).record.deleted:{ "id": "<record id>", "deleted": true }.note.*:recordId,noteId,title,contentPlain,author,createdAt,updatedAt.task.*:recordId,taskId,title,status,dueAt,assignee.relation.*:sourceRecordId,targetRecordId,fieldDefinitionId,fieldSlug.call.*:recordId,callId,recordName,meetingTitle.file.*:recordId,fileId,fileName,fileType.
The Configuration tab of each webhook shows a Payload Preview for the events it sends.
Good to know
record.updatedsends the record as it is now. It doesn't say which field changed or what the old value was: compare with your own copy if you need it.- There is no filter on values. Every update sends an event, and your tool decides what to do with it.
- The data is read when the message is sent. A retry a few seconds later carries the record as it is at that moment.
- Multi-select, owner, date, currency, location and relation fields aren't in
fields. Use the API with the recordidto read them.
Related
Still stuck?