Connect your helpdesk and Kelu works the incoming queue. It replies when it is confident, files a draft for an agent when you want a person to check first, and tags the tickets it leaves alone. You can rehearse on past tickets before anything reaches a customer.
Answers come only from the knowledge base’s Public documents, because a reply goes to a customer. Fill the knowledge base first: Before You Connect a Helpdesk.

Supported helpdesks

HelpdeskHow you connectHow tickets reach Kelu
ZendeskSubdomain, then Connect ZendeskKelu creates a webhook and two triggers in your Zendesk
IntercomRegion (US, EU or AU), then Connect Intercom Tickets or Connect Intercom MessengerDelivered automatically. Nothing to set up
FrontConnect Front, approved by a Front adminDelivered automatically. Nothing to set up
FreshdeskFreshdesk domain and an API key, checked with Freshdesk when you save itKelu checks for new and updated tickets every minute
Zendesk MessagingSubdomain, then Connect Zendesk MessagingNot ready yet: no chat reaches Kelu (see the warning below). Live chats only
FreshchatAPI token and data center region. Optional: your chat URL and the agent Kelu posts as. Kelu checks the token with Freshchat when you save itPaste the Webhook URL from the integration’s page into Freshchat (Admin → Webhooks), then paste the key Freshchat shows there into Webhook public key. Without both, no chat reaches Kelu. Live chats only
LinearConnect LinearDelivered automatically by the webhook on Kelu’s Linear app. Nothing to set up. New issues in your public teams are answered with a comment
Zendesk Messaging is not ready yet. Connect Zendesk Messaging gets Zendesk’s normal OAuth token, and Zendesk’s chat API (Sunshine Conversations) refuses that token. So Kelu can’t set up its webhook in your Zendesk, and no chat reaches Kelu. After you connect, the card’s Connection check line says “Zendesk’s Conversations API did not accept this connection (HTTP 401). It needs a Conversations API key or Zendesk’s Marketplace bot OAuth”. There is no workaround. It will work once Zendesk approves Kelu’s Marketplace app.
Only workspace owners and admins can add, change or delete a helpdesk integration, request a draft through it, or run and review simulations. Adding a helpdesk needs a Pro or Enterprise plan. On Free, Add helpdesk asks you to upgrade. If a workspace drops back to Free, the helpdesks it already has keep answering.

Connect your helpdesk

1

Pick the helpdesk

Open Integrations → Helpdesk automation, click Add helpdesk, choose the platform and click Continue.
2

Fill in the three tabs

  • Credentials: what the table above lists. The Zendesk subdomain is acme for acme.zendesk.com, and the Freshdesk domain is acme for acme.freshdesk.com. A custom domain, such as your help centre or support portal address, is not accepted: the helpdesk’s API is only on its own domain. The Freshdesk API key is under your Freshdesk profile. Kelu’s replies and notes are posted under the name of the agent the key belongs to, so ideally use the key of a dedicated agent named Kelu AI, with Global ticket access and an admin role. Kelu checks the key with Freshdesk before the integration is added, and the integration’s page shows whose key it is.
  • For Freshchat: the API token is under Admin → API Tokens in Freshchat, and Kelu checks it with Freshchat before the integration is added. Pick the data center region (US, EU, India or Australia). Chat URL is acme for acme.freshchat.com; leave it empty and Kelu finds it from the token. Post as agent is the email of the agent whose name Kelu’s messages carry, ideally one named Kelu AI; leave it empty to use the first active agent. Leave Webhook public key empty for now: Freshchat shows the key only after Kelu’s webhook URL is saved there.
  • Knowledge Base: the knowledge base that answers these tickets.
  • Deflection Rules: Draft Only (Safe) is selected for you. Pick Auto-Reply Live instead only if Kelu should reply to customers from the start. Then set the confidence threshold, auto-triage (not offered for live chats) and escalation tag. On Zendesk, Intercom, Front and Freshdesk, Kelu answers nothing until you choose where it answers on the integration’s page.
  • On Linear there is no mode to pick: the tab shows Deflection Mode: Auto-Reply Live. Linear has no private notes, so a draft would be posted where the customer can read it, and Draft Only is not offered. Below the threshold Kelu writes nothing and adds your escalation label to the issue.
  • On Zendesk Messaging, a draft is a private note on the ticket Zendesk opens for the chat, which your agents see in Agent Workspace. The visitor never sees it. Kelu writes it with your Zendesk connection, so press Connect Zendesk Messaging after adding the integration. Until you do, Kelu answers no chat in Draft only, the card says why, and changing the settings with Draft only on is refused.
  • On Intercom, you pick Intercom Tickets or Intercom Messenger in the first step. Intercom files Messenger chats and inbound email as conversations, not tickets. Intercom Tickets answers tickets only, and Intercom Messenger answers conversations only, in the mode you picked. The integration then shows two cards, Intercom Tickets and Intercom Messenger, so you can turn on the other one later. Leave Messenger chats off if Fin already replies in your Messenger and you picked Auto-Reply Live.
3

Approve the connection

Click Connect with the helpdesk’s name (for example Connect Zendesk). On Intercom it reads Connect Intercom Tickets or Connect Intercom Messenger; only the card’s button reads Connect Intercom. Kelu sends you to your helpdesk to approve access, then back to Helpdesk automation. Approve in the same browser: a connect link works once, for 15 minutes, and only in the browser where you clicked it, so it can’t be forwarded. If someone else has to approve, such as your Zendesk admin, add them to your Kelu workspace as an admin and have them click Connect on the card. Freshdesk and Freshchat have no approval step: click Add Freshdesk or Add Freshchat.On Freshchat, finish the wiring next. Open the integration’s Connection & Analytics tab, copy its Webhook URL, paste it in Freshchat under Admin → Webhooks and save. If Freshchat offers a choice of events, tick Message Create only. Freshchat then shows a key under Authentication: paste it into Webhook public key on the same tab and click Save. Until both are done, Kelu refuses every message from Freshchat.
4

Choose where Kelu answers

Until you do, the card shows Pick an inbox to start and Kelu answers, drafts and tags nothing. Click the card to open the integration’s page. On the Settings tab, tick the Zendesk groups, Intercom team inboxes, Front inboxes or Freshdesk groups under Answer only in, and click Save. Only tickets created after you save are answered. Unassigned is never ticked for you. See Which tickets Kelu touches.Zendesk Messaging, Freshchat and Linear have no Answer only in. On Linear, Kelu answers every new issue as soon as it is connected. On Freshchat, it answers every new chat once the webhook and its public key are set. Zendesk Messaging receives no chats yet (see the warning under Supported helpdesks).
5

Test it

Click Test connection on the card. It checks the credentials by reading a ticket, or on Zendesk Messaging and Freshchat by reading the account. The card also shows Last delivery (or No webhook delivery yet). When something fails, it shows up to two lines, each with its time: Answering is what went wrong on a ticket, and Connection check is what the last credential check found. A passing Test connection or a reconnect clears only Connection check. Answering clears the next time Kelu answers, notes or tags a ticket.
A Zendesk or Zendesk Messaging connection belongs to the person who approves it. If that account is deactivated, Kelu stops answering. Approve with an account that will stay.
Connect is the only way to connect Zendesk, Zendesk Messaging, Intercom, Front and Linear. Kelu does not accept a pasted token, API key or signing secret for them: Connect grants Kelu access of its own, which you can revoke in your helpdesk, and sets up delivery for you. On Zendesk Messaging, Connect does not deliver chats yet, and there is no other way to connect it (see the warning under Supported helpdesks). An integration connected with a pasted credential before this keeps working. If the integration’s page says Connect “is not configured on this deployment”, the Kelu deployment has no app set up for that helpdesk; ask whoever runs it. Freshdesk and Freshchat offer no Connect, so they keep their API keys.

Settings

Open the integration’s page (click its card, or Configure) to change these at any time, on the Settings tab.
SettingDefaultWhat it does
Answers fromThe knowledge base you pickedWhich knowledge base answers
VoiceKnowledge base’s own personaA customization the replies are written in
Answer only inNothing tickedThe groups, team inboxes or inboxes Kelu may answer in. With nothing ticked, Kelu answers, drafts and tags nothing. Saved with its own Save button. Not offered on Zendesk Messaging, Freshchat and Linear
Confidence threshold80% (70% for an integration added through the API without one)Below it, nothing is posted and the ticket gets the escalation tag. A Zendesk Messaging or Freshchat chat is handed to your team instead
Answer new ticketsOn, unless the integration was added with a Zendesk Tickets source, or as Intercom MessengerTicket helpdesks: Zendesk, Intercom, Front, Freshdesk and Linear. Off means no reply and no draft. On Intercom it is called Answer support tickets, on the Intercom Tickets page
Answer live chatsOnZendesk Messaging and Freshchat only, in place of Answer new tickets. Kelu answers each new chat while the visitor is still there. Off means Kelu answers no chat
Answer live Messenger chatsOn if you added Intercom Messenger, off if you added Intercom TicketsIntercom only, on the Intercom Messenger page. Answers conversations (Messenger chats and inbound email) while the visitor is still there. Draft only applies here too
Draft only — never reply to the customerOn, unless you picked Auto-Reply LiveAnswers at or above the confidence threshold become private notes instead of replies, on tickets and live chats alike. Below the threshold there’s no note: a ticket gets only the escalation tag, and a Zendesk Messaging or Freshchat chat is handed to your team. Shown while answering is on. On Zendesk Messaging the note goes on the ticket Zendesk opens for the chat. Can’t be on while answering on Linear, which has no private notes
Include Kelu signatureOnAdds “Answered by Kelu” to replies
Auto-triageOffTags each incoming ticket, for example category:billing and priority:urgent. Not offered on Zendesk Messaging, Freshchat or the Intercom Messenger page, because Kelu doesn’t triage live chats
Escalation tagneeds-reviewAdded to tickets Kelu was not confident about, could not answer, or handed to a person

What happens to a ticket

Kelu answers each ticket once and scores the answer against your threshold.
  • Confident, Draft only off: a public reply with links to its sources, ending with a line that tells the customer to reply if they still need help. The ticket is tagged kelu-answered. Kelu does not close it, and on Front it doesn’t archive the conversation, so it stays in your team’s open queue.
  • Confident, Draft only on: the same answer as an internal note, labelled with its confidence. The ticket is tagged kelu-draft.
  • Not confident: nothing is posted, not even a note in Draft only. The ticket gets the escalation tag.
  • Kelu can’t write an answer (your monthly question quota is used up, the AI model is failing, or your own model key stopped working), or your helpdesk won’t take the reply: nothing is posted. The ticket gets the escalation tag and is left to your team, and the card’s Answering line says why. On Freshdesk, a ticket that Kelu found on its every-minute check is tried again on the next two checks first, and tagged only if the third try fails too. Newer tickets wait behind it for those few minutes. A used-up quota is tagged at once, and so is a reply your helpdesk refuses outright, for example because Kelu’s connection may not reply in that group.
  • The customer replies to an automated answer: Kelu adds an internal note quoting them, adds the escalation tag and stops answering that ticket. Linear has no internal notes, so there the note is an ordinary comment that the reporter, and anyone else who can see the issue, can read.
  • The customer asks for a person (for example “talk to a human”, or just “agent”): Kelu hands the ticket over the same way, without answering. This is checked only while answering is on. On a new ticket, only a short message (up to 200 characters) that asks outright counts. A ticket that mentions “customer service” or says something is “not helpful” is a question, and Kelu answers it. A new Linear issue is never read as asking, because its description is what the issue is about. In a live chat, “customer service” counts as asking, and so does any message the visitor sent that nobody has answered yet, not only the latest one.
  • stop ai replies in a ticket: Kelu stops answering, drafting and tagging it. An internal note works on Zendesk, Intercom and Freshdesk, and an internal comment on Front. On a ticket Kelu has already answered, a reply from the customer is still handed to your team as described above: an internal note and the escalation tag, never another answer.
In a live chat (an Intercom Messenger conversation, a Zendesk Messaging chat or a Freshchat conversation), Kelu also answers follow-up messages, up to 5 per chat, then hands over. In Draft only each draft counts toward the 5, so a chat gets at most 5 drafts before it is handed over. Kelu stops once a teammate replies or, on Intercom, Fin joins. On Zendesk Messaging and Freshchat, Kelu hands the chat itself to your team instead of tagging it, because nobody sees a chat’s tags and the visitor is still waiting. On Zendesk Messaging, Kelu passes the conversation to your agents, then tries to add a private note for the agent on the ticket Zendesk opened for the chat. On Freshchat, it sets the conversation back to New, then tries to add a private note for the agent. The note is best effort on both: if the helpdesk refuses it, the chat is still handed over, without the note. On Zendesk Messaging the note also needs Zendesk connected (Connect Zendesk Messaging). Kelu does this when the visitor asks for a person, after 5 answers, when it isn’t confident (on the first message too, so a chat that opens with only “hi” goes straight to your team), and when it can’t write or post an answer. If the hand-over fails, the card’s Answering line says so, nothing is written in the chat, and Kelu tries again at the visitor’s next message. If a teammate has already joined the chat when Kelu reaches its 5 answers, Kelu steps back without handing it over again. Two cases still leave the visitor waiting rather than handed over: a confident answer in Draft only, which waits as a private note for an agent to send, and an agent action waiting in Approvals.

Which tickets Kelu touches

Kelu answers, drafts or tags a ticket it has not handled before only when all of these are true:
  • It was created after answering started: after you turned on Answer new tickets, Answer live chats, Answer live Messenger chats or Auto-triage and, where there is one to pick, picked at least one team, group or inbox. If you turn all of them off, or remove every pick, and then start again, Kelu counts from the moment you started again. If you add another team, group or inbox later, only tickets created there after you added it count.
  • It is in a team, group or inbox you picked for Kelu: a Zendesk group, an Intercom team inbox, a Front inbox or a Freshdesk group. Until you pick one, Kelu answers, drafts and tags nothing. Zendesk Messaging, Freshchat and Linear have nothing to pick, so this doesn’t apply there. A ticket in no group or team counts only if you also pick Unassigned (no group) (Zendesk, Freshdesk) or Unassigned (no team) (Intercom). Kelu checks where a ticket is when it arrives. On Intercom it checks again when a chat or ticket is assigned to a team, so a chat that your Workflows or assignment rules route into a team you picked is answered once it gets there. It isn’t answered if a teammate is assigned at the same time, as balanced assignment does.
  • The customer opened it. Kelu skips outbound emails and messages, Freshdesk phone tickets, Intercom back-office and tracker tickets, tickets whose first message is from your team, tickets that Kelu’s own create ticket action opened, and tickets tagged kelu-handoff, which Kelu reserves for chats it has handed to your team. On Zendesk, Kelu is only told about a ticket when an end user creates it themselves; tickets agents, admins or other apps create never reach it. An Intercom customer ticket that a teammate files for a customer is not recognised as your team’s yet, so don’t test with one.
  • Nobody on your team has written in it. On Zendesk, Intercom and Freshdesk that includes an internal note, and on Front an internal comment. Automatic messages, such as Intercom’s reply-time notice or a Front rule’s auto-reply, don’t count. A message that another app sends in Front counts as your team’s. A comment that another app or a rule adds in Front doesn’t, because your customer never sees it.
  • It is not solved, closed or deleted.
  • It doesn’t already carry your escalation tag. Intercom doesn’t show Kelu a conversation’s tags, so on Intercom this isn’t checked.
  • On Intercom, Fin has not taken part in the conversation.
Kelu leaves every other ticket alone: no reply, no note and no tag. On a ticket Kelu has already answered, it acts only on the customer’s reply, as described above, even if the ticket has since moved to a team or inbox you did not pick.

Rehearse on past tickets

1

Open Simulations

On the integration’s card, click the flask icon (Run simulation).
2

Run one

Pick the Helpdesk Integration, set Max tickets (up to 100) and click Run Simulation. Kelu answers your most recent resolved tickets and scores each answer. Nothing is posted to your helpdesk.
3

Review the answers

Each row shows the ticket, Kelu’s Draft Answer, the Agent’s Reply and the Confidence. Approve or reject each one with the thumbs.
4

Pick the threshold

Set the confidence threshold where the approved answers sit. Then run Draft only for a week before you turn it off.
  • One simulation at a time per integration, and at most one an hour.
  • A workspace can rehearse up to 500 tickets a day. A run stops after 15 minutes.
  • Look-back (days) is not applied yet.

Read the numbers

For the last 30 days, the Connection & Analytics tab of the integration’s page shows Tickets, Deflected (public replies), Deflection rate (public replies out of the tickets Kelu tried to answer) and Avg confidence. It also says how many customers replied after an automated answer and were handed to an agent. The Usage page counts Deflected Tickets too. A low deflection rate usually means missing content, not a bad threshold. See Find and fix knowledge gaps before you lower it.

Go further

  • Get ticket.deflected, ticket.escalated and simulation.completed events at your own URL: webhook events.
  • Index solved Zendesk tickets as a source: Zendesk Tickets.
  • Answer before a ticket exists: Support Form Deflector.
  • Give agents an assistant beside each ticket in Zendesk: Integrations → Helpdesk agent assist. The Intercom version is coming later.

Troubleshooting

  • You got an email saying your helpdesk stopped answering. Workspace owners and admins get one when an integration has been failing for 10 minutes, whether the helpdesk refused Kelu or Kelu couldn’t write answers. A failure that the next ticket clears within those 10 minutes sends nothing. They get another only if it fails again after working in between. The card’s Answering and Connection check lines say what failed.
  • The card says Monthly question quota reached. Kelu tags each new ticket for a person instead of answering it. Answering resumes when the quota resets next month, or when you upgrade. Tickets tagged in the meantime stay with your team.
  • Zendesk tickets never arrive (No webhook delivery yet, or “Kelu’s webhook or triggers could not all be set up”). Click Connect Zendesk on the card, or Reconnect Zendesk on the Connection & Analytics tab of the integration’s page. It updates the Kelu webhook and both triggers in place, and makes any that are missing. A card that shows Connect Zendesk after you connected means Kelu’s triggers weren’t all created; clicking it again carries on from where it stopped.
  • The Notify Kelu (customer reply) trigger in Zendesk has the single condition “Ticket Is Updated”. It was created by an older version of Kelu and notifies Kelu of every change to every ticket. Click Reconnect Zendesk once. Both triggers are then rewritten to notify Kelu only about tickets your customers open and their replies to Kelu’s answers, and any other trigger that notifies the Kelu webhook, such as a duplicate an older version left behind, is deactivated. Deactivated, not deleted: you’ll find it under inactive triggers in Admin Center.
  • The card says Pick an inbox to start. No group, team inbox or inbox is ticked under Answer only in, so Kelu does nothing, whatever the other settings say. Integrations added before this setting existed start here too. Tick at least one and click Save.
  • Front: the card says Front refused access (403). Kelu reads each Front conversation’s messages, its internal comments and the inboxes it sits in, and a connection approved before Kelu asked for all of them can’t read one. Nothing is answered until it can. Click Reconnect Front on the Connection & Analytics tab of the integration’s page, then Test connection: the test reads one conversation’s messages, comments and inboxes too.
  • Freshdesk does nothing. Kelu only checks for tickets while Answer new tickets or Auto-triage is on and at least one Freshdesk group is picked.
  • “Freshdesk did not accept this API key” or “Freshdesk has no account at …” when adding Freshdesk or saving a new key. Nothing was saved. Copy the key again from Profile settings → Your API Key in Freshdesk, signed in as the agent whose key it is, and check the name before .freshdesk.com. If the message says Freshdesk refused the key, check that the agent is still active.
  • “This API key belongs to … a Freshdesk agent who can see only the tickets assigned to them.” New tickets aren’t assigned to anyone yet, so Kelu would never see one. In Freshdesk, give that agent Global ticket access, or use another agent’s key.
  • “This API key belongs to … a Freshdesk agent who may not view the account’s groups.” Kelu answers only in the groups you pick, and lists them with this key, so nothing could be picked. Give that agent an admin role in Freshdesk, or use an admin agent’s key.
  • A Freshdesk integration doesn’t say whose API key it uses. The key was saved before Kelu checked keys. Paste the same key into the Freshdesk API key field on the Connection & Analytics tab of the integration’s page and click Save: Kelu checks it with Freshdesk and records the agent.
  • “Could not reach Freshdesk” or “Freshdesk could not check the API key just now” when saving. Nothing was saved. Try again in a minute.
  • A test ticket gets nothing. Open it as a customer, after answering is on, in a team, group or inbox you picked. A ticket you open from an agent account counts as opened by your team. On Zendesk, send it from an end user’s email address: a ticket an agent or admin creates, even one filed as themselves, never reaches Kelu. See Which tickets Kelu touches.
  • Intercom Messenger chats get no answer. Turn on Answer live Messenger chats.
  • Freshchat chats get no answer. Check that Kelu’s Webhook URL is saved in Freshchat (Admin → Webhooks), that Webhook public key is filled in on the Connection & Analytics tab (without it, Kelu refuses every message from Freshchat), and that Answer live chats is on.
  • Zendesk Messaging chats get no answer, and the card’s Connection check line says “Zendesk’s Conversations API did not accept this connection”. Zendesk Messaging is not ready yet. See the warning under Supported helpdesks.
  • The card says “The chat could not be handed to a person”. Zendesk Messaging or Freshchat refused to take a chat from Kelu, so nobody on your team was told about it. The rest of the sentence is what the helpdesk said. Kelu tries again when the visitor sends their next message. Click Test connection on the card to check the connection.
  • “Finish connecting in the same browser where you pressed Connect.” The approval was finished in a different browser or device from the one where Connect was clicked, or the link was forwarded to someone. Nothing was connected. Click Connect again and approve in that same browser. If someone else has to approve, add them to your Kelu workspace as an admin and have them click Connect.
  • “Pasted credentials are not accepted for …” A save, usually through the API, carried a token, API key or signing secret for a helpdesk that connects only through Connect. Nothing was saved. Click Connect (or Reconnect) on the integration’s page instead. The card of a Zendesk, Intercom or Front integration has no webhook URL or secret to copy either: Connect sets up delivery.
  • “That Intercom workspace is already connected to another integration.” One Intercom workspace can back only one integration. Delete the other one first. That includes an integration whose card says Kelu was uninstalled from Intercom: reconnect that one instead, or delete it.
  • The card says “Kelu was uninstalled from Intercom — press Connect Intercom to reinstall.” Someone removed the Kelu app in your Intercom settings, so Intercom no longer sends Kelu anything and Kelu answers nothing there. Click Connect Intercom on the same card to install it again. Your settings and picked team inboxes are kept.
  • You deleted an Intercom integration. Kelu uninstalls itself from your Intercom workspace as well. It stays installed if your Intercom agent sidebar uses the same install. If the delete dialog says Kelu could not uninstall itself, or could not tell whether the integration was connected with Connect Intercom, uninstall the Kelu app in your Intercom settings if it is still listed there.
  • You deleted a Zendesk integration. The Kelu webhook and the two Notify Kelu triggers stay in Zendesk. Delete them in Zendesk Admin Center.
  • “Use your xxx.freshdesk.com name, not your portal domain” (or the Zendesk equivalent). When adding an integration, enter only the part before .freshdesk.com or .zendesk.com. If the card of an existing integration says it, that integration was saved with the address before Kelu checked it, and the card has no field to change it: delete the integration and add it again with the right name.
  • You want Kelu on a different Zendesk or Freshdesk account. Add a new integration for that account. An integration can’t be moved to another account once it has handled tickets, because each account numbers its tickets from 1 and Kelu would mistake the new account’s tickets for ones it already handled. Delete the old integration if you no longer need it. On Zendesk, also delete the Kelu webhook and the two Notify Kelu triggers in the old account’s Admin Center.
  • The card says the helpdesk address leads to a private or internal network address, or answered with a redirect to another address. Kelu only calls your helpdesk’s own public address and doesn’t follow redirects away from it. Check the subdomain or URL on the integration.
  • The card says the stored credential could not be decrypted. Kelu stores your helpdesk tokens and keys encrypted, and this one can no longer be read. Nothing is answered until it is replaced. Click Reconnect on the Connection & Analytics tab of the integration’s page. On Freshdesk and Freshchat, paste the key again on that tab instead, in Freshdesk API key or Freshchat API token.