> 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/images-and-attachments.md).

# Images and attachments

What your AI agent can see when a customer attaches a screenshot, photo or PDF to a conversation: which channels it works on, which file types it can open, and what it does when it can't.

Your AI agent can open an image a customer attaches to a conversation, look at it, and answer from what it shows. A screenshot of an error, a photo of a damaged item, a picture of a receipt: on the channels listed below, the agent sees the picture itself, not just the file name.

This is different from the files you upload as knowledge. Those are indexed as text, so a scanned page or an image-only PDF indexes as empty. See [Uploading Files](/integrations/knowledge/uploading-files.md). An attachment on a live conversation takes a different path: the agent opens the file itself at the moment it answers, and for an image that means looking at the picture.

There is nothing to turn on, and it is not a paid add-on. It works on every plan, on the channels below.

## Where it works

| Channel                         | Reads attachments a customer sends |
| ------------------------------- | ---------------------------------- |
| Zendesk (email and web tickets) | Yes                                |
| Zendesk Messenger               | Yes                                |
| Intercom                        | Yes                                |
| Freshdesk (tickets)             | Yes                                |
| Freshchat (Freshdesk live chat) | Yes                                |
| Gorgias                         | Yes                                |
| Slack                           | Yes                                |
| Microsoft Teams (pasted images) | Yes                                |
| Discord                         | Yes                                |
| Other helpdesks and channels    | Not yet                            |

Where a channel is not listed, the conversation still reaches your agent and it still answers. It just can't see the attached file, so it answers from the text.

A few things worth knowing:

* **The chat bubble, inline embed and public chat link have no file picker**, so a visitor can't attach an image there in the first place.
* **Zendesk tickets that came in through a messaging channel** (the Zendesk web widget, WhatsApp through Zendesk) keep their attachments outside the ticket's comments, and those are not picked up yet. Attachments on ordinary email and web tickets are.
* **Freshchat uses your Freshdesk connection**, and reads attachments on both: a screenshot a visitor sends in live chat is opened the same way one on a ticket is.
* **On Microsoft Teams it is images pasted into the message.** A screenshot pasted into a chat is read. A file uploaded through Teams' own attach button goes to SharePoint or OneDrive instead, and that is not picked up yet.

## What it can open

* **Images: PNG, JPEG, GIF and WebP.** These are the formats the agent can view.
* **PDFs** attached to a conversation, on Zendesk (tickets and Messenger), Intercom, Freshdesk, Freshchat and Gorgias, and on Discord. Slack and Microsoft Teams forward images only, so a PDF dropped into Slack is not opened. A PDF is read for its text, so a scanned one with no text layer comes back empty here too, the same as when you upload it as knowledge.
* Up to **five files** on every channel except Discord, where every image or PDF on the message is offered.
* **How far back it looks depends on the channel.** On Zendesk tickets, Intercom, Freshdesk, Freshchat and Gorgias the agent looks back across everything the customer sent since anyone on your side last replied, so a screenshot sent one message before the question still counts. On Slack, Microsoft Teams, Discord and Zendesk Messenger it sees only the files attached to the message that triggers it.
* Other file types (video, zip archives, spreadsheets) are not opened.

**Photos straight from an iPhone are often HEIC**, which the agent can't view. When that happens it is told to answer the rest of the message, say plainly that it couldn't open the file, and ask for a PNG or JPEG rather than guess at what the picture showed.

Your agent decides per conversation whether a file is worth opening, because each one it opens costs it tokens. It is told to open the ones that look relevant to the question, so a logo in an email signature should be passed over and a screenshot attached to "why does this say failed?" opened. That is its judgement, not a rule, so see the troubleshooting below if it skips one you wanted read.

## Sending your agent an image yourself

In the dashboard chat you can attach files to your own message: up to three files, 3MB each and about 3MB in total, with a larger image downscaled to fit. The picker takes JPEG, PNG, WebP and GIF images, plus PDF, CSV, text and Markdown files, which are read as text. The browser extension takes images only. Neither offers HEIC or SVG, the same as on a customer conversation.

Attaching a screenshot here is a quick way to see your agent describe an image, but it is a different path from a customer conversation: the file travels inline rather than as a link the agent fetches. To test what happens on a real conversation, use the channel itself.

## Checking it on your own setup

Ask your agent in the dashboard chat: "can you read screenshots customers send in my helpdesk?" It is told, every turn, which of your connected integrations read attachments, so it answers for the integrations you actually have rather than in general.

The test that settles it either way: send yourself a ticket or a message on the channel you care about with a screenshot attached, and watch what the agent does with it.

## Troubleshooting

<details>

<summary>The agent says it couldn't open the file</summary>

Most often the file is an iPhone HEIC photo, or an image whose name says `.jpg` but whose contents are something else. Ask the customer to resend it as a PNG or JPEG. The agent is told to say it couldn't open the file rather than invent what it showed.

</details>

<details>

<summary>The agent ignored the screenshot</summary>

It opens a file when the file looks relevant to the question. If it should always look, say so in your instructions, for example "when a customer attaches a screenshot of an error, open it before answering". See [Instructions and Memory](/instructions-and-memory/instructions-and-memory.md).

</details>

<details>

<summary>The customer attached it on a channel that isn't listed</summary>

The agent answers from the text of the message. If reading attachments on that channel matters to you, tell us which channel through [Contact Us](/support/contact-us.md) so it can be prioritised.

</details>


---

# 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/images-and-attachments.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.
