Analytics metrics
How overview numbers and custom reports are calculated in your workspace.
Where to find analytics
Open /analytics in your dashboard. The page has two parts:
- Quick overview — preset ranges (24 hours, 7 days, 30 days) using the same data source as the dashboard home.
- Report builder — choose metrics, date range, filters, group-by, interaction scope, chart type; save reports and export CSV.
For platform setup (CSAT fields, macros, channels), see the Setup & platform guide.
Data source & limits
Custom reports compute from support tickets and their messages in your workspace (embed chat and email). They do not read external systems like Stripe or Mixpanel unless you stored values on tickets (custom fields or SDK traits).
- Each report run loads up to 2,500 tickets matching the date window (most recently active first). If more tickets qualify, results are marked truncated — raise the cap only via your platform operator changing server configuration.
- Date ranges cannot exceed 366 days.
- Time filter mode (in the builder): filter tickets by activity in range (default), only tickets created in range, or only tickets solved in range.
Interaction scope
Scope limits which tickets and messages count toward the report:
| Scope | Includes |
|---|---|
| All | Full picture — bot and human activity. |
| Human agents only | Tickets where at least one human agent message exists on the thread. Bot-only message metrics are excluded. |
| Chatbot / automation only | Tickets with bot assistant messages in the period, or tickets with no human agent participation. |
When grouping by assignee, unassigned / bot-handled tickets appear as Chatbot (AI).
Quick overview cards
Overview uses GET /api/dashboard/stats with your selected solved preset. These are point-in-time or short-window counts, not the full report engine.
| Card | Calculation |
|---|---|
| Open agent tickets | Tickets in status Waiting for agent or Pending (human queue). |
| Active bot conversations | Tickets currently in Bot conversation status. |
| Solved by chatbot | Tickets marked Solved or Closed in the selected time window with no human assignee (assignedToUserId is null). |
| Solved by agents | Tickets marked Solved or Closed in the window with a human assignee. |
Dashboard home (/dashboard) shows additional live stats (team members, knowledge document count, embed session count, oldest unsolved ticket) on the same API family.
Report metrics — volume
| Metric | How it is calculated |
|---|---|
| Tickets created | One per ticket whose created timestamp falls in the report date range (respects time filter mode). |
| Tickets solved | One per ticket solved (or closed) in the range. |
| Ticket reopens | Counts reopen events in range from analytics events when available; otherwise a heuristic if a ticket was solved and is open again. |
| Agent messages sent | Human agent messages with timestamp in range. Excluded when scope is chatbot-only. |
| Bot messages sent | Assistant/bot messages in range. Excluded when scope is human-only. |
| Customer messages | Inbound customer messages in range (embed user role or email inbound). |
| Tickets with human interaction | One per ticket where any human agent message exists on the thread — multiple agent replies still count as one ticket. |
| Human interactions (per message) | Each human agent message in the period counts separately (same ticket can contribute many times). |
| Currently waiting | Tickets where the last message is from the customer and status is bot conversation, waiting for agent, or pending. |
Report metrics — speed (minutes)
Speed metrics use the ticket message timeline (embed conversation messages or email thread messages). Times are in minutes; default aggregation in the builder is median unless you choose sum or average.
| Metric | How it is calculated |
|---|---|
| First response time | Minutes from the first customer message to the first reply — human or bot, whichever comes first. |
| First human response time | Minutes from the first customer message to the first human agent message only. |
| Full resolution time | Minutes from ticket creation to solve timestamp (solved tickets in range only). |
| Customer wait time | For each customer message, minutes until the next human or bot reply; report aggregates those waits (median by default). Multiple waits per ticket can contribute multiple samples. |
Report metrics — quality & satisfaction
| Metric | How it is calculated |
|---|---|
| Automation resolution % | Among tickets solved in range: percentage with no human assignee at solve time (bot-only resolution). Each solved ticket contributes 100 or 0 before averaging. |
| First contact resolution % | Among tickets solved in range: percentage with zero reopens in the period. Each solved ticket contributes 100 or 0 before averaging. |
| Customer satisfaction (CSAT) | Average of csatScore on tickets when set (typically on solved tickets). No score means the ticket does not contribute. |
Group-by and filters
You can group or filter reports by:
- Time: hour of day (UTC), calendar day (UTC)
- People: assignee (agent email or Chatbot (AI))
- Ticket: channel (embed vs email), status, mass incident name
- Segmentation: custom field keys defined in Settings → CRM; SDK trait keys from identified embed users
Trait and custom-field filters help compare automation vs team impact by plan, region, or any trait you pass through the embed identify flow.
Export & saved reports
After you run a report, use Export CSV to download the table with metadata (date range, scope, truncation note). Saved reports store the definition JSON so you can rerun the same configuration later.
Tips for accurate reports
- Use human agents only scope for SLA and agent workload; use chatbot only for deflection and automation rate.
- Do not confuse tickets with human interaction (one per ticket) with human interactions (one per agent message).
- Large workspaces with more than 2,500 active tickets in a range should narrow the date window or filters, or expect truncated samples until historical rollups are available in a future release.
- Set CSAT on tickets (via your processes or integrations) before expecting meaningful satisfaction averages.