Reev detects user frustration in real-time β rage clicks, broken links, dead images, form struggles β and asks them what went wrong, right then and there. You get their actual words, not another heatmap.
Your website's checkout page
Not working?
We noticed you clicked multiple times. What were you expecting to happen?
The button doesn't respond after I enter my card...
A contextual popover appears the moment frustration is detected
You know users bounce. You know they don't convert. But you don't know what frustrated them β because no one asks.
Three steps. No build tools. No npm install. Just a script tag.
Drop it before </body>. That's the entire integration.
<script
src="/tracker.js"
data-project-id="your-id"></script>The tracker runs silently, detecting four types of user frustration in real-time:
A non-intrusive popover anchored to the element asks what happened. Users respond because itβs relevant to what they just experienced.
User wrote:
"The coupon code field won't accept my discount code, it just clears every time."
Each detection runs automatically. No configuration needed. Everything works out of the box with sensible defaults.
Catches when a user frantically clicks the same button or link because nothing is happening. A clear sign of a broken or unresponsive element.
How it works
Watches buttons, links, and clickable elements. If the same one gets clicked 3+ times in rapid succession, Reev knows something is wrong.
Example
A user clicks your "Submit Order" button 5 times because the payment processor is hanging and nothing visible happens.
Automatically checks every link on your page as soon as it loads. Broken links get flagged before any user even clicks them.
How it works
Quietly verifies all your internal links in the background. If one leads to a 404 or error page, a warning badge appears right on the link.
Example
Your navigation has a link to "/pricing" that broke after a deploy. Users see a warning badge on the link before they even click it.
Detects images that fail to load β whether from missing files, server errors, or CDN outages. Users see an indicator and can report the issue.
How it works
Scans all images on the page and monitors for load failures. Broken images get an indicator badge so they don't go unnoticed.
Example
A product photo on your catalog page fails because the image CDN is down. Users see an indicator badge on the broken image.
Spots when a user keeps typing into a field, deleting everything, and starting over. A clear pattern of confusion or unclear validation.
How it works
Monitors form fields for the "type, delete, retype" cycle. When it happens repeatedly in a short time, Reev steps in to ask what's confusing.
Example
A user types their email, gets a vague validation error, clears the field, and retypes it differently β three times. The popover asks "What's confusing?"
The Reev tracker is running on this page. Interact with the elements below to trigger real detections.
Click this button rapidly 3+ times.
These images fail to load β look for the indicator badge.


Type something, select all + delete, repeat twice.
Reev doesn't just collect a message. It captures everything you need to understand and reproduce the issue.
"The submit button doesn't respond after I enter my card details. I clicked it like 5 times."
Attached Context
Screenshot captured
Console errors
POST /api/payments 500 (Internal Server Error) Uncaught TypeError: Cannot read properties of null
User breadcrumbs (last 5 actions)
click β input#card-number
click β input#expiry
click β input#cvv
click β button.btn-submit (x5 rage)
navigate β /checkout
No npm install. No build step. No framework lock-in. Just add a script tag and Reev starts working immediately.
<script
src="https://your-domain.com/tracker.js"
data-project-id="your-project-id"
data-api-url="https://your-domain.com"
<!-- Optional configuration -->
data-rage-click="true"
data-dead-link="true"
data-broken-image="true"
data-form-frustration="true"
data-popover-theme="dark"
></script>