An example payload is shown below. Note that the events array may contain more than one event. We recommend you process each event in the array.
To ensure the authenticity of a webhook, a unique signature is generated with each event and sent in the X-Hook-Signature header. This signature is a hash of the request body and is created using a shared secret key that is provided to you when you set up the webhook.
To verify the webhook:
Use the shared secret key to compute the HMAC-SHA256 hash of the webhook request body.
Compare your computed hash with the signature provided in the X-Hook-Signature header.
If the signatures match, you can be sure the webhook was sent from us and the payload has not been tampered with.
If a webhook fails (a non-2xx response), the platform will retry the delivery using an exponential back-off with a randomized delay.
Attempt 1: After 1 minute
Attempt 2: After 5 minutes
Attempt 3: After 30 minutes
Final Attempt: After 1 hour
If all four attempts fail, the webhook will be disabled automatically. The event will not be delivered, and you will need to re-enable the webhook from your account settings.
Your webhook endpoint should respond with a 2xx status code as quickly as possible (ideally within a few seconds). Do not perform long-running tasks like database operations or API calls in the webhook handler. Instead, accept the payload and queue the work to be processed asynchronously in the background. Your endpoint should also be idempotent, meaning it can safely process the same event multiple times without side effects.
Contact your account manager to get setup with Webhooks.