Zendesk · AsyncAPI Specification
Zendesk Webhooks
Version 1.0.0
Zendesk Webhooks allow you to receive real-time HTTP notifications when events occur in your Zendesk account. Webhooks are the modern replacement for legacy targets and support event types for tickets, users, organizations, and messaging. When an event fires, Zendesk sends an HTTP POST request with a JSON payload to your configured endpoint URL. Webhooks can be connected to triggers, automations, and other Zendesk business rules.
Channels
ticketCreated
Channel for receiving notifications when a new ticket is created in Zendesk Support.
ticketUpdated
Channel for receiving notifications when a ticket is updated, including status changes, reassignments, and new comments.
ticketSolved
Channel for receiving notifications when a ticket is solved by an agent or automation.
userCreated
Channel for receiving notifications when a new user is created in Zendesk.
userUpdated
Channel for receiving notifications when a user is updated.
organizationCreated
Channel for receiving notifications when a new organization is created.
organizationUpdated
Channel for receiving notifications when an organization is updated.
satisfactionRatingCreated
Channel for receiving notifications when a customer submits a satisfaction rating on a ticket.
Messages
✉
TicketEvent
Ticket Event
A webhook payload sent when a ticket-related event occurs in Zendesk. The payload contents are determined by the webhook's configured body template, which can include Zendesk placeholders for ticket, user, and organization data.
✉
UserEvent
User Event
A webhook payload sent when a user-related event occurs in Zendesk.
✉
OrganizationEvent
Organization Event
A webhook payload sent when an organization-related event occurs in Zendesk.
✉
SatisfactionRatingEvent
Satisfaction Rating Event
A webhook payload sent when a satisfaction rating is submitted by a customer.
Servers
https
zendeskWebhook
Your webhook endpoint that receives HTTP POST requests from Zendesk. You configure this URL when creating a webhook in Zendesk.
AsyncAPI Specification
asyncapi: 3.0.0
info:
title: Zendesk Webhooks
version: 1.0.0
description: >-
Zendesk Webhooks allow you to receive real-time HTTP notifications when
events occur in your Zendesk account. Webhooks are the modern replacement
for legacy targets and support event types for tickets, users,
organizations, and messaging. When an event fires, Zendesk sends an HTTP
POST request with a JSON payload to your configured endpoint URL.
Webhooks can be connected to triggers, automations, and other Zendesk
business rules.
contact:
name: Zendesk Developer Support
url: https://developer.zendesk.com
license:
name: Zendesk API Terms
url: https://www.zendesk.com/company/agreements-and-terms/
externalDocs:
description: Zendesk Webhooks Documentation
url: https://developer.zendesk.com/documentation/webhooks/
defaultContentType: application/json
servers:
zendeskWebhook:
host: '{your-endpoint-host}'
pathname: '{your-endpoint-path}'
protocol: https
description: >-
Your webhook endpoint that receives HTTP POST requests from Zendesk.
You configure this URL when creating a webhook in Zendesk.
variables:
your-endpoint-host:
default: example.com
description: The hostname of your webhook receiver.
your-endpoint-path:
default: /webhooks/zendesk
description: The path on your server that handles webhook payloads.
channels:
ticketCreated:
address: /webhooks/zendesk/tickets/created
description: >-
Channel for receiving notifications when a new ticket is created in
Zendesk Support.
messages:
ticketCreatedMessage:
$ref: '#/components/messages/TicketEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
ticketUpdated:
address: /webhooks/zendesk/tickets/updated
description: >-
Channel for receiving notifications when a ticket is updated,
including status changes, reassignments, and new comments.
messages:
ticketUpdatedMessage:
$ref: '#/components/messages/TicketEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
ticketSolved:
address: /webhooks/zendesk/tickets/solved
description: >-
Channel for receiving notifications when a ticket is solved by an
agent or automation.
messages:
ticketSolvedMessage:
$ref: '#/components/messages/TicketEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
userCreated:
address: /webhooks/zendesk/users/created
description: >-
Channel for receiving notifications when a new user is created in
Zendesk.
messages:
userCreatedMessage:
$ref: '#/components/messages/UserEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
userUpdated:
address: /webhooks/zendesk/users/updated
description: >-
Channel for receiving notifications when a user is updated.
messages:
userUpdatedMessage:
$ref: '#/components/messages/UserEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
organizationCreated:
address: /webhooks/zendesk/organizations/created
description: >-
Channel for receiving notifications when a new organization is
created.
messages:
organizationCreatedMessage:
$ref: '#/components/messages/OrganizationEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
organizationUpdated:
address: /webhooks/zendesk/organizations/updated
description: >-
Channel for receiving notifications when an organization is updated.
messages:
organizationUpdatedMessage:
$ref: '#/components/messages/OrganizationEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
satisfactionRatingCreated:
address: /webhooks/zendesk/satisfaction-ratings/created
description: >-
Channel for receiving notifications when a customer submits a
satisfaction rating on a ticket.
messages:
satisfactionRatingMessage:
$ref: '#/components/messages/SatisfactionRatingEvent'
servers:
- $ref: '#/servers/zendeskWebhook'
operations:
receiveTicketCreated:
action: receive
channel:
$ref: '#/channels/ticketCreated'
title: Ticket Created
summary: Receive notification when a ticket is created.
messages:
- $ref: '#/channels/ticketCreated/messages/ticketCreatedMessage'
receiveTicketUpdated:
action: receive
channel:
$ref: '#/channels/ticketUpdated'
title: Ticket Updated
summary: Receive notification when a ticket is updated.
messages:
- $ref: '#/channels/ticketUpdated/messages/ticketUpdatedMessage'
receiveTicketSolved:
action: receive
channel:
$ref: '#/channels/ticketSolved'
title: Ticket Solved
summary: Receive notification when a ticket is solved.
messages:
- $ref: '#/channels/ticketSolved/messages/ticketSolvedMessage'
receiveUserCreated:
action: receive
channel:
$ref: '#/channels/userCreated'
title: User Created
summary: Receive notification when a user is created.
messages:
- $ref: '#/channels/userCreated/messages/userCreatedMessage'
receiveUserUpdated:
action: receive
channel:
$ref: '#/channels/userUpdated'
title: User Updated
summary: Receive notification when a user is updated.
messages:
- $ref: '#/channels/userUpdated/messages/userUpdatedMessage'
receiveOrganizationCreated:
action: receive
channel:
$ref: '#/channels/organizationCreated'
title: Organization Created
summary: Receive notification when an organization is created.
messages:
- $ref: '#/channels/organizationCreated/messages/organizationCreatedMessage'
receiveOrganizationUpdated:
action: receive
channel:
$ref: '#/channels/organizationUpdated'
title: Organization Updated
summary: Receive notification when an organization is updated.
messages:
- $ref: '#/channels/organizationUpdated/messages/organizationUpdatedMessage'
receiveSatisfactionRating:
action: receive
channel:
$ref: '#/channels/satisfactionRatingCreated'
title: Satisfaction Rating Created
summary: Receive notification when a satisfaction rating is submitted.
messages:
- $ref: '#/channels/satisfactionRatingCreated/messages/satisfactionRatingMessage'
components:
messages:
TicketEvent:
name: TicketEvent
title: Ticket Event
summary: >-
A webhook payload sent when a ticket-related event occurs in Zendesk.
The payload contents are determined by the webhook's configured body
template, which can include Zendesk placeholders for ticket, user,
and organization data.
contentType: application/json
headers:
type: object
properties:
x-zendesk-webhook-signature:
type: string
description: >-
HMAC SHA-256 signature for verifying the webhook payload
authenticity.
x-zendesk-webhook-signature-timestamp:
type: string
description: >-
Timestamp used in signature verification to prevent replay
attacks.
x-zendesk-webhook-id:
type: string
format: uuid
description: Unique identifier for the webhook configuration.
x-zendesk-webhook-invocation-id:
type: string
format: uuid
description: Unique identifier for this specific invocation.
payload:
$ref: '#/components/schemas/TicketEventPayload'
UserEvent:
name: UserEvent
title: User Event
summary: >-
A webhook payload sent when a user-related event occurs in Zendesk.
contentType: application/json
headers:
type: object
properties:
x-zendesk-webhook-signature:
type: string
x-zendesk-webhook-signature-timestamp:
type: string
x-zendesk-webhook-id:
type: string
format: uuid
x-zendesk-webhook-invocation-id:
type: string
format: uuid
payload:
$ref: '#/components/schemas/UserEventPayload'
OrganizationEvent:
name: OrganizationEvent
title: Organization Event
summary: >-
A webhook payload sent when an organization-related event occurs in
Zendesk.
contentType: application/json
headers:
type: object
properties:
x-zendesk-webhook-signature:
type: string
x-zendesk-webhook-signature-timestamp:
type: string
x-zendesk-webhook-id:
type: string
format: uuid
x-zendesk-webhook-invocation-id:
type: string
format: uuid
payload:
$ref: '#/components/schemas/OrganizationEventPayload'
SatisfactionRatingEvent:
name: SatisfactionRatingEvent
title: Satisfaction Rating Event
summary: >-
A webhook payload sent when a satisfaction rating is submitted by a
customer.
contentType: application/json
headers:
type: object
properties:
x-zendesk-webhook-signature:
type: string
x-zendesk-webhook-signature-timestamp:
type: string
x-zendesk-webhook-id:
type: string
format: uuid
x-zendesk-webhook-invocation-id:
type: string
format: uuid
payload:
$ref: '#/components/schemas/SatisfactionRatingPayload'
schemas:
TicketEventPayload:
type: object
description: >-
The payload for a ticket webhook event. Fields depend on the
webhook body template configuration. This schema represents the
default payload structure.
properties:
id:
type: integer
format: int64
description: The ticket ID.
external_id:
type: string
nullable: true
description: External ID for the ticket.
title:
type: string
description: The subject/title of the ticket.
description:
type: string
description: The ticket description (first comment).
status:
type: string
enum:
- new
- open
- pending
- hold
- solved
- closed
description: The current status of the ticket.
priority:
type: string
enum:
- urgent
- high
- normal
- low
nullable: true
description: The priority of the ticket.
type:
type: string
enum:
- problem
- incident
- question
- task
nullable: true
description: The type of the ticket.
requester_id:
type: integer
format: int64
description: The ID of the requester.
requester_email:
type: string
format: email
description: The email of the requester.
requester_name:
type: string
description: The name of the requester.
assignee_id:
type: integer
format: int64
nullable: true
description: The ID of the assigned agent.
assignee_email:
type: string
format: email
nullable: true
description: The email of the assigned agent.
group_id:
type: integer
format: int64
nullable: true
description: The ID of the assigned group.
group_name:
type: string
nullable: true
description: The name of the assigned group.
organization_id:
type: integer
format: int64
nullable: true
description: The organization ID.
organization_name:
type: string
nullable: true
description: The organization name.
tags:
type: array
items:
type: string
description: Tags on the ticket.
via:
type: string
description: The channel the ticket came through.
brand_id:
type: integer
format: int64
nullable: true
description: The brand ID.
ticket_form_id:
type: integer
format: int64
nullable: true
description: The ticket form ID.
latest_comment:
type: object
nullable: true
description: The most recent comment on the ticket.
properties:
body:
type: string
public:
type: boolean
author_id:
type: integer
format: int64
created_at:
type: string
format: date-time
description: When the ticket was created.
updated_at:
type: string
format: date-time
description: When the ticket was last updated.
UserEventPayload:
type: object
description: The payload for a user webhook event.
properties:
id:
type: integer
format: int64
description: The user ID.
name:
type: string
description: The name of the user.
email:
type: string
format: email
nullable: true
description: The email of the user.
phone:
type: string
nullable: true
description: The phone number of the user.
role:
type: string
enum:
- end-user
- agent
- admin
description: The role of the user.
organization_id:
type: integer
format: int64
nullable: true
description: The default organization ID of the user.
external_id:
type: string
nullable: true
description: External ID for the user.
tags:
type: array
items:
type: string
description: Tags on the user.
active:
type: boolean
description: Whether the user is active.
suspended:
type: boolean
description: Whether the user is suspended.
verified:
type: boolean
description: Whether the user is verified.
created_at:
type: string
format: date-time
description: When the user was created.
updated_at:
type: string
format: date-time
description: When the user was last updated.
OrganizationEventPayload:
type: object
description: The payload for an organization webhook event.
properties:
id:
type: integer
format: int64
description: The organization ID.
name:
type: string
description: The name of the organization.
details:
type: string
nullable: true
description: Organization details.
notes:
type: string
nullable: true
description: Internal notes.
domain_names:
type: array
items:
type: string
description: Associated domain names.
group_id:
type: integer
format: int64
nullable: true
description: Default group ID.
shared_tickets:
type: boolean
description: Whether shared tickets is enabled.
shared_comments:
type: boolean
description: Whether shared comments is enabled.
external_id:
type: string
nullable: true
description: External ID.
tags:
type: array
items:
type: string
description: Tags on the organization.
created_at:
type: string
format: date-time
description: When the organization was created.
updated_at:
type: string
format: date-time
description: When the organization was last updated.
SatisfactionRatingPayload:
type: object
description: The payload for a satisfaction rating webhook event.
properties:
id:
type: integer
format: int64
description: The satisfaction rating ID.
ticket_id:
type: integer
format: int64
description: The associated ticket ID.
score:
type: string
enum:
- good
- bad
description: The satisfaction score.
comment:
type: string
nullable: true
description: The comment provided with the rating.
requester_id:
type: integer
format: int64
description: The ID of the user who submitted the rating.
assignee_id:
type: integer
format: int64
description: The ID of the agent assigned when the rating was given.
group_id:
type: integer
format: int64
nullable: true
description: The group ID at the time of the rating.
created_at:
type: string
format: date-time
description: When the rating was created.
updated_at:
type: string
format: date-time
description: When the rating was last updated.