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:

ScopeIncludes
AllFull picture — bot and human activity.
Human agents onlyTickets where at least one human agent message exists on the thread. Bot-only message metrics are excluded.
Chatbot / automation onlyTickets 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.

CardCalculation
Open agent ticketsTickets in status Waiting for agent or Pending (human queue).
Active bot conversationsTickets currently in Bot conversation status.
Solved by chatbotTickets marked Solved or Closed in the selected time window with no human assignee (assignedToUserId is null).
Solved by agentsTickets 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

MetricHow it is calculated
Tickets createdOne per ticket whose created timestamp falls in the report date range (respects time filter mode).
Tickets solvedOne per ticket solved (or closed) in the range.
Ticket reopensCounts reopen events in range from analytics events when available; otherwise a heuristic if a ticket was solved and is open again.
Agent messages sentHuman agent messages with timestamp in range. Excluded when scope is chatbot-only.
Bot messages sentAssistant/bot messages in range. Excluded when scope is human-only.
Customer messagesInbound customer messages in range (embed user role or email inbound).
Tickets with human interactionOne 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 waitingTickets 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.

MetricHow it is calculated
First response timeMinutes from the first customer message to the first reply — human or bot, whichever comes first.
First human response timeMinutes from the first customer message to the first human agent message only.
Full resolution timeMinutes from ticket creation to solve timestamp (solved tickets in range only).
Customer wait timeFor 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

MetricHow 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.