Skip to content
Support System

Product

Metrics and KPI Framework

Proposed metrics and an explicit instrumentation-gap inventory.

Source: support-system: proposed metrics checked against internal/modules/analytics and the ticket model

Support System: Metrics and KPI Framework

A proposal. There are no users, so no metric here has a value, a target, or a baseline. The point of the document is to say what should be measured, why, and, for each metric, whether the system can already produce it. Anything marked "Not instrumented" cannot be reported today.


North Star

Tickets resolved within SLA that the customer did not have to reopen or repeat.

This combines three things the product is designed around: the SLA clock is fair, a solved ticket stays solved, and a customer does not explain twice. It is a proposal, and it is not computed anywhere today. Its parts are listed below.

How to read the status column

StatusMeaning
InstrumentedThe analytics module returns it today
Data existsThe ticket data holds what is needed, but no report computes it
Not instrumentedThe data is not captured

Quality of service

MetricWhy it mattersStatus
First response time, average and medianThe first thing a customer noticesInstrumented
Resolution time, average and medianHow long a problem lastsInstrumented
Resolution SLA breachesMissed commitmentsInstrumented
First-response SLA breachesMissed commitmentsData exists (breach timestamp stored per ticket)
SLA warnings acted onWhether warnings change outcomesData exists
SLA breach rate by queue and priorityWhere the problem isData exists (the breakdown gives volume and median first response by queue and priority, not breaches)
One-touch resolution rateEfficiency and customer effortInstrumented
Customer satisfaction, average and share positiveThe customer's verdictInstrumented
CSAT response rateWhether the satisfaction score can be trustedInstrumented

Ticket integrity

MetricWhy it mattersStatus
Reopen rateWhether solved means solvedData exists (reopen count stored per ticket)
Follow-up ticket rateCustomers who write after closureData exists (follow-up links stored)
Time spent in pendingWhether pending is used honestlyData exists (pause timestamp stored; no history of durations)
Time spent on holdThe same, for third partiesData exists
Auto-closed share of solved ticketsWhether agents or the timer close ticketsData exists (close reason recorded on the event)

Time in pending is the metric the SLA design most needs. The rule that pauses the clock is fair, and it also lets an agent stop a clock. The only counterweight is a metric that makes it visible. At present only the current pause timestamp is stored, so durations across a ticket's life need the event history.

Routing quality

MetricWhy it mattersStatus
Time in queue before assignmentCustomer wait that no agent ownsData exists (queued and assigned timestamps)
Tickets queued, by reasonWhich constraint is binding: staffing, skills, capacity, or shiftData exists (reason stored); a live count appears on the wallboard
Sticky assignments, share of eligible ticketsWhether continuity worksData exists (reason stored)
Sticky skipped, by reasonWhy continuity failedData exists
Rebalanced tickets per runWhether load is unevenData exists (reason stored)
Load per agent against capacityFairnessInstrumented (agent table)
Backlog and its ageWork accumulatingInstrumented

Operations and platform

MetricWhy it mattersStatus
Volume, solved count, and median first response by channel, priority, type, category, or queueWhere customers come from and where the pressure isInstrumented (breakdown)
Webhook delivery success and retry rateIntegration healthData exists (delivery log)
Bot containment, share of bot conversations that end without a handoffWhether bots helpNot instrumented
Bot handoff rate by flowWhere flows failNot instrumented
API error rate and latencyPlatform healthNot instrumented

Adoption

MetricWhy it mattersStatus
Active agents per dayWhether people use itNot instrumented
Settings changes per workspaceWhether supervisors can configure it without helpData exists (audit log)

Guardrail metrics

Metrics that stop a target from being gamed.

If you pushWatch
First response time downCSAT, and reopen rate (fast but empty replies)
Resolution time downReopen rate, follow-up rate
SLA breaches downTime in pending (clocks stopped rather than met)
One-touch resolution upCSAT
Even load across agentsSticky share and CSAT (continuity traded away)

What to build first

  1. Reopen rate and follow-up rate, which need only a query.
  2. Time in pending and on hold, built from the event history.
  3. SLA performance by queue and priority.
  4. Bot containment and handoff.
  5. Adoption and API health, which only matter once the system is hosted.

Limitations

  • No value, target, or baseline exists for any metric.
  • "Instrumented" was checked against the fields the analytics module returns. It does not mean the figure has been validated.
  • "Data exists" was inferred from the ticket model and was not confirmed with a query.
  • The North Star is a proposal and has not been computed.