The request
tickethas the same shape as the Tickets API returns.changesis only onticket.updatedandticket.resolved, with each field’s old and new value.customer.userIdis your own ID, when the customer is linked through the Context API.
Check the signature
The signature works the same way as for Actions. It is the HMAC-SHA256 of the timestamp, a full stop and the raw request body, keyed with your webhook secret.- Refuse the request if it doesn’t match, or if the timestamp is more than five minutes old.
- While a secret rotation overlaps, the header carries two signatures separated by a comma. Accept the request if either matches.
Node.js (Express)
Delivery
- Answer with any 2xx within 10 seconds. We don’t retry, so do slow work after you answer.
- The address must be HTTPS and reachable from the internet.
- Settings → Tickets shows when we last posted and the last error, if there was one. A failed post also shows on the ticket’s timeline.

