Live demo — no signup
This is a worked example over 9 sessions and 4,127events \u2014 the exact format GhostView prints for your own project. Judge it on whether the findings tell you something you'd have missed watching the clips yourself. That's the only claim we're making.
Sample dataset — representative example data in the product's real output format, not a capture of a live customer project.
A checkout flow generated with an AI app builder, instrumented with the GhostView embed and shown to 9 invited testers over 4 days.
9
Sessions
4,127
Events
3m 34s
Median session
2 of 9
Completed
Synthesis output
Each finding cites the sessions and the specific events behind it, so you can go watch the clip and disagree with it.
They did not leave immediately. Median dwell on /pricing was 41s with repeated hover cycles across the three plan cards — a comparison stall, not a bounce. Every one of them scrolled back up to the plan cards at least twice before leaving.
Evidence
Hover enter/exit pairs on .plan-card averaged 6.2 per session for the leavers vs 1.5 for completers.
Two testers clicked the disabled Continue button 4+ times in under 3 seconds. The blocking field is a required billing ZIP that sits above the fold but renders its validation message below the button, so the reason for the block was never on screen at the same time as the block.
Evidence
click events on button[disabled] — 4 in 2.4s (s_06), 7 in 3.1s (s_05).
Session 05 threw on the payment step and the app rendered an empty div rather than an error state. The tester stayed on the blank screen for 71 seconds, reloaded twice, and left. There is no error boundary on this route.
Evidence
console error captured at t+331s, followed by two navigation events to the same URL.
The two testers who reached /success dismissed the onboarding modal within 2 seconds and went straight to the editor. Every tester who actually read the tour abandoned later. The tour is not helping, and may be selecting for people who were going to bounce anyway.
Evidence
modal_dismiss at t+1.8s (s_02) and t+1.4s (s_08); no completer triggered a tour step past step 1.
4,127 raw events reduced in code to 9 session summaries, then 1 model call across all of them — why it stays cheap.
Where they went
The sessions behind it
| Session | Duration | Events | Last screen | Outcome |
|---|---|---|---|---|
| Session 01 | 1m 36s | 213 | /pricing | abandoned |
| Session 02 | 5m 41s | 702 | /success | completed |
| Session 03 | 3m 08s | 431 | /pricing | abandoned |
| Session 04 | 1m 17s | 154 | /pricing | abandoned |
| Session 05 | 6m 42s | 918 | /checkout | errored |
| Session 06 | 3m 34s | 486 | /checkout | abandoned |
| Session 07 | 2m 09s | 267 | /pricing | abandoned |
| Session 08 | 4m 58s | 611 | /success | completed |
| Session 09 | 2m 41s | 345 | /pricing | abandoned |
In your own account each row opens the full rrweb replay. This page is a static snapshot so it loads for everyone without an invite.
One script tag, then invite a handful of real users. You'll have your own version of this page in about a day of traffic.
Request early access→Free during early access · see pricing