Frustration signals
Some visitors do not bounce and do not convert. They get stuck. They click a button that does not respond, then click it again, harder, and leave. Clickport catches that moment. It flags the two kinds of clicking that mean a visitor hit a wall: rage clicks and dead clicks. Each has its own page too: Rage Clicks and Dead Clicks.
Rage clicks
A rage click is rapid repeated clicking on the same spot. It is the universal sign that something looks like it should work and does not. Clickport flags a rage click when a visitor lands three or more clicks on the same small area within one second.
It records the element they hammered and how many times they clicked it, nothing about the visitor.
Dead clicks
A dead click is a click on something that looks clickable but does nothing. A styled box that was never wired up, a disabled button that gives no feedback, an icon that ignores the tap. The visitor expected a response and got silence.
Clickport only counts a dead click when the element actually looks interactive (a link, a button, or anything with a pointer cursor) and nothing on the page responds to the click. Working links and form fields are never flagged, because they do exactly what a click should do.
Where they show up
Both signals appear inline on the individual session page lines as small badges: a red R for rage and an amber D for dead. Copy events sit alongside them under a purple C badge. Hover a badge to see the exact element and, for rage clicks, how many times they clicked.
The dashboard also rolls all of this up into a Signals view: a ranked breakdown, one row per signal category, with visitor and event counts. Expand a row to see the exact elements involved, or click it to cross-filter the whole dashboard to the visitors who hit that signal. It is no longer a flat list of sessions. See the Signals overview for that breakdown and how to read it.
Inside a session, the signals sit in the timeline next to pageviews, scrolls, and clicks, so you can see exactly when the visitor got stuck.
How detection works
Everything runs in the visitor's browser, in the tracker, and only the resulting signal is sent. No raw click stream leaves the page.
- Rage: three or more clicks within one second, landing inside a small radius of each other. One event is recorded per burst, so a single tantrum is one signal, not ten.
- Dead: the clicked element (or a close parent) looks interactive, and within about seven tenths of a second nothing on the page responds: no navigation, no change to the page, no scroll. If anything reacts, it is not a dead click.
- Capped per page: each signal is limited to a handful per page visit, so one frustrated visitor cannot flood your data.
What is stored
Frustration signals are deliberately thin. For each one Clickport keeps:
- A short element identifier (its tag, plus an id, a class or two, and a role when present).
- The element's visible label, when it has one, so a button reads as "Place order" rather than just a selector.
- For rage clicks, the number of clicks in the burst.
What is never stored: click coordinates, screen recordings, mouse paths, keystrokes, and the contents of any input field. Element ids that look like they could carry personal data are dropped, and form fields never contribute a label. There is nothing here that identifies a person.
Good to know
- Forward-only. Frustration signals exist for visits that happen after the feature is active on your site. Past sessions cannot be backfilled, because the raw clicks were never recorded.
- Single-page apps are covered. A frustrated tap is tied to the right route even after a client-side navigation.
- It does not use your pageview allowance. Rage and dead clicks are events, like outbound clicks and form submissions, and do not count toward your monthly pageview limit.