Skip to content

Ticket Webhooks

Ticket webhooks send HTTP POST requests to your URLs when ticket-related events occur. You can use them to sync tickets with external systems, trigger automations, or build custom notifications.

EventDescription
ticket.createdA new ticket is created
ticket.updatedA ticket’s details are modified
ticket.status_changedA ticket’s status changes
ticket.resolvedA ticket is marked as resolved
ticket.closedA ticket is closed
ticket.assignedA ticket is assigned to an agent
ticket.sla_warningA ticket’s SLA is approaching its deadline
ticket.sla_breachedA ticket’s SLA deadline has passed
message.createdA new message is added to a ticket

Every webhook delivery sends a JSON payload with this structure:

{
"organizationId": "uuid",
"eventType": "ticket.created",
"eventId": "uuid",
"timestamp": "2025-01-15T10:30:00.000Z",
"data": {
// Event-specific fields
}
}
FieldTypeDescription
organizationIdUUIDYour organization’s ID
eventTypestringOne of the supported event types above
eventIdUUIDUnique identifier for this event
timestampISO 8601When the event occurred
dataobjectEvent-specific data (ticket details, message content, etc.)

To create a webhook, provide a name, HTTPS URL, and at least one event to subscribe to.

FieldRequiredDescription
nameYesA descriptive name (up to 200 characters)
urlYesHTTPS endpoint URL (up to 2,000 characters)
eventsYesArray of event types to subscribe to (1–50 events)
secretNoSigning secret for HMAC-SHA256 verification (16–500 characters)
headersNoCustom HTTP headers to include in deliveries
activeNoWhether the webhook is active (default: true)
retryPolicyNoArray of retry delays in seconds (up to 10 entries)
  • Maximum 20 webhooks per organization.
  • Webhook URLs must use HTTPS.
  • URLs cannot point to localhost, private IPs, or internal DNS suffixes.

All fields are optional when updating. Set secret to null to remove the signing secret.

Deleting a webhook removes it and all associated delivery logs permanently.

When a delivery fails, it is retried according to the webhook’s retry policy. The default retry delays are:

AttemptDelay
1st retry1 second
2nd retry5 seconds
3rd retry30 seconds
4th retry5 minutes
5th retry30 minutes
6th retry2 hours

You can customize the retry policy when creating or updating a webhook by providing an array of delays in seconds.

After 10 consecutive failed deliveries, the webhook is automatically disabled and an admin notification is sent. Re-enable it manually after resolving the issue with your endpoint.

Every delivery attempt is logged with:

FieldDescription
eventTypeThe event that triggered the delivery
payloadThe JSON payload that was sent
responseStatusHTTP status code from your endpoint
responseBodyResponse body (up to 4,096 bytes)
attemptNumberWhich attempt this was
deliveredAtWhen the delivery succeeded (null if not yet delivered)
failedAtWhen the delivery failed (null if not failed)
nextRetryAtWhen the next retry is scheduled (null if no retry pending)

You can manually retry a failed delivery from the delivery log. The delivery must not have already succeeded, and the webhook must be active.

Send a test payload to verify your endpoint is reachable and correctly processing requests. The test payload uses "test" as the event type:

{
"organizationId": "your-org-id",
"eventType": "test",
"eventId": "generated-uuid",
"timestamp": "2025-01-15T10:30:00.000Z",
"data": {
"message": "This is a test delivery from the webhook system."
}
}