Webhooks
- What webhooks are and how they work in AutoTalk
- What each delivery contains and how deliveries behave
- How to create and manage webhook endpoints
Webhooks send real-time notifications to external services when events happen in AutoTalk. Instead of repeatedly checking AutoTalk's API for new data, your external system receives an automatic notification the moment something happens, such as a new message arriving or a contact being updated.
You manage webhooks from the Webhooks page under Integrations in the sidebar.
How webhooks work
- You provide a Webhook URL (an endpoint on your server or a third-party service that can receive HTTP requests).
- You pick a data Model and an Operation (for example,
contacts+afterCreate) that should trigger the webhook, and optionally a CEL Filter to narrow which changes fire it. Your own Custom Types work too — pick thect:<slug>entry in the Model dropdown (for Custom Types, theafterCreate,afterUpdate, andafterDeleteoperations fire). - When a matching change occurs in AutoTalk, the platform sends an HTTP POST request to your Webhook URL with the event data in JSON format.
Your external system receives the data and can act on it however you need, whether that means updating a database, sending a notification, or triggering a workflow.
Delivery payload
Each delivery is an HTTP POST request with a JSON body in a stable shape:
{
"id": "contacts:afterCreate:66a1b2c3d4e5f6a7b8c9d0e1:2026-07-02T14:03:07.512Z",
"model": "contacts",
"op": "afterCreate",
"at": "2026-07-02T14:03:07.512Z",
"companyId": "664a0f9eb1c2d3e4f5a6b7c8",
"tenantId": "664a0f9eb1c2d3e4f5a6b7c8",
"doc": {
"_id": "66a1b2c3d4e5f6a7b8c9d0e1",
"name": "Jane Doe",
"createdAt": "2026-07-02T14:03:07.498Z",
"updatedAt": "2026-07-02T14:03:07.498Z"
},
"prev": null
}
| Field | Meaning |
|---|---|
id | A per-event identifier combining the model, operation, record id, and timestamp |
model | The data model that changed — a built-in model like contacts, or ct:<slug> for a Custom Type |
op | The lifecycle operation that fired the webhook (for example afterCreate, afterUpdate, afterDelete) |
at | When the event fired, as an ISO 8601 timestamp |
companyId / tenantId | Your company's id (both fields carry the same value) |
doc | The record involved in the event (the example above is truncated — you receive the full record) |
prev | The record's previous version, when one exists (updates); null otherwise (for example, on creates) |
For Custom Type (ct:) afterDelete deliveries, doc is not the deleted record — it is a {filter, hardDelete, deletedCount} summary object describing the delete, and prev is always null.
Delivery semantics
- Each event gets a single delivery attempt per webhook — failed deliveries are not retried.
- The request times out after 5 seconds, and redirects are not followed — point the webhook directly at an endpoint that responds quickly.
- Respond with any 2xx status to acknowledge receipt; the response body is ignored, and a non-2xx response counts as a failed delivery.
- Failed deliveries are logged — use the Logs button on the webhook's detail page to review recent attempts.
- Deliveries are not signed. If your receiver needs to verify that a request really came from AutoTalk, include a hard-to-guess token in your Webhook URL (for example, a secret query parameter) and check it on your side.
Managing webhooks
Viewing existing webhooks
Navigate to Integrations > Webhooks. The page displays a list titled Webhooks with all of your configured endpoints. The list follows AutoTalk's standard CRUD format with options to filter, view, edit, and delete entries.
Creating a new webhook
- On the Webhooks page, click the + button (tooltip "Add new webhooks").
- Fill in the fields:
- Webhook URL — The endpoint where AutoTalk should send event data (must be a public HTTP/HTTPS URL)
- Enabled — Whether the webhook fires (on by default)
- Trigger — A Model, an Operation, and an optional CEL Filter that decide which changes fire the webhook
- Save the webhook.
AutoTalk will now send an HTTP POST request to your Webhook URL every time a matching change occurs.