Create a Webhook Subscription
Creates a webhook subscription for the authenticated API user. A subscription may listen for one or more trigger values. Outbound requests default to POST when method is omitted. URL placeholders such as {{id}} and {{metadata.us_state}} are populated from each webhook payload. Optional headers are encrypted at rest and are not returned by the API.
Authorizations
Token-based authentication with required prefix "Token"
Body
Webhook URL. Supports {{variable}} placeholders resolved from the webhook payload (e.g. https://api.example.com/leads/{{id}}/notify). Use dot notation for nested values (e.g. {{metadata.us_state}}).
1 - 255LEAD_CREATED, LEAD_UPDATED, LEAD_CLOSED, LEAD_CLOSED_INCOMPLETE, LEAD_LOST, LEAD_SCHEDULE_COMPLETED, LEAD_LATE_CALLBACK, LEAD_OUT_OF_TERRITORY, LEAD_BAD_NUMBER, LEAD_CANCELLED, LEAD_CALLBACK_TO_TRANSFER, LEAD_BEFORE_REENGAGEMENT, LEAD_REENGAGEMENT, LEAD_FIRST_INBOUND, CALL_COMPLETE, BEFORE_CALLING, CALL_FAILED, CALL_ENDED, CALL_TRANSFER_INITIATED, SMS_COMPLETE, SMS_DNC, CALL_DNC HTTP method to use when sending the webhook request. NULL or blank defaults to POST.
GET- GETPOST- POSTPUT- PUTPATCH- PATCH
GET, POST, PUT, PATCH Optional filter expression that controls when the webhook fires. The expression is evaluated against the webhook payload - the same data sent in the request body. Leave blank to always fire. Use has('field') to check whether a field exists, get('path.to.value', default) for safe nested access, and comparison operators such as ==, !=, and, or. Examples: status == 'CLOSED', has('last_chat') and last_chat['is_contact'], get('last_chat.call_direction', '') == 'INBOUND'
Optional HTTP headers added to outbound webhook requests. Header values must be strings. Headers are accepted when creating a subscription but are never returned by the API.
Response
Webhook subscription created successfully.
Webhook URL. Supports {{variable}} placeholders resolved from the webhook payload (e.g. https://api.example.com/leads/{{id}}/notify). Use dot notation for nested values (e.g. {{metadata.us_state}}).
255LEAD_CREATED, LEAD_UPDATED, LEAD_CLOSED, LEAD_CLOSED_INCOMPLETE, LEAD_LOST, LEAD_SCHEDULE_COMPLETED, LEAD_LATE_CALLBACK, LEAD_OUT_OF_TERRITORY, LEAD_BAD_NUMBER, LEAD_CANCELLED, LEAD_CALLBACK_TO_TRANSFER, LEAD_BEFORE_REENGAGEMENT, LEAD_REENGAGEMENT, LEAD_FIRST_INBOUND, CALL_COMPLETE, BEFORE_CALLING, CALL_FAILED, CALL_ENDED, CALL_TRANSFER_INITIATED, SMS_COMPLETE, SMS_DNC, CALL_DNC HTTP method to use when sending the webhook request. NULL or blank defaults to POST.
GET- GETPOST- POSTPUT- PUTPATCH- PATCH
GET, POST, PUT, PATCH Optional filter expression that controls when the webhook fires. The expression is evaluated against the webhook payload - the same data sent in the request body. Leave blank to always fire. Use has('field') to check whether a field exists, get('path.to.value', default) for safe nested access, and comparison operators such as ==, !=, and, or. Examples: status == 'CLOSED', has('last_chat') and last_chat['is_contact'], get('last_chat.call_direction', '') == 'INBOUND'