Clicks
Rage, dead and error clicks from real visits, by CSS selector and route, linked to the issues and traces they caused. No session replay.
Clicks shows where people get stuck: the buttons they hammer, the links that do nothing, and the clicks that end in an exception. It reads the signals the browser SDK's clickSignals() integration sends. Nothing records the session, so there is no replay to store and no page content leaves the browser.
The page lives at /o/:org/projects/:project/clicks. The environment, service and time range in the top bar apply to everything on it.
What counts
| Kind | What the SDK saw |
|---|---|
| Rage | 3 or more clicks on the same element within 1 second, each within 30 px of the first |
| Dead | A click on a link or button with no DOM change, request or navigation within 1 second |
| Error | An exception within 1 second of the click |
One burst of clicks can be more than one kind. Rage clicks on a button that also throws count once as rage and once as error.
What the page shows
- One tile per kind, plus their total, with a sparkline.
- A chart of the signals per bucket, stacked by kind.
- Selectors. The top 100 CSS selectors with the route template they were clicked on, and their rage, dead and error counts. Kind keeps the selectors that had that kind, most first. Search narrows the list to routes that contain the text.
- Errors. Up to 3 issues the selector's error clicks raised, most frequent first. The SDK tags each of those exceptions with
click.selectorandclick.route, so the issue page shows the click too. - Trace. One trace a signal on that selector started, when the click made a request.
Privacy
clickSignals() is off until you add it to the SDK's integrations. The selector is built from the element's tag, a stable id, up to 2 stable class names and a test id attribute such as data-testid. Text, input values, links and every other attribute stay in the browser, and ids or classes that look generated or hold long digit runs are dropped. Ids, classes and test ids you build from user data, such as id="profile-jane", are not caught, so keep user data out of them on clickable elements. The route is redacted like page URLs: an email, token or JWT in the path reads REDACTED. A page view sends at most 20 signals. Signals go to your project's ingest like any other log record.
How the numbers are kept
Each browser.click record is rolled up per minute, route template, selector, kind and service as it arrives, and each tagged exception per minute, selector and issue, so the page never scans logs or occurrences. The click rollup follows your logs retention and the error links your errors retention.
In your AI assistant
The MCP server's list_click_signals tool returns the same counts and selectors, with their linked issues and trace.