Ciphera Help

Frustration Tracking

Detect rage clicks and dead clicks to find broken or confusing UI elements.

Frustration tracking is a separate opt-in script that captures two interaction signals: rage clicks and dead clicks. Both events appear in the Goals panel alongside your custom events.

Enable frustration tracking

Toggle frustration tracking on in your site settings (Dashboard → Settings → Tracking), or add the extension script manually:

<script defer src="https://js.ciphera.net/script.frustration.js"></script>

The frustration script must load after the core Pulse script. It polls for window.pulse.track for up to 5 seconds, so script order matters — place the frustration tag after the main script tag.

Rage clicks

A rage click is detected when the same element is clicked 3 or more times within 800 milliseconds.

Event name: rage_click

Properties:

PropertyDescription
selectorCSS selector identifying the clicked element
click_countNumber of clicks recorded in the burst
page_pathURL path where the event occurred
xHorizontal click position (px from left of viewport)
yVertical click position (px from top of viewport)

Each element is debounced — at most one rage_click event fires per element per 5 seconds. Clicks made while text is being selected are ignored.

To disable rage click detection, add data-no-rage to the frustration script tag.

Dead clicks

A dead click is detected when a visitor clicks an interactive element and the page does not respond within 1 second — no navigation, no DOM mutation, no form submission.

Interactive elements tracked: <a>, <button>, <input>, <select>, <textarea>, and any element with role="button".

Event name: dead_click

Properties:

PropertyDescription
selectorCSS selector identifying the clicked element
page_pathURL path where the event occurred
xHorizontal click position (px from left of viewport)
yVertical click position (px from top of viewport)

Each element is debounced — at most one dead_click event fires per element per 10 seconds.

To disable dead click detection, add data-no-dead to the frustration script tag.

Partial opt-out

<!-- Rage clicks only -->
<script defer data-no-dead src="https://js.ciphera.net/script.frustration.js"></script>

<!-- Dead clicks only -->
<script defer data-no-rage src="https://js.ciphera.net/script.frustration.js"></script>

Frustration events count toward your site's event rate limits alongside custom events. On high-traffic pages with many interactive elements, consider using data-no-dead to reduce volume if needed.

On this page