Use Certainly as the First Responder for Zendesk Tickets

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:

  1. Create a Zendesk user (light agent) that will be used as the author of Certainly responses
  2. Create a Certainly bot that will take care of Zendesk "comment added" events
  3. Set up Zendesk to send "comment added" events to Certainly
  4. Monitor the Webhook execution
 

Create a Zendesk user to  be used as the author of Certainly responses

  1. Go to Zendesk Admin > Team members
  2. Click Create Team Member
  3. 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.


  4. Save it
  5. 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![Logo\n\nDescription automatically generated with medium confidence](https://d3v-certainly-demo.zendesk.com/attachments/token/nMM09VIy92LSF4dilrKZWSck/?name=image.png)\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.

  1. Go to Zendesk Admin Center > Webhooks and click Create Webhook
  2. Select "Comment created" as shown in the screenshot below
  3. Name it as you wish (e.g. Certainly First Responder)
  4. 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.
    For example, to make the Certainty bot respond only to email tickets with new and open status, add to the URL  :

    ?channels=mail&statuses=new,open

  5. Insert the URL into the Endpoint URL field, and leave Authentication as None
  6. 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:

  1. Double-check that Bot Deployment ID (did) and API token (token) are correct
  2. Double-check that the Endpoint URL is correct
  3. 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.