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 IntercomDelivered automatically. Nothing to set up
FrontConnect Front, approved by a Front adminDelivered automatically. Nothing to set up
HubSpotConnect HubSpotNot answered yet: HubSpot inboxes can’t be picked
FreshdeskFreshdesk domain and an API key, checked with Freshdesk when you save itKelu checks for new and updated tickets every minute
Only workspace owners and admins can add, change or delete a helpdesk integration, request a draft through it, or run and review simulations.

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 card shows whose key it is.
  • 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 and escalation tag. Either way, Kelu answers nothing until you choose where it answers on the card.
  • On Intercom, Answer live Messenger chats is also on. Intercom files Messenger chats and inbound email as conversations, not tickets, and the mode you picked applies to them too. Turn it off to answer Intercom tickets only, or if Fin already replies in your Messenger and you picked Auto-Reply Live.
3

Approve the connection

Click Add and connect (for example Add and connect Zendesk). 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 has no approval step: click Add integration.
4

Choose where Kelu answers

Until you do, the card shows Pick an inbox to start and Kelu answers, drafts and tags nothing. Expand the card, 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.
5

Test it

Expand the card and click Test connection. It checks the credentials by reading a ticket. 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 HubSpot 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. An integration connected with a pasted credential before this keeps working. If the card 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

Expand the integration’s card to change these at any time.
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
Confidence threshold80%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 sourceOff means no reply and no draft. On Intercom it covers Intercom tickets
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 either answering switch is on
Include Kelu signatureOnAdds ”⚡ Answered by Kelu” to replies
Answer live Messenger chatsOn, unless you turned it off when adding the integrationIntercom only. Answers conversations (Messenger chats and inbound email) while the visitor is still there. Draft only applies here too
Auto-triageOffTags each incoming ticket, for example category:billing and priority:urgent. Not offered on Zendesk Messaging and Freshchat, 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.
  • 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. On Freshchat, it sets the conversation back to New, then tries to add a private note for the agent. The note is best effort: if Freshchat refuses it, the chat is still handed over, without the note. 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 Messenger chats or Auto-triage and 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. 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. HubSpot inboxes can’t be picked yet, so Kelu doesn’t answer, draft or tag HubSpot tickets.

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 card 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 or Reconnect Zendesk on the card. 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 card, 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 card doesn’t say whose API key it uses. The key was saved before Kelu checked keys. Paste the same key into the card’s Freshdesk API key field 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.
  • HubSpot does nothing (the card says Not answering yet). Kelu doesn’t answer HubSpot tickets yet. See Which tickets Kelu touches.
  • 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.
  • 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 card 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 card. On Freshdesk and Freshchat, enter the API key again instead.