How-toHelpdeskIntegrationsZendesk

How to Let a Chatbot Create Tickets in Zendesk, Freshdesk or Zoho Desk

Set up a chatbot that answers first and files a Zendesk, Freshdesk or Zoho Desk ticket when a person is needed: the fields to send, setup steps and pitfalls.

PepoChat TeamPublished Last verified 18 min read
Three colleagues work at a long row of desks with monitors and desk phones in a bright office

Short answer

A website chatbot should answer from your knowledge base first and open a helpdesk ticket only when a person has to act. The ticket needs the visitor's name and email, a one-line subject, a summary of the problem and what the bot tried, and any order number; the bot then gives the visitor the ticket number. As of October 2026, Zendesk, Freshdesk and Zoho Desk all accept such tickets by API, and OAuth is replacing Zendesk's API tokens.

If you already run Zendesk, Freshdesk or Zoho Desk and want an AI chatbot on your website that answers routine questions itself and sends the rest to the helpdesk as proper tickets, this guide is for you. The goal is one queue: agents keep working where they already work, and the website chat never becomes a second inbox that nobody watches.

The sections below cover the pattern, the fields a ticket needs, setup for each helpdesk, escalation triggers, status checks that leak nothing, duplicates and measurement.

Every API detail was read in the vendors' developer documentation and help centers on 19 October 2026, and every price on their pricing pages the same day. The examples use PepoChat, which is our product and has prebuilt create-ticket and status-check actions for all three helpdesks; its specifics come from its documentation and code, including what it does not do.

How does a website chatbot create tickets in your helpdesk?

A chatbot creates a ticket by calling the helpdesk's ticket API with details it collected in the conversation, then reading back the new ticket's number. The version that works does three things in order: it tries to answer from your knowledge base, it hands over only when a person is needed, and it tells the visitor what happens next.

Deflection in front of the helpdesk is the setup where an AI support agent on your website answers what your help content already covers, so only conversations that need a person become tickets, each arriving with the context an agent needs to act.

Visitor asks a question in the website chat
  |
  +-- answer is in the knowledge base --> bot answers, no ticket
  |
  +-- a person is needed (one of the five triggers)
        |
        +-- bot collects name, email and a short description
        +-- bot calls the helpdesk API: create ticket
        +-- helpdesk returns the ticket number
        +-- bot: "Ticket 5821 is open. The team will reply by email."

Later: "Any update on 5821?" --> bot calls: get ticket --> status and last update

The helpdesk sees each ticket as an API request from one of its own users: the agent who approved the OAuth connection in Zendesk, the agent whose API key you pasted in Freshdesk, or the Zoho user who granted access. Give that account ticket permissions and nothing more.

The three APIs differ in the details.

ZendeskFreshdeskZoho Desk
Create endpointPOST /api/v2/ticketsPOST /api/v2/ticketsPOST /api/v1/tickets
Authentication for a new connectionOAuth; no new API tokens from 27 Oct 2026Agent API key over basic authOAuth 2.0, plus an orgId header
Required on createThe first comment, which becomes the descriptionA requester identifier such as an emailSubject, department ID and a contact
Visitor email not yet knownA new user is createdA new contact is createdA new contact is created
Status valuesnew, open, pending, hold, solved, closed2 Open, 3 Pending, 4 Resolved, 5 ClosedSystem or custom statuses under Open, On Hold and Closed
How PepoChat connectsOAuth card; legacy API token formAPI keyOne-click OAuth, or a Self Client
What the AI reads after creatingID, status, subjectID, subject, statusID, ticket number, status, subject
What the AI reads on a status checkID, status, subject, last updateID, subject, status, last updateTicket number, status, subject, last modified time

API rows read in each vendor's developer documentation on 19 October 2026; PepoChat rows from its integration templates.

In PepoChat, handing over takes two separate tools. Escalation moves the chat to the team inbox and emails your team; the create-ticket action files a ticket in your helpdesk when a conversation matches the action's "when to use" text. Actions run only while the agent is still answering, so the ticket must be filed before the chat is escalated.

Whatever product you use, ask how it holds the helpdesk credential. PepoChat encrypts keys and tokens with AES-256-GCM and never shows them again, calls out over HTTPS only with a 10-second timeout and no redirects, and lets the AI read only each action's allowed response fields. One limit: any workspace member can connect and edit integrations. The integrations overview has the rest.

What should a chatbot put in a helpdesk ticket?

A good bot-created ticket lets an agent act without opening the chat. The table lists the fields worth sending, why each one matters, an example, and what PepoChat's prebuilt actions send today.

FieldWhy it mattersExamplePepoChat's prebuilt action
Requester emailThe reply goes there, and the helpdesk links the ticket to an existing customer[email protected]Sent to all three helpdesks
Requester nameAgents greet people by name, and duplicates are easier to spotPriya ShahSent to Zendesk and to Zoho Desk (as the contact's last name); not sent to Freshdesk
SubjectOne line an agent can triage and searchLeft earbud silent after three weeksSent, written by the AI from the visitor's words
Problem summaryOne paragraph instead of a transcriptLeft side of the X2 headphones stopped working; bought in SeptemberSent as the description, written by the AI
What the bot already triedStops the agent repeating an answer that failedSent the reset steps from the troubleshooting page; no changeNot asked for by default; add it to the details input's description
Order, account or plan IDThe agent can look it up without asking againOrder 10482Asked for by default when the visitor shared one
Source tagLets you count and route bot-created ticketswebsite-chatNot sent; add a fixed tag to the body in Zendesk or Freshdesk
Priority and queuePuts the ticket in front of the right groupBilling group, Returns departmentFreshdesk: open and low priority; Zoho Desk: the department you set; Zendesk: your triggers decide
What the visitor was toldThe team keeps the bot's promiseReply by email within one business dayNot asked for by default; add it to the details description
Transcript and page URLExact wording and contextThe full chatNot sent; the transcript stays in PepoChat's team inbox

PepoChat's create actions send what the AI collects in the chat: a subject, the details, the visitor's email and, for Zendesk and Zoho Desk, the name. The details are a summary the AI writes from the input's description, which by default asks for what the customer reported plus any relevant IDs. No transcript, page address or verification status is attached, and the email is whatever the visitor typed, so a typo sends the ticket to the wrong address.

The details description is editable, up to 200 characters, and it is the cheapest way to fill the missing rows, for example: "Summary of the problem, steps the visitor already tried, the answer you gave, any order or account number, and what you said happens next." To label tickets, add a fixed field to the action's JSON body. Zendesk and Freshdesk both accept a tags array on create, so the Zendesk body becomes:

{ "ticket": { "subject": "{{subject}}", "comment": { "body": "{{details}}" }, "requester": { "name": "{{customer_name}}", "email": "{{customer_email}}" }, "tags": ["website-chat"] } }

Keep a copy of your edits, because reconnecting the Zendesk integration resets them.

A hand writes in a spiral planner next to an open laptop and an iced drink on a wooden table
A bot-created ticket should read like a good handover note: who is asking, what is wrong, what was already tried, and what the visitor was told.

How do you connect a chatbot to Zendesk?

Connect through Zendesk's Tickets API with OAuth. Zendesk's announcement of 1 June 2026, read on 19 October 2026, removes API tokens in stages: accounts created from 28 July 2026 cannot use them, tokens unused for 30 days are deactivated, nobody can create a new one from 27 October 2026, and every remaining token stops working by 30 April 2027.

The ticket is one request. Zendesk's Tickets API reference documents POST /api/v2/tickets, whose only required property is the comment, which becomes the description. A requester object with a name and an email makes the visitor the requester; Zendesk creates a user for an unknown email and reuses an existing one unchanged.

Steps in PepoChat

  1. Open Integrations → Zendesk and enter your subdomain, the part before .zendesk.com, in the Connect with OAuth card.
  2. If the card asks for a client identifier and secret, open Admin Center → Apps and integrations → APIs → OAuth clients → Add OAuth client in Zendesk.
  3. Name the client PepoChat, set Client kind to Confidential, paste the redirect URL https://app.pepochat.com/api/integrations/oauth/callback, leave the scopes empty and save.
  4. Copy the Identifier and the Secret, which Zendesk shows only once, into the card.
  5. Click Connect Zendesk and approve tickets:read and tickets:write. Both actions are created and switched on, and tickets are created as the approving agent.
  6. Click Test on the status check with a real ticket number. Testing the create action files a real ticket, so use your own address.

An existing API token still works in the Set up manually instead card until the cutoff. If the approving agent leaves Zendesk, Test shows a token error; click Reconnect.

Do Zendesk triggers and macros still work?

Yes. Zendesk's article on how triggers work says ticket triggers run any time a ticket is created or updated and groups API submissions with email and web form tickets, so routing, tagging and notification triggers fire on bot tickets as usual. Macros are untouched, since Zendesk describes a macro as a prepared response or action an agent applies by hand. Check any trigger that emails new requesters, because the visitor would receive that email too.

How do you connect a chatbot to Freshdesk?

Freshdesk authenticates API calls with an agent's API key, so the bot acts as that agent. The Freshdesk API v2 reference documents POST /api/v2/tickets, which needs a requester identifier such as an email and creates a contact for an unknown one; status defaults to 2 (Open), priority to 1 (Low) and source to 2 (Portal).

Steps in PepoChat

  1. In Freshdesk, an admin opens Admin (gear) → Team → Agents, opens the agent the bot will act as, and turns on API access. A dedicated agent with ticket permissions only is the safest choice.
  2. Signed in as that agent, click the profile picture, open Profile settings → View API Key and copy the key.
  3. In PepoChat, open Integrations → Freshdesk, enter the subdomain and the key, tick both actions and click Add actions.
  4. Test Check Freshdesk ticket status with a real ticket number, then switch the actions on, because actions added with a key start switched off.

PepoChat's action sends the email, subject and description with status 2 and priority 1, so bot tickets land open and at low priority. The create endpoint also takes a group_id for routing, a tags array, and a source, where 7 means Chat, so fixed fields in the body route and label bot tickets without asking the visitor anything more:

{ "email": "{{customer_email}}", "subject": "{{subject}}", "description": "{{details}}", "status": 2, "priority": 1, "source": 7, "tags": ["website-chat"] }

The status check reads the ticket number, subject, status and last update. PepoChat tells the AI what Freshdesk's status numbers mean (2 open, 3 pending, 4 resolved, 5 closed), so the visitor hears "pending", not "3".

How do you connect a chatbot to Zoho Desk?

Zoho Desk authenticates API calls with OAuth 2.0 tokens and expects your organization ID in an orgId header on ticket requests. Its create endpoint, in the Zoho Desk API documentation, requires a subject, a department ID, and a contact ID or a contact object with an email or a last name; an email Zoho Desk has not seen creates a new contact.

Steps in PepoChat

  1. Open Integrations → Zoho Desk and click Connect Zoho Desk if it is shown.
  2. Approve access on Zoho's consent screen. PepoChat asks only to read and create tickets, to search, and to read contacts and basic data such as departments.
  3. Back in PepoChat, confirm both actions are on. Your data center is detected automatically, and tickets go to your default organization's first enabled department.
  4. To file into another department, edit Create Zoho Desk ticket and change departmentId in its body.
  5. Test Check Zoho Desk ticket status with a real ticket number.

Without one-click, the manual card takes a Self Client from the Zoho API Console with the scopes Desk.tickets.ALL, Desk.contacts.READ and Desk.search.READ. Leave out the search scope and status lookups fail, because PepoChat finds a Zoho ticket by searching for its number. The visitor's full name goes into the contact's last-name field.

A Zoho Desk department is a separate ticket queue with its own agents. Every ticket belongs to one, and only tickets in the same department can be merged, so a business with separate billing and technical departments can run two create actions with different departmentId values and "when to use" texts.

When should the chatbot hand over or open a ticket? Five triggers

Use the five triggers from any good human handoff: the visitor asks for a person, the knowledge base has nothing relevant, the request involves money, an account change or a judgement call, the visitor is frustrated or the bot has failed twice, or a policy rule applies. The human handoff guide explains each one; the table shows where each should land.

TriggerExampleBest destinationWhat PepoChat does
1. The visitor asks for a person"Can I talk to someone?"Live chat if someone is on shift, otherwise email follow-upEscalates to the team inbox at once and emails every member
2. Nothing relevant in the knowledge baseA question your help content never coversOffer a person; a ticket when the issue needs follow-upSays it has no information and offers a person; a yes escalates
3. Money, an account change or a judgement callRefund, chargeback, deleting an accountA ticket for a person, never an automated actionNo built-in rule: list these requests in the ticket action's "when to use" text
4. Frustration or repeated failureThe third rephrasing of one questionA person, offered without waiting to be askedOffers a person; a failed tool or reply escalates automatically
5. A policy ruleOutside business hours, a plan's reply capA ticket or an email follow-up with an honest waitAsks once for an email when nobody can reply live, then escalates; a Free workspace over its 200-reply cap escalates new chats

The create action follows its "when to use" text, and PepoChat's default tells the AI to use it when an issue needs a person's follow-up and should be tracked in the helpdesk. Edit it, up to 500 characters, to name your trigger 3 topics, such as refunds, billing disputes or account deletion, and to set the order: collect the details, file the ticket, give the number, then hand over. The human handoff docs show what the agent says at each escalation.

Keep money with people. PepoChat's documentation advises against wiring refunds or payments as actions, because an action that writes to another system can, rarely, run twice.

A woman points a pen at a whiteboard covered in orange and blue sticky notes while a colleague watches
Bot-created tickets join the same triage as every other ticket, so the five triggers decide what reaches the board and a fixed tag shows where each one came from.

Can visitors check a ticket's status from the chat without leaking data?

Yes, if the bot looks a ticket up only by its number, returns only impersonal fields, and keeps anything personal behind a verified email. A verified visitor is one who has proved control of an email address, for example by typing a one-time code sent to that inbox.

PepoChat's three status checks follow the first two rules. The ticket number must be digits only, up to 12, and is checked before any request goes out. The AI then reads only the number, status, subject and last update, because every action has an allow-list of response fields, so the requester's email and the comments never reach the model.

The checks are not gated by verification, and ticket numbers are easy to guess: Zendesk's developer guide notes that some numbers are skipped when a creation fails, a sign they are issued in sequence. A stranger who types 5822 instead of 5821 hears that ticket's status and subject. Three settings close the gap:

  • Trim the allow-list. Remove the subject (ticket.subject in Zendesk, subject in Freshdesk, data.0.subject in Zoho Desk) and a guessed number reveals only a status and a date.
  • Ask for verification in the "when to use" text, for example "Only use this after the visitor has verified their email." That makes the agent ask, but the agent is not told whether the visitor completed the check, so it is a speed bump rather than a lock, and the trimmed allow-list above is the real limit.
  • Leave the check switched off if you do not need it. The create action works without it.

PepoChat's verification sends a six-digit code that expires after 10 minutes and allows 5 attempts, as the verification docs describe. Verification unlocks meeting memory, bookings with the visitor's verified details and the emailed transcript; integration lookups, ticket checks included, are not gated by it. The chatbot verification guide explains which lookups deserve a code.

How do you stop a chatbot from creating duplicate tickets?

Reduce duplicates where you can and make the rest cheap to clean up, because a bot's create call can occasionally run twice. PepoChat's actions use at-least-once execution: if a step is retried after a transient failure that happened after the helpdesk accepted the request, the ticket is created again. That is rare, and a duplicate ticket is a nuisance rather than a loss.

Bot duplicates look alike: same requester, near-identical subject, created minutes apart. A view filtered on your bot tag and sorted by requester shows them, and each helpdesk can merge them.

HelpdeskHow to mergeWhat happensCan it be undone?
ZendeskTicket options menu → Merge into another ticket, or POST /api/v2/tickets/{ticket_id}/mergeThe merged ticket is closed and tagged closed_by_merge; it must be below SolvedNo, merges are permanent
FreshdeskPUT /api/v2/tickets/merge with a primary ticket and the tickets to mergeConversations from the secondary tickets move into the primary, with a note added to eachNo unmerge is documented in the API reference; treat it as permanent
Zoho DeskTickets → select the tickets → Mass Actions → Merge, or POST /api/v1/tickets/{ticket_id}/mergeUp to 5 tickets at a time, same department only; merged tickets go to the Recycle BinNo, merged tickets cannot be unmerged

Read on 19 October 2026 in Zendesk's merging article and Tickets API reference, the Freshdesk API v2 reference, and Zoho Desk's merging tickets article, which also requires the Find and Merge permission.

A de-duplication key is a value that identifies one real-world request, so a second create carrying the same key can be recognised and skipped. Zendesk's external_id field links tickets to your own records, and the API can list tickets by external ID, but Zendesk says external IDs need not be unique, so your code must look the key up before creating a ticket.

Freshdesk's unique_external_id identifies the requester, not the ticket, and Zoho Desk's create attributes list no external ID for tickets, so a search before the create is the defence in both.

PepoChat's prebuilt actions send no de-duplication key, and the conversation ID is not an input an action can use. If duplicates ever matter enough to automate, point a custom action at an endpoint of your own that returns an open ticket with the same email and subject from the last few minutes, or creates one. For most teams the merge button is the cheaper answer.

Do you still need the helpdesk's own AI agent?

Not for website chat, if a standalone AI support agent answers there and files tickets; yes, if you also want AI answering email, messaging or voice inside the helpdesk. Each helpdesk meters its own AI differently.

HelpdeskIts AI for customersHow the AI is billedSeat prices, annual billing
ZendeskAI agents5 automated resolutions per agent a month on Support Team and Suite Team, 10 on Suite Professional; then $1.50 each committed or $2.00 pay-as-you-go$19 Support Team, $55 Suite Team, $115 Suite Professional per agent a month
FreshdeskFreddy AI Agent500 free sessions, once per account; then $49 per 100 sessions$19 Growth, $55 Pro, $89 Enterprise per agent a month
Zoho DeskAI Agents (Zoho's model or your own key), Answer Bot, ZiaAI Agents on every paid edition with up to 30 million free tokens a month; Answer Bot from Standard; Zia from Professional$7 Express, $14 Standard, $23 Professional, $40 Enterprise per user a month
PepoChat (website only)AI support agentAI replies: 200 a month free, 2,000 for $49, 10,000 for $149, then $10 per 1,000 on paid plansFlat plans with 1, 3 or 10 members; extra members $15 a month on paid plans

Last verified 19 October 2026 on the Zendesk, Freshworks and Zoho Desk pricing pages and PepoChat's pricing page; the Zoho Desk US dollar prices come from the price data its pricing page loads.

Zendesk bills automated resolutions, Freshdesk bills sessions, which its pricing FAQ defines as a unique interaction between an end user and the AI Agent, and Zoho Desk counts tokens. A conversation the website agent answers never reaches the helpdesk, so it is never billed there; only the tickets the bot files arrive.

The Freshdesk vs Zendesk comparison works a monthly bill on both, and the Zendesk AI agent decision guide covers when Zendesk's own AI is the better path. Avoid running two AI agents on one page: visitors see two chat bubbles and two sets of answers.

How do you measure whether the chatbot reduces tickets?

Compare two things over the same weeks before and after launch: the share of website conversations that never became a ticket, and the first response time on the tickets that did. Tag bot tickets from day one so you can separate them.

MetricHow to calculate itWhere the numbers come from
Website conversationsAll chats in the periodPepoChat inbox, Export CSV: one row per conversation, with its status
Conversations that needed a personEscalated chats plus tickets the bot filedThe CSV status column, and a helpdesk view on the bot tag
Bot share of new ticketsBot-tagged tickets divided by all new ticketsHelpdesk report filtered on the tag (in Zoho Desk, a custom field set in the action body)
First response time on bot ticketsTicket creation to the first human replyThe helpdesk's own first response time report, filtered on the tag
Visitor satisfactionThumbs up versus thumbs down after resolved chatsPepoChat Analytics, Sentiments card, last 90 days

PepoChat's Analytics shows sentiment votes and topics, not conversation volume or resolution rates, so the ratios come from the CSV export and your helpdesk. We publish no deflection figures for PepoChat, and any vendor number not measured on your own traffic deserves suspicion.

First response time on tickets may look worse at first. Once the bot answers the easy questions, the tickets left are the harder ones, so the average time to a first reply can rise while customers wait less overall. Compare the same topics, measured the same way. The first response time benchmarks explain the measurement traps, and the ticket reduction tactics cover what to fix when one topic keeps producing tickets.

What to do next

  • Write your five triggers into the create action's "when to use" text before launch; the human handoff guide has wording for each one.
  • Connect your helpdesk with the step list in the Zendesk, Freshdesk or Zoho Desk docs, and file one test ticket to your own address.
  • Start a free PepoChat workspace: every feature is on the free plan, including the helpdesk actions, with 200 AI replies a month.

Frequently asked questions

Can a chatbot create a Zendesk ticket automatically?
Yes. Zendesk's Tickets API creates a ticket with one POST request whose only required property is the first comment. The chatbot collects the visitor's name, email and a short description, sends them and reads back the ticket number. Connect with OAuth: as of October 2026, Zendesk stops issuing new API tokens on 27 October 2026, and every remaining token stops working by 30 April 2027.
What should a chatbot put in a support ticket?
Enough for an agent to act without opening the chat: the requester's name and email, a one-line subject, a short summary of the problem, what the bot already tried or answered, any order or account number, and what the visitor was told would happen next. A fixed tag such as website-chat lets you count and route the tickets the bot files.
Will a chatbot break my Zendesk triggers and macros?
No. A ticket created through the API is an ordinary ticket, and Zendesk runs ticket triggers whenever a ticket is created or updated, so routing, tagging and notification rules apply as usual. Macros are applied by agents by hand, so they are unaffected. Test once with your own address, because a trigger that emails new requesters will email the visitor too.
Can a chatbot check the status of a support ticket?
Yes, with a lookup by ticket number that returns only impersonal fields. PepoChat's status checks for Zendesk, Freshdesk and Zoho Desk accept digits only and let the AI read just the number, status, subject and last update. Ticket numbers are guessable and the checks are not gated by email verification, so trim the subject from the allowed fields; a request to verify first only makes the agent ask.
Do I still need Zendesk's own AI agent if I use a website chatbot?
Not for website chat. As of 19 October 2026, Zendesk includes 5 automated resolutions per agent a month on its Team plans and 10 on Suite Professional, then charges $1.50 each on a commitment or $2.00 pay-as-you-go. A standalone agent can answer the website and file tickets; keep Zendesk's AI if you want it on email, messaging or voice as well.
How do I stop a chatbot from creating duplicate tickets?
Expect the occasional duplicate, because a bot's create call can run twice after a retry, and make cleanup cheap. Tag bot tickets, check a view sorted by requester, and merge: Zendesk and Zoho Desk merges are permanent, and Zoho Desk merges up to five tickets from one department at a time. Where you control the code, search for an existing ticket before creating one.

Try this on your own site in ten minutes

PepoChat includes every feature on the free plan — 200 AI replies and 5 knowledge sources a month, no credit card.