Skip to content

Analytics

Experimental

Analytics features are experimental and may change in future releases.

The Analytics section provides performance and usage insights for your project's conversations, organised into three tabs: Latency Analysis, Token Usage, and Explorer.

Latency Analysis

Measures how long different parts of a conversation turn take to process.

Filters

Use the filter bar at the top to scope the data:

FilterDescription
Date rangeLimit results to a specific time window. Leave empty for all time.
StageFilter data to turns that went through a specific stage.
SourceFilter by channel — Text, Voice, or all.
IntervalAggregation period for the trend chart — Hourly, Daily, or Weekly.

Click Apply to load data with the selected filters.

Summary Cards

CardDescription
Total TurnsTotal number of turns in the selected period.
Avg Turn DurationMean end-to-end turn latency.
P95 Turn Duration95th percentile of turn latency.
Avg Time to First TokenMean time from LLM request to first token received.

Latency Statistics Table

Breaks down latency by pipeline stage. Each row shows Count, Avg, Median, P95, Min, and Max:

MetricDescription
Total Turn DurationEnd-to-end wall-clock time for the full turn.
Time to First Token (from LLM start)Latency from when the LLM request was sent to the first token.
Time to First Token (from turn start)Total latency from turn start to first LLM token.
LLM DurationTotal time spent inside the language model call.
Processing (Classification + Transforms)Time spent on classifiers and context transformers.
ActionsTime spent executing actions triggered by the turn.
ModerationTime taken by moderation checks.
ASR (voice only)Automatic speech recognition duration.
TTS (voice only)Text-to-speech synthesis duration.
Time to First Audio (voice only)Time from turn start until the first audio chunk was ready.

Voice-only rows are dimmed when the Source filter is set to Text.

Percentile Distribution Table

A fine-grained view of latency distribution for five key metrics. Columns show P50, P75, P90, P95, and P99 for:

  • Total Turn Duration
  • Time to First Token (from LLM start)
  • Time to First Token (from turn start)
  • LLM Duration
  • Time to First Audio (voice only)

Latency Trend Chart

Shows how average turn latency and time-to-first-token have changed over the selected period. The Interval filter controls the x-axis granularity.


Token Usage

Tracks LLM token consumption across all events in your project.

Filters

FilterDescription
Date rangeLimit results to a specific time window.
StageFilter events to a specific stage.
SourceFilter by channel — Text, Voice, or all.
IntervalTrend chart granularity — Hourly, Daily, or Weekly.

Click Apply to load data.

Summary Cards

CardDescription
Total EventsNumber of LLM call events in the selected period.
Prompt TokensTotal tokens sent to the model (input).
Completion TokensTotal tokens received from the model (output).
Total TokensCombined prompt + completion tokens.

Usage by Event Type Table

Breaks down token consumption by LLM event type (e.g. agent completion, classification). Columns:

ColumnDescription
Event TypeThe type of LLM call.
EventsNumber of events of this type.
Prompt TokensTotal input tokens.
Completion TokensTotal output tokens.
Total TokensCombined total.
Avg / EventAverage tokens per event.
In:Out RatioPrompt-to-completion token ratio (e.g. 3.50:1).

Token Usage Trend Chart

Shows how token consumption has changed over time at the selected interval granularity.


Explorer

A flexible, ad-hoc query builder that lets you slice project data across multiple dimensions and metrics. Use it to answer questions that the pre-built tabs don't cover.

Saved Queries

The toolbar at the top of the Explorer panel lets you manage named queries:

  • Click the Query picker button (left side) to open a dropdown of all saved queries.
  • Select a query from the list to load it — the builder and all filters will be restored.
  • Select New query in the dropdown to start with a blank slate.
  • The Refresh list option at the bottom of the dropdown re-fetches the list from the server.

A filled bookmark icon and the query name appear in the picker button when a saved query is active.

Building a Query

The query builder has four configuration rows:

Row 1 — Data source, interval and time range

ControlDescription
SourceThe data source to query (e.g. Turns, LLM Events). Changing source resets dimensions, metrics and filters.
IntervalTime bucketing — None (aggregate), Hourly, Daily, Weekly, or Monthly. Choose None to return a single aggregated row.
Time rangeA button showing the current time range. Click to open the time range picker.

The time range picker offers three modes:

  • Relative — e.g. Last 7 days. Choose from quick presets (1h, 24h, 7d, 30d, 3mo) or enter a custom amount and unit.
  • Absolute — Specify exact From and To datetime values. Switching from Relative to Absolute pre-fills the inputs using the current relative window.
  • All time — No time filter; all available data is included.

Row 2 — Group By

Add up to five dimensions to group results by (e.g. stage, source, model). Click + Add to open the dimension picker and select a field. Each added tag can be removed with ×. The available dimensions depend on the selected source.

Row 2b — Normalize By

An optional secondary dimension used for two-phase aggregation. When set, metrics are first summed within each (Group By + Normalize By) group, then the selected aggregation function is applied across those sums.

Example: with Group By = Stage, Normalize By = Conversation, and metric AVG: Prompt Tokens, the query computes the total prompt tokens per conversation per stage first, then averages those per-conversation totals — giving the average total prompt tokens per conversation, broken down by stage.

Note: The bare Count metric is not compatible with Normalize By. Use a named metric with an aggregation function instead.

Row 3 — Metrics

Select one or more metric + aggregation combinations. Click + Add metric to open the picker:

  • Choose a metric field from the dropdown.
  • Choose an aggregation function. Available functions depend on the metric type:
    • ms metrics: avg, p50, p95, p99, min, max
    • tokens metrics: sum, avg, p95
    • Other metrics: count

Each metric tag shows as AGG: Label (e.g. AVG: LLM Duration). A Count shortcut button adds a simple row count metric. Tags can be removed with ×.

Row 4 — Filters

Narrow results to specific dimension values. Click + Add filter to open the filter picker, select a dimension and a value, then confirm. Active filters appear as Dimension = Value tags. Each can be removed with ×.

Running a Query

Click the Run button (▶) to execute the current query. A spinner appears while the query is in progress.

Results Table

Flat mode

When only a single dimension (or none) is selected, results appear in a flat table. Each row combines:

  • A Time column if an interval was selected.
  • One column per group-by dimension.
  • One column per metric.

Time values are formatted for readability (e.g. Jan 3). Duration (ms) values are shown in human-readable form — milliseconds for short values, m s or h m s for longer durations.

A Results heading above the table shows the row count. If the number of rows equals the query limit, a warning indicates that results were truncated.

Drilldown mode

When two or more levels are selected (interval + at least one dimension, or two or more dimensions), results switch to a hierarchical drilldown view. Top-level group rows show a rollup and can be expanded with ▶ to reveal sub-groups and individual rows.

Saving Queries

Once you have built a query you want to reuse, save it using the button on the right side of the toolbar:

When no query is loaded (or you are viewing a shared query you don't own):

  • A single Save as… button appears. Click it to open the save popover.
  • Enter a name (required) and optionally tick Share with all project operators to make the query visible to all operators on the project.
  • Click Save to confirm.

When you own the active saved query:

  • A split button appears: Save (left) overwrites the existing query with the current builder state.
  • The chevron (right) opens a menu with additional options:
    • Save as new copy… — save as a new query without affecting the original.
    • Rename… — change the name of the active query.
    • Share with project / Unshare — toggle visibility for all project operators.
    • Delete this query — permanently delete the saved query (requires confirmation).

Permissions

A saved query can only be updated, renamed, shared, or deleted by:

  • The operator who created it, or
  • A super_admin.

Released under the Apache-2.0 License.