Analytics
Review the current dashboard and its data boundaries
Analytics shows a fixed 7, 30, or 90-day view of support activity. The current dashboard keeps its summary cards, charts, and CSAT on the selected workspace. It does not combine tenant-wide cards with workspace-scoped charts.
Open Analytics
In the dashboard, go to Insights → Analytics, or open /analytics directly.
The page loads when opened, when you change the period, and when you select
Retry after an error. It does not poll automatically.
All dashboard reads require analytics.view and membership in the selected
workspace. Each endpoint rechecks the exact Clerk organization-to-tenant binding, current analytics.view authority,
workspace ownership, and membership inside the same database transaction used
for its analytics data.
Current dashboard
The selected-workspace summary cards show:
- tickets created in the selected rolling period
- the current solved-or-closed percentage for that created-ticket cohort
- the percentage with an accepted automatic resolution
- the percentage currently marked escalated
- average first response time
- input and output tokens attributed to the cohort
- current-price AI cost estimates and estimated cost per ticket
The selected-workspace charts show:
- ticket volume by creation date
- category counts from each ticket's latest classification
- sentiment counts from each ticket's latest classification
- rated CSAT responses submitted during the selected period
Tickets without a classification are absent from category and sentiment charts. CSAT is omitted when there are no rated responses.
Coverage and freshness
Every successful summary, chart, and CSAT response identifies the selected
workspace and includes from, to, and asOf. Each endpoint takes its asOf
from PostgreSQL inside a repeatable-read snapshot, then uses that same boundary
for its component reads. Separate endpoints use independent transactions and
can therefore have slightly different asOf values.
The browser admits each analytics section only when its response succeeds, matches the expected shape, reports live workspace scope, and names the exact selected workspace. Snapshot or other non-live section payloads are quarantined independently while healthy sections and ticket data remain visible. Each quarantined section has its own scoped retry that refetches only that section.
For generic metric requests, a to value later than the database asOf is
clamped to asOf. A range whose from is later than asOf returns a stable
400 response before metric data is read. Every successful metric response therefore satisfies from <= to <= asOf.
An explicit non-empty workspaceId must be a UUID and takes precedence over the
workspace cookie. An absent or empty parameter falls back to a valid cookie,
then to the server's default-workspace resolution. A malformed non-empty
explicit value returns 400 after authentication and the outer analytics.view
permission check, but before route-owned tenant, workspace, or metric reads.
A malformed raw cookie is ignored by the cookie readers instead of being used as a workspace ID. The server treats that value as absent and can use the default workspace fallback after the outer permission check. In the browser, Analytics withholds its analytics requests until the workspace switcher replaces or clears the invalid selection. The malformed value is never promoted into a route-owned analytics query.
Cost boundary
Dashboard cost values are estimates from stored agent-run and classification token counts, recalculated with the current in-code model price table. They are not provider invoices or historical-price accounting, and they exclude cache, embedding, browser-action, and other provider-billing dimensions.
Current limits
The overview has no Today or custom range, dashboard filters, team leaderboard, NPS, accuracy/confidence panel, predictions, anomaly alerts, threshold alerts, CSV export, dashboard sharing, ticket drill-through, or layout editor.
Client Health Scores remain suspended. See Client Health Scores for the exact read and refresh boundary. Monthly reporting is a separate Settings surface with a narrower source-only boundary; see Reports.