Yavio

Metrics

How KPIs are computed from raw events at query time

All metrics in Yavio are derived at query time from the raw events stored in ClickHouse. Nothing in this page represents a separately stored value — each metric is a query over the events table.

Overview KPIs

The dashboard overview shows these high-level metrics:

MetricHow It's Computed
Total invocationsCount of all tool_call events
Unique sessionsCount of distinct session_id values, without per_request sessions (see Sessions); the card then says how many calls came from clients without a session key
Error rateRatio of failed tool_call events to total tool_call events
Avg latencyAverage latency_ms across all tool_call events
Invocations over timetool_call events grouped by time bucket (line chart)
Platform breakdowntool_call events grouped by platform (pie chart)
Locationstool_call events grouped by country_code, and within a country by region (table). Users are counted with the same key as the Users page, per country and per region, so a person seen in two regions is one user of the country. A call without a location is listed as Unknown: in practice only ChatGPT sends one, and only to apps that capture tool arguments; the card shows the share of calls with a location
Top toolstool_call events grouped by event_name, ordered by count
Total conversionsCount of all conversion events
Total revenueSum of conversion_value across all conversion events

Business KPIs

MetricHow It's Computed
Session-to-conversion rateSessions with at least one conversion / total sessions
Widget engagement rateSessions with any widget_click or widget_form_field / sessions with widget_render

Tool Explorer Metrics

Per-tool deep-dive analytics:

MetricDescription
Per-tool invocation countHow often each tool is called
Latency distributionHistogram of execution times for a selected tool
Error rate over timeError ratio per time bucket for a selected tool
Error category breakdownDistribution of error types (auth, validation, timeout, etc.)
Parameter fill ratesHow often each parameter key appears in tool calls
Top parameter valuesMost frequent values per input key
Common parameter combinationsFrequent patterns in input_keys
Zero-result ratePercentage of tool calls that returned empty results
Tool discovery-to-invocation ratioHow often a discovered tool is actually called

Funnel Metrics (Coming Soon)

Funnels follow a conversation's step events in the order they happened. One conversation (session) is one attempt, however many server instances served it:

MetricDescription
Step progressionA conversation's steps, numbered by time; step_sequence only breaks a tie within one millisecond. Steps up to 30 days before the selected range count for the numbering; a conversation that began earlier is numbered from its first step within those 30 days
Drop-off ratesPercentage of conversations that don't progress from step N to step N+1
Example tracesFull event timeline for individual traces

Timing Metrics

MetricDescription
Time-to-first-interaction (TTFI)Time from widget_render to first widget_click
Time-to-first-tool-callTime from session start to first tool invocation
Latency percentilesp50, p95, and p99 latency across tool calls

Sessions

A session is the set of events sharing one session_id. Sessions are computed from the raw events at query time. Nothing is materialized, and there is no "session close" event. The dashboard counts distinct sessions. Per-session figures like duration or tool count are an aggregation over events grouped by session_id; you can run one yourself through the analytics MCP server's run_query.

A session whose session_source is per_request is not counted — not in the Sessions KPI, not in a user's session count, not in the anonymous statistics. It comes from an HTTP call that carries no session key, on any host (SDK 0.5.4 and later). Since SDK 0.5.5 every such call is a "session" of its own; on 0.5.4 a server that reuses one stateless transport put all its key-less callers into one. Its widget events carry the label too (the widget stamps its server session's source). Rows from SDKs before 0.5.4 — server or widget — have no session_source and count as before. To group such calls into conversations, set sessionKey; paths and funnels need it too, since they work per session.

Users

Users are counted with one key per person:

  • the user_id from .identify() on the event itself;
  • otherwise the user of the first .identify() in the same session, so the session's events before the call, and those of other server instances that served the conversation, count for that user;
  • otherwise the user_id that the same subject_id was identified with, so the person's other conversations count for the right user;
  • otherwise the subject_id itself.

A session is never counted as a user.

MetricDescription
Active users (DAU / WAU / MAU)Distinct users in the day, and in the 7 and 30 days up to it
New vs returningNew: the user's first event in the data Yavio holds falls in the bucket
Retention cohortsUsers by the period they were first seen, and how many came back in later periods

"First seen" means within the raw events still stored: 13 months, or the project's shorter retention (Data retention). A user last active 14 months ago counts as new.

On this page