This guide explains how to connect Zendesk to Certainly, so your AI agent can automate the processing of incoming tickets.
Prerequisites
Before starting the integration, make sure you meet these requirements to enable the connection between Zendesk and Certainly:
- Zendesk Admin Access: You must have Administrator privileges in your Zendesk account to configure API credentials and webhooks. Refer to the Setting roles and access in Zendesk Admin Center help article.
- Certainly Platform Access: Ensure you have an active Certainly account
Overview
When someone adds a new public comment on a Zendesk ticket (sends an email or fills out a web form), the Zendesk webhook will send the comment details to your Certainly AI agent. Then the agent can respond or take action based on the message.
To implement this:
- Create a Zendesk user (light agent) that will be used as the author of Certainly responses
- Create a Certainly bot that will take care of Zendesk "comment added" events
- Set up Zendesk to send "comment added" events to Certainly
- Monitor the Webhook execution
Create a Zendesk user to be used as the author of Certainly responses
- Go to Zendesk Admin > Team members
- Click Create Team Member
- Name it as you wish, and add an email address. Customers will receive emails from this user.
NOTE! To be able to send responses to the customer, this agent should have permission to add public comments. Light agents can only add private comments. Note that this may occupy one of your agent's seats. Read the Understanding system custom agent roles in Zendesk Support article for more information. - Save it
- Click on the newly created user, and record its ID in the address bar of the browser. That will be used as
author_id
later in the Zendesk Update Ticket webhook.
Creating the Certainly chatbot
The Certainly bot will receive all event details in the zd_event
custom variable, which looks like:
{
"account_id": 10991295,
"detail": {
"actor_id": "3207715824552",
"assignee_id": null,
"brand_id": "360003003597",
"created_at": "2025-09-08T13:07:22Z",
"custom_status": null,
"description": "some text here\n\n\n\nJohn Aider\n\nTechnical Account Manager\n\nE: aider@certainly.io\n\n\n[Logo Description automatically generated with medium confidence]\n\ncertainly.io<https://certainly.io/>",
"external_id": null,
"form_id": "360002888058",
"group_id": null,
"id": "1034",
"is_public": true,
"organization_id": null,
"priority": null,
"requester_id": "3207715824552",
"status": "NEW",
"subject": "This is the test",
"submitter_id": "3207715824552",
"tags": null,
"type": null,
"updated_at": "2025-09-08T13:07:22Z",
"via": {
"channel": "mail"
}
},
"event": {
"comment": {
"author": {
"id": "3207715824552",
"is_staff": false,
"name": "John Aider"
},
"body": "some text here\n\n\n\n**John Aider**\n\nTechnical Account Manager\n\n**E**: aider@certainly.io\n\n\n\ncertainly.io",
"id": "38843679128209",
"is_public": true
}
},
"id": "e7162015-7342-48ec-8fb9-87852dc88190",
"subject": "zen:ticket:1034",
"time": "2025-09-08T13:07:22.372026218Z",
"type": "zen:event-type:ticket.comment_added",
"zendesk_event_version": "2022-11-06"
}
The bot modifies the ticket by calling the Zendesk Support Update Ticket webhook. The bot's output is not sent back to Zendesk, but it is stored in the Inbox for bot monitoring. Use the Zendesk user created in the previous step (author_id
) as the author of responses. The Webhook's body can look like the following:
{
"ticket": {
"comment": {
"body": {{ llm_reply |tojson }},
"author_id": 38953377141905,
"public": true
},
"status": "pending"
}
}
Once you have your bot, go to Bot settings > Channels > Certainly Widget
- Note the Deployment ID in the JavaScript code for the widget
- Create a Chat REST API token, as shown in the screenshot below
Once you have the bot's Deployment ID and an API token, you are ready for the next step.
Sending "comment added" events from Zendesk to Certainly
Follow these steps to configure the Zendesk webhook.
- Go to Zendesk Admin Center > Webhooks and click Create Webhook
- Select "Comment created" as shown in the screenshot below
- Name it as you wish (e.g. Certainly First Responder)
- Combine the URL. Replace <BOT_DEPLOYMENT_ID> and <CERTAINLY_TOKEN> with the values from the previous step.
https://3bghcp6amr5nmhmpkloqmqtoxe0gfgok.lambda-url.eu-west-1.on.aws?did=<BOT_DEPLOYMENT_ID>&token=<CERTAINLY_TOKEN>
There are two optional query parameters:
-
channels
– Comma-separated list of ticket channels to process (default:mail,web_form
). -
statuses
– Comma-separated list of ticket statuses to process (default:new
). - The values should be lowercase.
email
tickets withnew
andopen
status, add to the URL :?channels=mail&statuses=new,open
-
- Insert the URL into the Endpoint URL field, and leave Authentication as None
- Now it should look similar to the following screenshot:
Monitor the Webhook execution
Once you configure the webhook, Zendesk will start sending Comment Added (zen:event-type:ticket.comment_added
) events to Certainly.
You can monitor them by clicking on the webhook name and selecting Activity.
They all should be green with 200 status and the "Executing ZendeskTicketEvent asynchronously" message.
If the webhook produces errors:
- Double-check that Bot Deployment ID (
did
) and API token (token
) are correct - Double-check that the Endpoint URL is correct
- If that does not fix the error, please send the screenshots of the error to Certainly for troubleshooting
Questions?
Please reach out to support@certainly.io so a Customer Success team member can help.