Use this article to set up tickets reporting, read and customize the prebuilt Tickets and Tickets lifecycle report templates, filter your data, and report on time spent in each ticket state using custom reports.
Create a tickets report
Go to Reports and create a new report, then select the Tickets template to get started quickly. Once selected, the report opens with 14 prebuilt charts covering ticket volume, resolve times, and assignment data.
You can also use a range of ticket metrics and attributes to create your own custom report on the Advanced or Expert plan.
What the Tickets report template includes
Ticket time to resolve
Ticket time to resolve in office hours
Ticket time to resolve in Team office hours
Ticket time in submitted
Ticket time in progress
Ticket time in waiting on customer
Ticket time to resolve - by time
Ticket time to resolve - by team assigned
Ticket time to resolve - by teammate assigned
New tickets
Resolved tickets
Comparison of New and Resolved Tickets
Ticket volume - by team assigned
Ticket volume - by teammate assigned
The Tickets report template opens with the following charts pre-built:
How to read the information on each chart
Hover over the information icon at the top of a chart to see reporting period, report level filters, metrics, and metric level filters applied to each chart.
Customize the tickets report template
The tickets report template is fully customizable, enabling you to add more charts from the chart library, or remove charts you don't need in this report. All charts can be resized and moved around to where you want them.
Tickets lifecycle report
The Tickets lifecycle report shows how long tickets sit with each team and each teammate, and how they move between teams. It's built on a new dataset — Ticket assignments — where one row equals one assignment visit, not one ticket.
Open the prebuilt report
Go to Reports and create a new report. Select the Tickets lifecycle template — it contains all seven charts so you don't have to build anything from scratch.
The prebuilt report includes:
Median ticket time per assignment — by team
Median ticket time per assignment — by teammate
Median ticket time per assignment — by assignment order
Ticket time per assignment (team office hours) — by team
Ticket handoffs — by previous team and assigned team
Tickets handed off — by team
Ticket handoff Sankey — how tickets move between teams
What the Ticket assignments dataset metrics mean
The Tickets lifecycle report is built on the Ticket assignments dataset — a dataset where each row represents one assignment visit, not one ticket. It contains four metrics:
Metric | What it answers |
Ticket time per assignment | How long a ticket sat with each team or teammate |
Ticket time per assignment (team office hours) | Same as above, measured within the assigned team's office hours only |
Ticket handoffs | Total number of moves between teams or teammates (including within the same team) |
Tickets handed off | Unique count of tickets that were handed off at least once |
Tip: Use median rather than mean when analyzing duration metrics — a single long unassigned visit can distort averages significantly.
How the Ticket handoff Sankey chart works
The Sankey chart draws every path tickets took between teams, end to end. Each column is one handoff hop. A few things to know about how it works:
It follows each ticket through at most its first 8 reassignments
Each column shows the top 6 teams by volume; smaller teams are grouped into an "Other teams" node
Unassigned always appears as its own node — hiding it would show a direct handoff that never happened
If a ticket returns to the same team, it appears as one node with a count — not a second node
The chart cannot be edited; use the other charts in the report to slice the same data
The Sankey does not render in snapshots, scheduled reports, or exports — bar, column, and table charts do
Build your own ticket assignment charts
Go to Reports > New report > Create your own > Add chart. Choose a metric from the Ticket assignments dataset and set your breakdown using View by and Segment by. The Sankey is available in the chart-template picker under Tickets.
Useful breakdown combinations:
Time per team: Ticket time per assignment, View by Assigned team
Time per person: Ticket time per assignment, View by Assigned teammate
Where time is lost: Ticket time per assignment, View by Assignment order
Team ping-pong: Ticket handoffs, View by Previous team, Segment by Assigned team
Filter your tickets report
Take a deeper dive into your tickets report by using the filters at the top of your report to specify a date range, select a ticket type, or filter by a specific data attribute.
You can add multiple filters for more granular reporting.
The participation by teammate filters only counts human visible parts only. This means when a teammate posts a note it doesn’t count towards participation within the ticket.
Report on time spent in each ticket state
You can use the Ticket time in state dataset to report on time spent in each ticket state. This includes a "Ticket time spent in all states" metric and additional reporting attributes to filter and segment your custom report.
To maximize the benefits of this feature, customize and add new ticket states to align with your business processes.
Note: This functionality requires custom reports which are available on the Advanced and Expert plan only.
To report on ticket time spent across states in a custom report:
Step 3 — select the Ticket time spent in all states metric:
Step 4 — add a Ticket type filter to scope results to specific ticket types:
Step 5 — to see time broken down by individual ticket state, set View by or Segment by to Ticket custom state:
Step 6 — to break down by state category instead, use Ticket state category as the attribute:
Step 7 — to filter to a single state, add Ticket custom state as a filter. To see only pre-resolve states, add a filter Ticket custom state is not [your resolved states]:
Note: You won't be able to use these attributes to segment time to resolve by these "Ticket custom state" attributes.
In order to understand the time each ticket spent in each state before resolve, segment the metric “Ticket time spent in all states” by “Ticket custom state” and add a filter “Ticket custom state is not [resolved states]”. 👇
Note: The "Ticket time spent in all states" metric does not take into account office hours. This limitation only applies to this metric, not all metrics.
FAQs
Is there a way to calculate ticket re-open rate?
Is there a way to calculate ticket re-open rate?
Ticket re-open rate is not a built-in, visible metric in Intercom. You won't find a "re-open rate" percentage or chart in the standard Intercom reports or dashboards.
What you can see:
You can track the number of "Reopened conversations" in Intercom's reporting, but this is a metric — not a filterable status. You can't filter a report by "reopened" from the filter dropdown.
For tickets, there's no equivalent built-in reopened tickets metric — the conversation-level "Reopened conversations" metric is the closest available option.
How to visualize reopened conversations in a report:
Native reports: Use the Add chart menu in any pre-built report and search for "Reopened conversations" to add it as a chart.
Custom reports: When building a custom report chart, add "Reopened conversations" as a metric.
How to get the re-open rate:
You’ll need to calculate it yourself. Export your ticket data or use a custom report to count: The number of tickets that were reopened after being resolved (in your chosen time period). The total number of tickets resolved in that same period.
Then, divide the number of reopened tickets by the number of resolved tickets, and multiply by 100 to get the percentage.
Example: If 10 tickets were reopened and 100 tickets were resolved, your re-open rate is (10 ÷ 100) × 100 = 10%.
Why does a report show a ticket as open when the conversation is closed?
Why does a report show a ticket as open when the conversation is closed?
Ticket states and conversation states are tracked independently in Intercom. Closing a conversation does not automatically update the ticket's custom state.
For example: if a ticket has a custom state of 'Open' and the conversation is manually closed by a teammate, the conversation will appear as closed in the Inbox — but the ticket will still show as 'Open' in ticket reports until the ticket state is explicitly updated.
Note: To keep ticket states in sync with conversation states, you can set up a workflow that updates the ticket state when a conversation is closed. Go to Fin AI Agent > Workflows and use the 'If teammate changes the conversation state' trigger with a 'Set ticket state' action.
Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts














