What Replayfy does
It records the DOM, not the screen. That means a replay is a real, scrollable page rather than a video — small enough to store, sharp at any zoom, and searchable by the URL it happened on.
Session replay
Mouse movement, clicks, scrolling, typing (masked), page changes and single-page-app navigation, replayed at the recorded viewport size with a scrubber. Sessions are stitched from chunks that arrive during the visit, not at the end — so a visitor who closes the tab still leaves a replay.
Rage clicks and dead clicks
A rage click is three clicks inside 30 pixels and one second. A dead click is a click that produced no DOM change, no scroll and no navigation — the button that looks like a button and isn't. Both are counted per session and both are filters on the session list.
JavaScript error timeline
Errors are captured with their message and the moment they fired, and listed under the player. Click one and the replay seeks to that second. The error count and the error messages are reconciled — if the chunk carrying a message never arrived, we say so rather than showing you a confident "no errors".
Honest incomplete recordings
Recordings arrive in chunks over the network, and sometimes one doesn't make it. When that happens the player says which chunks are missing instead of stitching what's left and presenting it as the whole session.
Share links that expire
Send one recording to a developer or a client without giving them an account. Links are single-recording, expire (7 days by default), are revocable, and every open is written to your audit log. We store only a hash of the link.
Per-site access for staff
Invite teammates as Admin, Member or Viewer, and tick exactly which sites each of them can open. A contractor working on one storefront sees that storefront. Unlimited teammates on every paid plan.
Audit log
Who watched which recording, who shared one, who deleted one, who changed a role. Views are rolled up to one entry per person per recording per day so the log stays readable; everything else is logged every time. Kept for two years — longer than any recording it describes.
Delete anything, immediately
One recording, or every recording belonging to one visitor. Removed from the database and from object storage there and then, not queued for a nightly job. This is what a data-subject erasure request actually needs.
What it doesn't do yet
Said plainly, because you will find out in week two anyway.
- No heatmaps. Aggregated click and scroll maps are the one thing every competitor in this category ships and we do not. The capture design is finished; the feature is not built. If heatmaps are the reason you're shopping, we are not your tool yet.
- No funnels. You can filter sessions by URL, errors, frustration, device and length, but there is no step-by-step conversion report.
- No checkout replay on Shopify. Recording stops the moment a visitor reaches a checkout URL. That is deliberate today; a Shopify app using the sanctioned pixel path is the next phase.
- Cross-origin iframes, canvas and WebGL don't replay. That is a limit of DOM recording itself, not of our build. A Stripe iframe or an embedded video renders blank in the replay.