> ## Documentation Index
> Fetch the complete documentation index at: https://docs.haloagents.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Reports

> Inbound volume, first response, time to close, per-teammate numbers, conversations by tag and by ticket type, and CSAT ratings for your inbox.

Open **Inbox**, then **Reports** at the bottom of the inbox's left menu (or go to `/dashboard/inbox/reports`). Anyone who can see the inbox can see the reports.

## Filters

One filter bar applies to every report on the page:

| Filter | What it does |
| - | - |
| **Date range** | Last 7, 30 or 90 days, or any range up to 367 days. Days are calendar days in your browser's time zone (shown under the volume chart). |
| **Teammate** | Conversations currently assigned to that teammate, or **Unassigned**. |
| **Inbox** | Conversations currently routed to that team inbox, or **No team inbox**. |
| **Channel** | The conversation's channel: chat, email, sales agent, in-app message, help center, support, API. |

Filters match a conversation's **current** assignee, inbox and channel. The filters live in the page URL, so a link to the page opens with the same report.

Spam and conversations merged into another conversation are never counted.

## Support overview

| Number | Definition |
| - | - |
| **New inbound** | Conversations created in the period, except ones a teammate started (the first message is a teammate's). |
| **Replied to** | Conversations that got at least one reply in the period. With **Count AI replies** on, AI replies count; off, only teammate replies do. Internal notes never count. |
| **Resolved** | Conversations that are resolved now and were last closed in the period. A conversation that was reopened and is still open does not count; one closed twice counts once, on its latest close. |
| **Reopened** | Conversations that moved from resolved back to open (or snoozed, in progress, priority) in the period. Counted from the day this report shipped; earlier reopens were not recorded. |
| **First response (median, P90)** | For the new inbound conversations: the time from the conversation's start to its first reply, whenever that reply came. The **Count AI replies** switch decides whether an AI reply counts. P90 is the 90th percentile (the same as `PERCENTILE.INC(range, 0.9)` in a spreadsheet). Conversations with no reply yet are shown as **awaiting**. |
| **Time to close (median)** | For the resolved conversations: time from the conversation's start to its last close. |

**New inbound conversations by day** splits the new inbound count by channel or by team inbox. Switch to **Table** to see the numbers behind the chart.

### Teammates

One row per teammate with activity in the period, plus an **Unassigned** row:

| Column | Definition |
| - | - |
| **Assigned** | New inbound conversations in the period currently assigned to them. Assigned across all rows adds up to New inbound. |
| **Replied to** | Conversations they replied to in the period (replies sent as an alias count for the person who sent them). |
| **Resolved** | Resolved conversations (as above) currently assigned to them. |
| **Median first response** | Over the new inbound conversations where they sent the first teammate reply. AI replies never count here. |
| **CSAT** | Share of 4 and 5 ratings (and how many ratings) among the [CSAT](https://docs.haloagents.ai/inbox/csat.md) answers given in the period for surveys sent while the conversation was assigned to them. |

## CSAT

When [CSAT surveys](https://docs.haloagents.ai/inbox/csat.md) are on, the first two tiles are:

* **CSAT**: the share of answers given in the period that rated the conversation 4 or 5 out of 5, with how many answers and their average score.
* **Survey response rate**: of the surveys sent in the period, how many the customer has answered.

The filters apply to CSAT like to the rest of the report (the conversation's current teammate, inbox and channel). Summary CSV adds the CSAT numbers and how many answers gave each score.

## Conversations by tag

How the period's conversations are [tagged](https://docs.haloagents.ai/inbox/tags.md). Every number here is over the conversations **created** in the period (same filters, spam and merged conversations left out), counted under each tag they carry **now**. A conversation with two tags counts once under each, so the tag rows do not add up to the number of conversations.

* **Tagged conversations**: how many of the period's conversations carry at least one tag, and the share.
* **Tags used**: distinct tags on those conversations. **Untagged**: conversations without a tag.
* **Tags**: one row per tag with its conversations, its share of all conversations in the period, and a split by **Channel** or by **Inbox** (the conversation's current team inbox).
* **Tagged conversations by day**: the same counts by the day the conversation was created, as a stacked chart (the five largest tags, the rest as **Other**) or a table with every tag.

Click a tag to open the inbox filtered on **Tag is** that tag and **Created** within the period. The inbox shows one state at a time (**Open**, **Snoozed**, **Resolved**), so each state's list is a part of the report's count, and together they add up to it in the common case. The inbox still applies its own rules: outreach replies and unreplied conversations in an "isolate until reply" inbox (while open) stay hidden from **All**, and a very large period can exceed the number of conversations the inbox loads. Tags with no conversation in the period are not listed.

## Conversations by ticket type

How the period's conversations split across your [ticket types](https://docs.haloagents.ai/inbox/ticket-types.md) and statuses. Every number is over the conversations **created** in the period (same filters, spam and merged conversations left out), by the type and status they have **now**. Archived types still count for the conversations that have them; a conversation whose type was deleted counts under **No type**.

* **Typed conversations**: how many of the period's conversations have a type, and the share. **Types used**: distinct types. **No type**: conversations without one.
* **Types and statuses**: one bar (or row) per type with its conversations by status (**Open**, **Priority**, **In progress**, **Snoozed**, **Resolved**), and the **median time to close**: from the conversation's start to its close, over the type's resolved conversations that have a close time (shown with how many that is). Click a type to open the inbox filtered on **Ticket type is** that type and **Created** within the period (one state chip at a time, as for tags).
* **Fields**: for every single-select and multi-select field of the types used in the period, how many of that type's conversations hold each value (every choice is listed, zero counts included), plus **(not set)**. A multi-select conversation counts once per chosen value, so those rows can add up to more than the type's conversations. Text, number, date and yes/no fields are not broken down.

## CSAT ratings

Below the support overview, the **CSAT ratings** section breaks the answers given in the period down. It uses the same filter bar. A line at the top repeats the period's totals: ratings, average score, CSAT %, how many came with a comment, and how many of the surveys sent in the period were answered.

| Card | What it shows |
| - | - |
| **Ratings by day** | How many answers gave each score (1 to 5), per calendar day of the period. Switch to **Table** for the numbers, with each day's total, average score and CSAT %. |
| **Teammates** | One row per teammate: ratings, average score, CSAT % and how many answers gave each score. A teammate is credited for the surveys sent **while the conversation was assigned to them**, even if it was reassigned later; **Unassigned** covers surveys sent while nobody was assigned. The **Teammate** filter above still picks conversations by their current assignee, so a filtered view can credit a different teammate than the one selected. |
| **Rated conversations** | Every answer in the period, newest first, with the comment, the contact, the credited teammate and the channel (how the survey was delivered: widget or email, then the conversation's channel). The title opens the conversation in the inbox. **Score** and **With comments only** narrow this list (and are kept in the page URL); the cards above never change with them. The list holds the newest 1,000 answers; a longer period says so and asks you to narrow it. |

Each card has its own **CSV** button. The conversations CSV holds every listed answer, with an absolute link to each conversation and both channels.

## Exporting

Every table has a **CSV** button, and **Summary CSV** exports the headline numbers. The file holds exactly the rows on screen, with durations in seconds; the one exception is the CSAT **Rated conversations** CSV, which holds every listed answer, not just the current page.

## Notes

* Close times are recorded automatically whenever a conversation is resolved, however it is resolved (inbox, bulk actions, auto-close, AI, MCP, Ask AI). Conversations closed before this report shipped were given the best close time available: the auto-close message, the AI's resolve time, or otherwise the conversation's last message.
* Conversations imported from Intercom count on the dates they happened in Intercom.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.