Webhooks
Webhook integration

Zendesk Webhooks: Send Support and User Events to Sazabi

By Sazabi Team

Webhook facts checked on the platform’s docs on Nov 8, 2026.

Zendesk can call a URL whenever a user changes, an organization is created or a ticket rule fires. Pointing that call at Sazabi turns each one into a log record, so support activity lives beside the logs from the systems it touches.

Two ways Zendesk triggers a webhook

Zendesk gives each webhook one of two connection methods, and you cannot change it later.

  • Zendesk events. The webhook subscribes to event types for users, organizations, help center content and similar activity. The type names look like zen:event-type:user.created. Requests always use POST with a JSON payload, and you cannot change either.
  • Trigger or automation. The webhook is connected to a business rule and is the route for ticket activity. The rule's notification_webhook action carries the webhook ID and the request body, which is whatever JSON you write.

For Sazabi, either works as long as you choose POST and JSON. A webhook that uses another method or format carries no body, so there is nothing to store.

What the event payload contains

Event webhooks share one schema. The top-level properties are account_id, detail, event, id, subject, time, type and zendesk_event_version. The detail object describes the resource that was created or changed, and the event object describes what changed, often with current and previous values. Trigger payloads have no fixed schema, so include the ticket fields you will want to search later.

Why send Zendesk webhooks to Sazabi

Zendesk's own invocation log keeps seven days of activity per webhook. Sazabi's Webhook Events source keeps each payload as a searchable log record, with the payload under webhook.* attributes. That is useful when a customer escalation points at something that happened last month.

It also lets you line up a support event with your application logs. If a user reports a failed signup, search for their ID in both the Zendesk records and your service logs. A suffix like /zendesk on the intake URL is stored as webhook.path, which keeps this source easy to filter.

Set up the webhook in Admin Center

Copy the intake URL from your Webhook Events source and treat it as a secret. In Zendesk:

  1. In Admin Center, choose Apps and integrations, then Webhooks, then Webhooks. Click Create webhook.
  2. Select Zendesk events and pick event types, or select Trigger or Automation. Click Next.
  3. Name the webhook and paste the intake URL as the Endpoint URL.
  4. Set the request method to POST and the format to JSON.
  5. Authentication is optional in the API, and Sazabi needs no extra headers.
  6. Optionally click Test webhook, then Create webhook.

For a trigger or automation, finish by adding a notify webhook action to the rule with your JSON body. To test an existing webhook later, use Test webhook from its options menu, choose an event and send a sample request.

Example Zendesk payload

This abbreviated example mirrors the user.active_changed sample in the Zendesk reference. The values are illustrative.

{
  "type": "zen:event-type:user.active_changed",
  "account_id": 12514403,
  "id": "2b24ef10-19d4-4740-93cf-8f98ec4776c0",
  "time": "2099-07-04T05:33:18Z",
  "zendesk_event_version": "2022-06-20",
  "subject": "zen:user:6596848315901",
  "detail": { "id": "6596848315901", "role": "end-user" },
  "event": { "current": false, "previous": true }
}

What to watch for

  • Best-effort delivery. Zendesk says it tries to deliver once but cannot guarantee it. The same action can fire a webhook more than once, and in some circumstances an event is not delivered at all.
  • Circuit breaker pauses. If 70 percent of requests fail within five minutes, or more than 1,000 error responses arrive in that window, Zendesk pauses the webhook for five seconds at a time. It does not trigger below 100 requests in five minutes. Paused attempts show as circuit broken in the log.
  • Limited retries. A 409 is retried up to three times. A 429 or 503 is retried only if it carries a retry-after under 60 seconds. A 12 second timeout is retried up to five times.
  • Signing. Zendesk signs the timestamp and body joined without a separator, in a signature header and a timestamp header.

Related guides: ClickUp and Mailgun. The integrations list shows other sources, and pricing covers allowances.

Zendesk webhook facts

Signatures: Sazabi doesn’t verify Zendesk requests and doesn’t reject unsigned ones. Zendesk signs the timestamp and body joined with no separator, a format none of Sazabi’s signature options covers. The Webhook Events source accepts any JSON POST to your intake URL, so the intake URL is the only credential. It’s hard to guess, so keep it private, and rotate the project’s public key if it leaks.

  • Events: A webhook can subscribe to Zendesk events such as zen:event-type:user.created, or connect to a trigger or automation for ticket activity. (Zendesk docs, accessed Nov 8, 2026)
  • Payload: Event webhooks use a JSON payload with the top-level properties account_id, detail, event, id, subject, time, type and zendesk_event_version. (Zendesk docs, accessed Nov 8, 2026)
  • Signing: Requests carry X-Zendesk-Webhook-Signature and X-Zendesk-Webhook-Signature-Timestamp headers, and the signature is base64(HMACSHA256(TIMESTAMP + BODY)). (Zendesk docs, accessed Nov 8, 2026)
  • Retries: Zendesk retries 409 responses up to three times and timeouts of 12 seconds up to five times, and a circuit breaker can pause a failing webhook. (Zendesk docs, accessed Nov 8, 2026)

Frequently Asked Questions

Do Zendesk webhooks send JSON?

Webhooks subscribed to Zendesk events always use POST with a JSON payload. For trigger and automation webhooks you choose the method and format, so pick POST and JSON to send them to Sazabi.

How do I send Zendesk ticket events to a webhook?

Connect the webhook to a trigger or automation. The notification_webhook action holds the webhook ID and the JSON body you want Zendesk to send.

Does Zendesk retry failed webhook requests?

Yes, in limited cases. It retries 409 responses up to three times, retries 429 and 503 responses that include a short retry-after header and retries 12 second timeouts up to five times.

What is the Zendesk webhook circuit breaker?

It pauses requests for five seconds when 70 percent of requests in five minutes fail or more than 1,000 errors occur. It does not trigger below 100 requests in five minutes.

Does Sazabi verify Zendesk signatures?

No. Zendesk signs the timestamp and body joined with no separator, a format none of Sazabi’s signature options covers. Sazabi doesn’t reject unsigned requests, so keep the intake URL private: it’s the only credential.

Sources

  1. Connection methods, POST and json requirements for event subscriptions, trigger payloads, invocation log, retry logic and circuit breaker (accessed Nov 8, 2026)
  2. Event schema, top-level properties and the example user.active_changed payload (accessed Nov 8, 2026)
  3. User event type names such as zen:event-type:user.created (accessed Nov 8, 2026)
  4. Signature and timestamp headers and the signing formula (accessed Nov 8, 2026)
  5. Admin Center steps to create and test a webhook, event subscriptions always use POST with a JSON payload (accessed Nov 8, 2026)
  6. Webhook Events log source: JSON only, payload under webhook.* attributes, path suffix stored as webhook.path; signature verification with the Standard Webhooks and Custom HMAC options, and rejected deliveries (accessed Nov 8, 2026)