Patterns, not people

Web analytics that tells your coding agent what to fix next.

Trace watches how people use your site in aggregate, turns friction into specific insights tied to your KPIs, hands each one to your agent as a ready prompt, and then measures whether the change worked.

$ trace insights --site yourproject

#2  Fix GET /api/reviews/:id → 500 on /products/:id
    31.6% of product views · Sessions with errors
#6  Fix the unresponsive "Pay now" on /checkout
    18.2% rage-click it · Checkout conversion

$ trace prompt 6 | claude

Implementing: show progress on Pay now, disable double submit…

$ trace status 6 released

Checkout conversion 36% → 56% improved, p < 0.01

One loop, from behaviour to a shipped fix

  1. 01 Collect

    One script tag

    Clicks, rage and dead clicks, errors, scroll, forms. Single-page apps and full reloads.
  2. 02 Measure

    KPIs in your repo

    trace.json lives next to the code that sends the events, checked in CI.
  3. 03 Analyse

    Insights, not charts

    An analyst agent reads the aggregate digest and proposes changes with evidence.
  4. 04 Ship

    Copy as a prompt

    Each insight is a complete task for Claude Code, Cursor or any agent, via MCP too.
  5. 05 Evaluate

    Did it work?

    Before and after, with a significance test. Improved, regressed or no change.
Worry one: privacy

I'm not interested in your users. Only in patterns.

No session replay, no screenshots of your pages, no typed text. Trace sees that 18% of visitors tapped a product image and nothing happened, never who they were or what they typed.

How privacy works, in detail

Never collected

Input values, page titles, query strings, page content, recordings.

Scrubbed twice

Emails, cards, IBANs, tokens and phone numbers removed in the browser, then again on the server.

Your own rules

Admins mask elements, ignore pages and drop fields per website.

Tested with planted secrets

A leak page full of fake cards and passwords stores none of them.
Worry two: your website

Your visitors will never notice it.

The collector only takes notes while the page is busy, and does its work when the browser is idle. If anything inside it ever fails, the failure stays inside it.

How the collector stays out of the way
on the wire, compressed and cached
6.5 KB
of work per click
~3 µs
layout reads on the hot path
0

Built for teams that ship with agents

KPIs as code

Define goals and events in trace.json, validate with trace check, publish with trace push. The dashboard only shows results.
"checkout_conversion": {
  "from": { "pageview": "/checkout" },
  "to": { "pageview": "/checkout/success" },
  "goal": "increase", "target": "55%"
}

An MCP server, built in

Your agent reads KPIs, picks an insight, implements it and marks it released. Trace measures the impact. Aggregates only, scoped to one website.
claude mcp add --transport http trace \
  https://app.tracetells.com/mcp

Errors you would otherwise miss

Exceptions, unhandled rejections, framework-caught console errors, failed requests and missing files, grouped into one insight per cause.
  • GET /api/reviews/:id → 500226 sessions
  • TypeError on /pricing107 sessions
  • Rage clicks on Pay now60 sessions

Works on any site

Multi-page sites, single-page apps (History and Navigation API, hash routers), tag managers and bundlers. Dynamic URLs group themselves into routes like /products/:id.

For one person or a company

Several websites per account, owner, admin and user roles, authenticator-app two-step that admins can require, and personal API tokens for every agent.

Open source at the core.

Run the community edition yourself with no limits, or let me host it for you. Same product either way.