> 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

Set up an AI agent for Freshdesk. It drafts or sends ticket replies, tags and routes tickets, and learns from your help center and past tickets.

eesel's AI agent for Freshdesk works inside your Freshdesk tickets, like a teammate with its own seat. It drafts or sends replies, leaves private notes, and tags, assigns and closes tickets. It also answers live chat on [Freshchat](/integrations/helpdesks/freshdesk/freshchat.md).

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.

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>

## Set up eesel in Freshdesk

{% 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-1467faeaa3084f0e490dcf64dbf056886b8710fd%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 Freshchat live conversation | Live chat, see [Freshchat](/integrations/helpdesks/freshdesk/freshchat.md) | `freshchat`                 |

### Actions

Actions are what it can do:

|             | 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                                                                                                     |

You stay in control the whole way. Adjust your AI agent's access to knowledge and its action permissions to your liking. See [Actions and Approvals](/instructions-and-memory/actions-and-approvals.md).

## Freshchat live chat

Freshchat 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 [Freshchat guide](/integrations/helpdesks/freshdesk/freshchat.md).

## Limitations

* **Merge tickets can't be undone.** Freshdesk has no way to reverse a merge, so keep that action off unless you want it.
* **Very long tickets are read in part.** Read ticket returns the 40 most recent messages, and says how many it left out.
* **Quick start is help center only.** Tickets, canned responses, triggers and actions need the full connection with an API key.
* **The first ticket import is 30 days.** It takes up to 1,000 resolved or closed tickets from the last 30 days. Ask your agent to import more.
* **One trigger per automation.** The trigger event is fixed when the automation is created, so each trigger needs its own automation.
* **Groups are matched by ID.** The first check sees a ticket's group ID, not the group's name.

## 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 add an AI agent to Freshdesk?</summary>

Ask your eesel agent in chat to connect Freshdesk, paste your API key into the secure form, then ask it to create an automation. There is no Freshdesk app or chatbot widget to install. Connecting alone does not reply to anyone: your agent only acts once you create an automation on a ticket event and enable a reply action, so you can test first. The steps are in [Set up eesel in Freshdesk](#set-up-eesel-in-freshdesk).

</details>

<details>

<summary>How long does it take to set up an AI agent in Freshdesk?</summary>

Connecting is one step: your subdomain and an API key, pasted into a secure form in the chat. Then ask your agent for one automation, for example "leave a draft reply as a private note on every new ticket". Your help center, canned responses and recent tickets sync on their own after you connect.

</details>

<details>

<summary>Does the Freshdesk AI agent send replies or only draft them?</summary>

Either, depending on how you set it up. **Leave internal note** writes a private note your team reads, edits and sends. **Draft ticket reply** writes the reply and holds it until a person approves it. **Send ticket reply** replies directly.

Many teams start with internal notes, then move to sending replies once they're happy.

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>Can I limit which Freshdesk tickets the AI 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 can see the ticket's subject, tags, status, priority, type, group, custom fields and who sent it. 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 [Freshchat](/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 the Freshdesk AI agent 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. Your agent also learns from your help center, canned responses, and anything else you connect, such as Confluence, Notion, Google Drive or your website.

</details>

<details>

<summary>Can I connect Freshdesk to Claude or ChatGPT?</summary>

Yes, through eesel. Once Freshdesk is connected, you can talk to your eesel agent from Claude, ChatGPT or Cursor, and it works with your Freshdesk tickets and knowledge. See [Use eesel from Claude and other assistants](/apis-and-developer-resources/use-eesel-from-claude-and-other-assistants.md), [Use eesel from ChatGPT](/apis-and-developer-resources/use-eesel-from-chatgpt.md) and [Claude Code and MCP clients](/apis-and-developer-resources/claude-code-and-mcp-clients.md).

</details>

<details>

<summary>What reporting do I get for the Freshdesk AI agent?</summary>

The Activity page lists every ticket your agent handled or skipped, with what it searched, each action it took, who approved it, and its reasoning. The [Reports](/reports/reports.md) page shows volume, triggers and approvals over time. You can also ask your agent for a written report, or put one on a schedule.

</details>

<details>

<summary>Is any Freshdesk AI agent action irreversible?</summary>

Yes. **Merge tickets** cannot be undone in Freshdesk. Only give your agent this action if you deliberately want it merging tickets. Everything else can be corrected in Freshdesk afterwards.

</details>

<details>

<summary>Can the Freshdesk AI agent read 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>

## 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 choosing what your agent may do
* [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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
