Skip to main content
Add your HTTPS address in Settings → Tickets → Webhook URL. We post to it for every ticket, whether your team, your server or the API changed it.

The request

  • ticket has the same shape as the Tickets API returns.
  • changes is only on ticket.updated and ticket.resolved, with each field’s old and new value.
  • customer.userId is 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.