> For the complete documentation index, see [llms.txt](https://docs.eesel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eesel.ai/integrations/helpdesks/freshdesk.md).

# Freshdesk

Invite your AI teammate into Freshdesk so it drafts or sends replies on tickets, tags and routes the rest, and learns from your help center, canned responses and past tickets.

Invite your AI teammate into Freshdesk and it works like any other agent on your team. It reads your help center, your canned responses and your past tickets, so it already knows how your team answers before it handles anything. Then it picks up tickets the way you tell it to: drafting replies for a human to check, answering the routine ones itself, tagging and routing the rest.

You stay in control the whole way. Nothing runs until you create an automation. For each action you then choose: run on its own, ask you first, or stay off.

In this example the agent used one of your canned responses.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-6905b1ea4d0e57a318f2c2e92443ca7669037dd8%2Ffreshdesk-hero.png?alt=media" alt="A Freshdesk ticket about a duplicate charge, with the public reply eesel AI sent after reading the ticket and using one of your canned responses"><figcaption><p>A Freshdesk ticket about a duplicate charge, with the public reply eesel AI sent.</p></figcaption></figure>

## Quick start

{% stepper %}
{% step %}

### Ask your agent to connect Freshdesk

Open the chat in your dashboard and ask it to connect Freshdesk. It offers two ways to connect and asks for whatever it needs. Prefer to click? **Integrations** in the left sidebar has the same options.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-78eabcb4d92ff7c6ef3b2dd7ce6e7f974767ef04%2Ffreshdesk-connect-chat.png?alt=media" alt="A dashboard chat where the user asks to connect Freshdesk, and the agent lays out the Quick start and Full connection options and asks for the subdomain"><figcaption><p>The agent offers two ways to connect Freshdesk.</p></figcaption></figure>
{% endstep %}

{% step %}

### Choose Quick start or Full connection

* **Quick start.** Give your Freshdesk subdomain (the part before `.freshdesk.com`) and it reads your public help center. No sign-in, but no tickets, canned responses, triggers or actions.
* **Full connection.** Give your subdomain and a Freshdesk **API key**. There's no app to install, and everything unlocks: tickets, canned responses, triggers and actions.

Start with either. Moving to a full connection later keeps your help center and adds tickets, canned responses, triggers and actions.

<details>

<summary>Connecting more than one Freshdesk account</summary>

You can connect several Freshdesk accounts to one workspace. Connect each one the same way. When more than one is connected, your agent asks which account you mean, or you name it in the request. Each automation belongs to one account.

</details>
{% endstep %}

{% step %}

### Paste the key into the secure form

Your agent sends a secure form right in the chat. It never takes the key as a chat message. Paste the key into the form and submit. The key goes straight to eesel and never sits in the conversation. The button that submits it is **Save securely**.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-29dea40de4591af810fdb8c4f409708b1501b5e3%2Ffreshdesk-api-key-form.png?alt=media" alt="The secure API key form inline in the dashboard chat, with the key pasted in and the Save securely button active"><figcaption><p>The secure form in the chat, with the key pasted in.</p></figcaption></figure>

The moment you submit, it confirms the connection and starts reading your Freshdesk content.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-43ab5e1968479d46bc57fbd9553a10da786caf4f%2Ffreshdesk-connected.png?alt=media" alt="The dashboard chat showing Connected, with the agent reading a live ticket to verify and Freshdesk appearing in the sidebar"><figcaption><p>The chat confirms Freshdesk is connected.</p></figcaption></figure>
{% endstep %}

{% step %}

### Check what it can read

Back in the dashboard, **Integrations > Freshdesk** shows the connection and everything it pulled in. Each source has its own toggle, so you can leave one out without disconnecting. Each source shows a document count once its sync is done. From a terminal, `eesel status` lists the integration as connected with its source counts.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-71652f4112ab76b09a7af798ce50d2a0d6431af5%2Ffreshdesk-integration-page.png?alt=media" alt="The connected Freshdesk integration page in eesel, listing Help Center, Canned Responses and Tickets as sources with document counts and toggles"><figcaption><p>Each source has its own toggle and its own document count.</p></figcaption></figure>
{% endstep %}

{% step %}

### Create your first automation

Connecting alone does not start your agent. It needs an automation first. Tell it what to handle and it creates an [automation](/automations-and-schedules/automations-and-schedules.md). An automation is a Freshdesk trigger plus instructions. In the instructions you describe which tickets it should handle and what to do with them. It leaves the rest alone.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-caf8e44784ce4dad5c3f80452d6740be09301f48%2Ffreshdesk-automation-chat.png?alt=media" alt="The dashboard chat where the user asks for private-note reply drafts on every new ticket, and the agent reports the trigger and action it enabled"><figcaption><p>Ask in chat for the automation you want, and the agent builds it.</p></figcaption></figure>

It shows up on your Automations page, switched on and ready. From a terminal, `eesel automations` lists it as on.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-131b90c4f9b1a36206abf2caafdc99482bc1373d%2Ffreshdesk-automation-live.png?alt=media" alt="The Automations page in eesel with the new rule listed and toggled on"><figcaption><p>The new automation on your Automations page, switched on.</p></figcaption></figure>

Open the automation to see or change what it does. The trigger event is fixed when the automation is created. So a new automation is required for each different trigger event.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-e835b170fd5d5779c99cb48a026d862e731fb4b8%2Ffreshdesk-automation-editor.png?alt=media" alt="The automation editor showing its name, the Freshdesk event it runs on, and the instructions telling the agent to draft a reply as a private note"><figcaption><p>The automation editor, where you change the instructions it follows.</p></figcaption></figure>
{% endstep %}

{% step %}

### Check automation work in Freshdesk

Open Freshdesk and look at the next ticket that comes in to see what the automation did there. In this example it left a drafted reply as a private note, signed by eesel AI, for a teammate to review and send.

<figure><img src="https://3732419023-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2xXO0947TYoPIhGoBgSE%2Fuploads%2Fgit-blob-abc40d9240f7bb788a1463e955698a5457bd2c99%2Ffreshdesk-note-on-ticket.png?alt=media" alt="A Freshdesk ticket where eesel AI has posted its drafted reply as a private note, ending with a line saying it was left by eesel AI"><figcaption><p>The drafted reply waiting as a private note on the ticket.</p></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**From Claude Code, Cursor or a terminal.** The same setup works as commands: `eesel login`, then `eesel integrations connect freshdesk` (your subdomain and API key), `eesel integrations download start` to copy your sources in, and `eesel automations` to see and switch on the automations. Trigger keys for this page are in the Triggers table below. Full command reference: [The eesel CLI](/apis-and-developer-resources/cli.md). Step-by-step: [Set up from Claude Code or the terminal](/getting-started/set-up-from-a-coding-agent.md). From an MCP client: [Claude Code and MCP clients](/apis-and-developer-resources/claude-code-and-mcp-clients.md).
{% endhint %}

## Sources, triggers and actions

### Sources

Sources are what it learns from:

| Source               | Description                                                                                                                                                                                                                  | Requires                       |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| **Help Center**      | Your published support articles                                                                                                                                                                                              | Quick start or Full connection |
| **Canned Responses** | Your team's pre-written response templates                                                                                                                                                                                   | Full connection                |
| **Tickets**          | Past tickets with status Resolved or Closed. The first import takes tickets from the last 30 days, up to 1,000 of them. Ask your agent, or set a filter, to import more. Optional [PII redaction](/account/pii-redaction.md) | Full connection                |

Every other integration on the agent is also a source, so a Freshdesk reply can draw on Confluence, your website, and your files at once. See [Integrations](/integrations/overview.md).

### Triggers

Triggers are the Freshdesk events an automation can run on:

| Trigger                             | Fires when                                                   | Best for                                                                    | Key                         |
| ----------------------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------- | --------------------------- |
| **Call @eesel in an internal note** | A teammate mentions @eesel in an internal note               | On-demand help                                                              | `freshdesk_eesel_mentioned` |
| **New ticket**                      | A new ticket comes in                                        | Full automation or triage                                                   | `freshdesk_ticket_created`  |
| **Ticket updated**                  | A ticket is updated                                          | Follow-up handling                                                          | `freshdesk_ticket_updated`  |
| **Fresh Chat**                      | A customer sends a message in a Fresh Chat live conversation | Live chat, see [Fresh Chat](/integrations/helpdesks/freshdesk/freshchat.md) | `freshchat`                 |

### Actions

Actions are what it can do, each set to run on its own, ask you first, or stay off:

|             | Action                                      | What it does                                                                                                                                                                    |
| ----------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Respond** | Send ticket reply                           | Sends a reply to the customer                                                                                                                                                   |
|             | Leave internal note                         | Adds a private note only your team sees. Start here: the agent drafts, a human sends. Every note ends with a short "Left by eesel AI" line linking to the run in your dashboard |
|             | Draft ticket reply                          | Writes a reply and holds it for a person to approve. Nothing reaches the customer until someone approves it in the dashboard                                                    |
| **Manage**  | Add tags                                    | Tags the ticket                                                                                                                                                                 |
|             | Create ticket                               | Creates a new ticket                                                                                                                                                            |
|             | Assign to teammate / Assign to team         | Routes the ticket to a person or a group                                                                                                                                        |
|             | Close ticket / Update status                | Closes the ticket, or changes its status                                                                                                                                        |
|             | Update ticket                               | Changes fields like priority or custom fields                                                                                                                                   |
|             | Merge tickets                               | Merges one ticket into another. **Can't be undone in Freshdesk**, so leave it off unless you specifically want it                                                               |
| **Look up** | Read ticket / Search tickets / List tickets | Reads and finds tickets. On a heavily threaded ticket, Read ticket returns the 40 most recent messages and says how many older ones it left out                                 |
|             | Get ticket field options                    | Lists a field's allowed values, so tags and custom fields get set correctly                                                                                                     |

## Fresh Chat

Fresh Chat is Freshworks' live chat widget. Connect it and the same agent that handles your tickets answers chats in real time, using everything it already learned from your Freshdesk knowledge. See the [Fresh Chat guide](/integrations/helpdesks/freshdesk/freshchat.md).

## Troubleshooting

<details>

<summary>Agent not picking up tickets?</summary>

Check that an automation is switched on for the event you're expecting on the agent's **Automations** page, look at its activity to see whether events arrived and were skipped by the filter, and confirm at least one action is enabled.

</details>

<details>

<summary>A long ticket looks like it is missing its latest messages</summary>

Read ticket returns the 40 most recent messages on a ticket, because a very long thread is more than an agent can read in one go, and because Freshdesk's API limits how much we can pull for you at once. When it leaves messages out it says so in its reply, along with the ticket's real message count, so the agent knows it is not looking at the whole ticket and can ask for more.

On an extremely long ticket (thousands of messages) the read stops early rather than using up your Freshdesk API quota. It says so when that happens, and the agent is told not to draw conclusions from a partial read.

If a report or a reply is quoting old information from a long ticket, check the run in your dashboard: the read's reply shows how many messages the ticket has and how many came back.

</details>

<details>

<summary>Connection failing, or setup keeps asking for the API key?</summary>

Double-check the subdomain (for `acme.freshdesk.com`, enter `acme`) and confirm the API key was copied in full from Freshdesk under your profile picture, then **Profile settings**. If the key was revoked, use **Re-authorize** on the connected account to enter a valid one.

</details>

<details>

<summary>Tickets or canned responses missing?</summary>

Both need the full connection. Quick start indexes the help center only. Confirm the connection is still authorized, then re-sync.

</details>

## FAQ

<details>

<summary>How do I keep a human in the loop?</summary>

Two ways, and you can use both. Turn on **Leave internal note** instead of **Send ticket reply**, so the agent writes a private note your team reads, edits and sends. Or turn on **Draft ticket reply**, which writes the reply and holds it until a person approves it. Or set any action to ask you first, so the agent shows you what it wants to do and waits. Start with internal notes, then move to sending replies once you're happy. When an action is set to ask you first, the prepared reply shows up in the dashboard with three buttons: Approve runs it once, Always allow stops asking for that action, and Deny discards it.

</details>

<details>

<summary>Does connecting Freshdesk start replying to customers automatically?</summary>

No. Connecting only gives your agent access. It won't reply to customers on its own until you create an automation on a ticket event and enable a reply action, so you can test first.

</details>

<details>

<summary>Can I limit which tickets my agent handles?</summary>

Yes, for tickets. In the automation's instructions, describe the tickets it should act on, for example only refunds or a specific product, and what to do with them. It ignores the rest, and the automation's activity shows every ticket it skipped, with the reason. You can also set **Wait before processing**, up to 15 minutes, so your own Freshdesk automations and spam rules run before your agent looks at the ticket. For live chat, the [Fresh Chat](/integrations/helpdesks/freshdesk/freshchat.md) automation's own text does the same job: say which chats to join, for example one topic, and the rest are skipped.

</details>

<details>

<summary>Can I train it on past tickets, and what happens to sensitive data?</summary>

Yes, with the full connection. Turn on [PII redaction](/account/pii-redaction.md) and personal data is stripped before ticket content is indexed. Check the toggle rather than assuming, since the default varies by workspace.

</details>

<details>

<summary>Is any action irreversible?</summary>

Yes. **Merge tickets** cannot be undone in Freshdesk. Keep it off unless you deliberately want your agent merging tickets. Everything else can be corrected in Freshdesk afterwards.

</details>

<details>

<summary>Can it see screenshots and attachments?</summary>

Yes. When a customer attaches an image or a PDF, a screenshot or a receipt for example, your agent reads it along with the ticket. It looks at up to five attachments per turn. Videos, zip files and other formats are ignored.

</details>

<details>

<summary>Whose name do replies appear under?</summary>

By default, replies and internal notes post as the Freshdesk agent whose API key you connected with. To change that, open the Freshdesk integration page in eesel and pick a different agent under **Replies as**. Customers then see that agent's name.

</details>

<details>

<summary>What does it cost?</summary>

Pay-as-you-go: a ticket your agent handles is one task, however many replies happen on it, and chats you run yourself from the eesel dashboard are free. See [Pricing](/pricing/overview.md).

</details>

## Related pages

* [Helpdesk](/use-cases/helpdesk.md) for the job your teammate takes on in a ticket queue
* [Automations and Schedules](/automations-and-schedules/automations-and-schedules.md) for triggers, instructions and schedules
* [Actions and Approvals](/instructions-and-memory/actions-and-approvals.md) for setting each action to run on its own, ask you first, or stay off
* [Integrations overview](/integrations/overview.md) for how sources, triggers and actions fit together
* [Set up from Claude Code or the terminal](/getting-started/set-up-from-a-coding-agent.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.eesel.ai/integrations/helpdesks/freshdesk.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
