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

# Drilldown reports

> Build nested conversation reports, compare categories and customer segments, investigate any count in Search, and export the results.

Drilldown reports turn a conversation population into a table you can explore.
Choose the conversations with **filters**, organize the rows with **Group By**,
and compare counts across columns with **Split By**. Select any count to open
its conversations in Search.

Use a report to answer questions such as:

* Which categories have the most unresolved conversations?
* Which teams or customer segments account for urgent work?
* How has category volume changed from week to week?
* Which conversations sit behind a particular status or tag count?

The report examples use six synthetic conversations filtered by the
`docs-handle-time` tag: three Orders conversations and three Accounts
conversations. The library image separately illustrates saved report management.
Use your own tags and dates when following the examples in your organization.

## Before you start

You need permission to read conversations to run and export reports. Owners,
Administrators, Team Leads, and Users can create and change saved reports.
Owner or Administrator access is required to configure
[Custom Dimensions](https://docs.cxp.crescendo.ai/capabilities/custom-dimensions.md).

Reports use indexed production conversations managed by CXP; test conversations
are excluded. Recent conversation updates can take time to appear in the index.

## Open the report library

Open **Reporting → Drilldown Reports**. The library shows each report's name,
description, grouping hierarchy, update time, and updater. Search by name or
description, change the sort, or select a report to open it.

Select **New Report** to create a report, or **Import** to start from an exported
configuration. Row actions let authorized authors export or delete reports;
select rows to delete several at once. Deletion removes the saved report
configuration, not its conversations.

![Drilldown report library with saved report names, descriptions, grouping hierarchies and update details](https://mintcdn.com/cxp/dLZXah_wJs6ZUvfY/assets/screenshots/drilldown-library-demo.png?fit=max\&auto=format\&n=dLZXah_wJs6ZUvfY\&q=85\&s=f966efb232f1828a84f1c9e3b88a38dc)

The report library, populated with synthetic examples of category, tag, status, priority, assignment, and team reports.

## Create and configure a report

1. Select **New Report**, enter a name and optional description, and select
   **Create**.
2. Describe the population, grouping, and comparison you want in the Description
   area. Select **Apply** to generate a configuration.
3. Review the generated filters, **Group By**, and **Split By**. Adjust them
   manually as needed.
4. Inspect the results, then select **Save** to keep the configuration.

A new report starts with the last 30 days in UTC, the three category levels,
and Created columns grouped by week. **Apply** generates settings; it does not
save them. Changes to filters, grouping, splits, or date intervals refresh the
results automatically. Use the header's refresh icon to rerun the same report.

### Describe what you want

Include the population, row hierarchy, and comparison in the request. For example:

```text theme={null}
Show conversations tagged docs-handle-time from the last 30 days.
Group by Category, Subcategory, and Tertiary category.
Split by Status.
```

For a workload report, try:

```text theme={null}
Show open and pending conversations with high or urgent priority.
Group by Team and Category. Split by Priority.
```

Review the generated controls before using the results. The controls make the
actual configuration visible and let you correct an ambiguous description.
Editing the description alone does not change the report's criteria; select
**Apply** to generate a new configuration from it.

### Choose the conversation population

The keyword and filter controls work like [Search](https://docs.cxp.crescendo.ai/capabilities/searching-conversations.md).
Use **Filter** to add conditions such as Status, Priority, Assigned, Organization,
Team, Pending On, Tags, Media, Category, Handle Time, Elapsed HT, or a configured
custom dimension.
You can include, exclude, disable, edit, or remove filter chips.

Handle Time and Elapsed HT accept exact values or inclusive numeric bounds in
**seconds**. Handle Time uses recorded completed-cycle totals; Elapsed HT also
includes eligible agent work in progress at the run's fixed cutoff. See
[handling-time filters](https://docs.cxp.crescendo.ai/capabilities/searching-conversations.md#filter-by-handling-time) for
the controls and missing-data distinction.

The **Created** filter selects the date range. Open it to choose a preset or
custom bounds and review the timezone. Separate chips are combined with **AND**;
multiple selected values within one chip are alternatives, combined with **OR**.
For example, one Status chip containing Open and Pending includes either status.
Adding a Priority chip containing Urgent narrows that population to urgent work.

### Choose rows and columns

| Control | What it does | Example |
| - | - | - |
| **Group By** | Builds one to five ordered levels of rows. Move levels up or down to change the hierarchy. | Category → Subcategory → Tertiary category |
| **Split By** | Adds a count column for each returned value of one property. | Closed, Open, Pending, Resolved |
| **Day / Week / Month** | Changes calendar buckets when splitting by Created or Updated. | Weekly Created columns |

Available properties include the category and handoff hierarchies, tags, media,
agent and assignment properties, status, priority, organization, team, pending
party, **Elapsed HT**, and configured custom dimensions. Grouping by a property does not filter
it out of the population.

Elapsed HT is a built-in numeric property: use it in **Group By** or **Split By**
without creating a Custom Dimension. It groups exact whole-second values,
rather than automatic duration bands. Conversations without usable progress
appear in the zero group, so that group can include fallback values as well as
recorded zeroes. Add numeric filters to focus on a particular duration range.

![Drilldown report grouped by the built-in Elapsed HT numeric property without a Custom Dimension definition](https://mintcdn.com/cxp/sTvyAxtCMQDKa5Vp/assets/screenshots/elapsed-handling-drilldown.png?fit=max\&auto=format\&n=sTvyAxtCMQDKa5Vp\&q=85\&s=687be08bb33d2c6ee741f1a905122f14)

Group directly by Elapsed HT to count conversations at each whole-second value. Active work is evaluated at this report run's cutoff.

**Group By** and **Split By** sit alongside the filters and wrap when needed.
Changing group order changes the question: Team → Category shows categories
within each team; Category → Team shows teams within each category.

## Example: inspect work inside a category

Configure the first example above. The six-conversation sample has three Orders
conversations, all Resolved, and three Accounts conversations: two Resolved and
one Open. Expand Orders → Delivery → General or Accounts → Access → General to
inspect the complete category path.

![Category hierarchy report showing Orders and Accounts, AHT, and status split counts](https://mintcdn.com/cxp/sTvyAxtCMQDKa5Vp/assets/screenshots/drilldown-category-status-demo.png?fit=max\&auto=format\&n=sTvyAxtCMQDKa5Vp\&q=85\&s=b99a41f9e5a481f187e0c8324dce2137)

Six conversations grouped by category. Orders has three Resolved conversations; Accounts has two Resolved and one Open.

The left metrics describe the entire row. The colored cells on the right show
how many conversations also match each split value. Darker green means a larger
count within the returned split cells; it is a visual comparison, not a quality
or SLA indicator.

### Open a main count or a split count

* Select Orders **Count 3** to open all three Orders conversations matching the
  report's filters.
* Select Orders **Resolved 3** to add the Resolved status condition. All three
  Orders conversations match it in this example.
* Select a nested row's count to include every category level in that row's path.

Search opens with the complete criteria visible as editable chips. For the
Resolved cell, those criteria include the report's date range, the
`docs-handle-time` tag, Category Orders, and Status Resolved.

![Search results from the Orders Resolved cell, showing date, tag, category and status filters with Handle Time values](https://mintcdn.com/cxp/sTvyAxtCMQDKa5Vp/assets/screenshots/drilldown-cell-search-demo.png?fit=max\&auto=format\&n=sTvyAxtCMQDKa5Vp\&q=85\&s=90e9fa9dce5aef44cfa7a8d13ab73c0a)

The Resolved cell opens three Orders conversations in Search. Every condition can be inspected or edited.

You can refine the criteria or select **Save as View** to reuse them, if your
role permits personal View management. See [Using Views](https://docs.cxp.crescendo.ai/capabilities/using-views.md).
A zero-valued cell also opens Search with its criteria.

Cell links carry the report's resolved date bounds. A View created from a cell
therefore preserves that specific range; change its date filter if you want a
rolling range such as Last 30 days. Conversations may change between the report
run and your Search request, so results are a current query, not a saved snapshot.

For Elapsed HT, the count link also carries the report's calculation cutoff so
the linked query uses the same elapsed-time boundary. Refresh starts a new run
with a new cutoff. Source data can still change between requests.

### Separate conditions on the same property stay ANDed

Suppose a report is filtered to Tags `tag-a` and split by Tags. Opening the
`tag-b` cell adds another Tags condition:

```text theme={null}
Tags contains tag-a
AND Tags contains tag-b
AND the selected row's conditions
```

Search displays separate chips for those conditions, and saving as a View keeps
them separate. Putting `tag-a` and `tag-b` together inside one chip instead means
either tag. This distinction also applies to custom dimensions that emit several
values.

## Example: compare weekly volume

Use this description, then select **Apply**:

```text theme={null}
Show conversations tagged docs-handle-time from the last 30 days.
Group by Category. Split by Created, by week.
```

Select **Week** above the table if needed. Switch to **Day** for daily detail or
**Month** for a broader comparison. The interval controls appear for Created and
Updated calendar splits; they do not appear for Status or Tags.

![Weekly conversation volume report with Category rows and Created date split columns](https://mintcdn.com/cxp/sTvyAxtCMQDKa5Vp/assets/screenshots/drilldown-weekly-demo.png?fit=max\&auto=format\&n=sTvyAxtCMQDKa5Vp\&q=85\&s=5bdda1aec233ac610b45d0cc6fc6e610)

Compare category volumes across weeks while the row metrics stay fixed on the left.

Date columns use the report timezone. The first or last bucket can cover only
part of a week or month because the report's date filter still applies. Opening
a date cell adds that column's interval to the existing report and row filters.

## Example: report on a business classification

Create the **Support Segment** dimension in the
[Custom Dimensions walkthrough](https://docs.cxp.crescendo.ai/capabilities/custom-dimensions.md#example-classify-support-segments),
then choose it in **Group By** and choose Status in **Split By**.

The six-conversation sample produces two VIP, two Returning, and two Standard
conversations. VIP and Returning are all Resolved; Standard has one Resolved and
one Open conversation. The dimension gives VIP precedence when both the `vip`
and `repeat-customer` tags are present.

![Support Segment report showing two conversations in each segment, AHT, and status splits](https://mintcdn.com/cxp/sTvyAxtCMQDKa5Vp/assets/screenshots/drilldown-custom-dimension-demo.png?fit=max\&auto=format\&n=sTvyAxtCMQDKa5Vp\&q=85\&s=9d685ce416c349f11530f5b96e9293ed)

The six conversations divide evenly across VIP, Returning, and Standard.

Custom dimensions can be used as filters, row levels, or the split property.
Their count cells support the same Search navigation as standard properties.

## Understand the metrics and table controls

| Column | Meaning |
| - | - |
| **Count** | Conversations matching the report filters and the entire row path. |
| **Avg CSat** | Average of available conversation satisfaction scores. |
| **Esc** | Conversations in the row counted as escalated. |
| **Esc %** | Escalated conversations as a percentage of that row's Count. |
| **Avg TTA** | Average measured time to agent, displayed as minutes:seconds. Excel retains numeric seconds. |
| **AHT** | Average recorded human-agent Handle Time for conversations in the row, displayed as days, hours, minutes, and seconds. Excel retains numeric seconds. |
| **Split columns** | Conversations that match the report filters, row path, and column value. |

A dash in a metric means there is no measurement; a recorded zero is a real
value. Elapsed HT grouping has a separate zero fallback described above. Parent metrics are
calculated from the parent's own population. Tags and multi-valued dimensions
can put the same conversation into several groups, so child and split counts
need not add up to their parent.

**AHT** follows Avg TTA. Each conversation with a recorded Handle Time contributes
once to its row's average; missing values are excluded and recorded zeroes are
included. Parent AHT is calculated from the parent's conversations, not by
averaging child averages. Averages are rounded only for display; sorting and
Excel keep the numeric seconds.

In this sample, Orders has Handle Time values of 0, 60, and 120 seconds, giving
an AHT of 60 seconds. Accounts has one value of 90,061 seconds and two missing
values, so its AHT is 90,061 seconds. Across all six conversations, the four
recorded values average 22,560.25 seconds. Missing values do not enter the
denominator, and averaging the two category averages would give the wrong result.

Handle Time measures human-agent responsibility while a conversation is Open;
AI, team-assigned, and Pending time are excluded. Report filters select
conversations rather than limiting their recorded handling to the filter's date
range. See [Conversation Handle Time Reporting](https://docs.cxp.crescendo.ai/capabilities/conversation-handle-time-reporting.md)
for the calculation rules, reopening behavior, and practical report examples.

Above the table, the left side shows the total and Created range used by the
result. **Filter** on the right searches row labels; it does not change the
conversation population. Select a column heading to sort within each group, or
use the **Expand all / Collapse all** icon. Scroll horizontally for more split
columns: Name through AHT stay fixed, with a shadow at the edge.

## Save, export, and maintain reports

Click the title to rename a report. Enter or clicking outside accepts the title
edit; Escape cancels it. Select **Save** to persist configuration changes, or
**Reset** to restore the last saved configuration. Leaving with unsaved changes
opens **Keep editing / Discard changes**.

The **Export** menu provides two different outputs:

| Output | Use it for | Included content |
| - | - | - |
| **Excel** | Analysis or sharing report data. | One worksheet with every returned row, hierarchy levels, metrics, and split counts; no Limitations footer. Local label filtering and collapsed rows do not remove exported data. |
| **Configuration JSON** | Reusing a report setup. | The report configuration. Import creates a new report; it does not copy conversations. |

Custom dimensions referenced by an imported report must already exist in the
destination organization. Compatible legacy report configurations can also be
imported; unsupported filters are rejected visibly.

When available, **Ask Analyst** starts a private analysis session from the report.
It is disabled for reports using custom dimensions, or **Elapsed HT** as an
enabled filter, grouping, or split, because Analyst cannot execute those calculated
values. Numeric keywords can also disable the action because those searches
can depend on the calculated value.
Ordinary word keywords and a report's recorded **AHT** metric alone do not disable
Ask Analyst. Report exports remain available.

## Troubleshooting and limits

| What you see | What to check |
| - | - |
| No conversations | Check dates, timezone, keywords, enabled filters, and whether the conversations are production records. Remove one condition at a time to see what narrows the result. |
| N/A (missing) | The grouping or split property has no value. A missing value differs from zero, false, and an empty string. |
| Generation fails | Retry Apply or configure filters and grouping manually. Verify that the requested custom dimension exists. |
| A custom dimension changed | Refresh the report and open a new count link. Repair references to deleted dimensions. |
| A large report fails or omits values | Narrow the filters, reduce grouping levels, or choose Week/Month instead of Day. |

Reports discover up to 100 values per branch or property split, plus missing
values, and show a warning when values are omitted. Returned cells are counted
using their complete conditions. Export contains the returned tree, not any
omitted groups. Very large cell-filter URLs may require simpler criteria.


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