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:
| Property | Description |
|---|---|
selector | CSS selector identifying the clicked element |
click_count | Number of clicks recorded in the burst |
page_path | URL path where the event occurred |
x | Horizontal click position (px from left of viewport) |
y | Vertical 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:
| Property | Description |
|---|---|
selector | CSS selector identifying the clicked element |
page_path | URL path where the event occurred |
x | Horizontal click position (px from left of viewport) |
y | Vertical 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.