Build your own experience analytics

Experience analytics that shows why the funnel moved

Funnels and heatmaps find the pattern. rrweb keeps every metric connected to the session that produced it, so the analytics product you build can open the replay behind any number, on an event format you own rather than rent from a closed platform.

journey · last 7 days

Trial activation

34.1%
1. /pricing2,418
2. /signup1,306
3. /workspace824

482 dropped

Watch sessions that left at signup

Public rrweb usage in product analytics tools.

Find the sessions where the interface fought back

A rage click or dead click is a frustration signal that needs validation. Group the signal by page or release, then open a sample of sessions to check the interface state around it.

  • Turn repeated clicks, ignored elements, and rapid backtracking into queryable friction signals.
  • See whether one broken state or one confusing label explains the cluster.
  • Compare the affected sessions across route, browser, release, or customer segment.
friction map · /checkout
63 sessions with friction+18% this week
41 rage clicks22 dead clicks

Watch the sessions behind a drop-off

Funnel analysis tells you which step lost people. Session segmentation narrows the group by browser, release, account, or behavior before a replay shows what those users encountered.

  • Keep session ids on every computed step so each exit remains inspectable.
  • Start playback shortly before the funnel event and skip unrelated browsing.
  • Sample across the whole exit group, then save a reproducible segment for the product team.
activation funnel · 14 days
Viewed pricing8,204 · 100%
Started trial3,119 · 38.0%
5,085 exits
Created project2,405 · 77.1%
Sent first event1,694 · 70.4%

Define the behavior your product cares about

The rrweb event stream carries millisecond timestamps and session context. Add custom events for the actions specific to your product, then compute conversion and retention from a format you control. Use embedded replay to keep the evidence inside your analytics interface.

  • Mark activation, checkout, feature adoption, or any domain event inside the recording.
  • Join browser behavior to account, experiment, and release metadata in your own data model.
  • Recompute a metric when its definition changes because the source event stream stays available.

rrweb event

{
"type": "click"
"target": "#create-project"
"timestamp": "1712849120441"
"sessionId": "ses_8f21"
}

derived signal

62.8%

created a first project

37.2% exitedreplay ↗

One event stream. The metric and its evidence.

rrweb records the raw browser session. Your analytics layer derives the aggregate signals and keeps each result connected to the sessions it came from. Your analysts move from a number to the relevant replay without a second capture system.

01 / 03record()

Record once

Capture DOM state, mutations, inputs, and custom events in one ordered stream.

02 / 03funnel.query()

Compute behavior

Derive funnels, paths, cohorts, and friction signals from that same source.

03 / 03replay.open()

Open the evidence

Every count keeps its session id, so an analyst can watch the sessions behind it.

Build on rrweb your way

The same open recorder works with your infrastructure or ours.

Own the full pipeline

Run the MIT-licensed recorder and replayer with your own ingest, storage, analytics, and access model. The recordings stay inside your infrastructure.

Use rrweb Cloud for replay

Send the same event stream to managed ingest, storage, and replay while your product owns the analytics experience. Start on the free tier without a credit card.

Frequently asked questions

What is experience analytics?

Experience analytics connects aggregate behavior, such as funnels, paths, and friction signals, to the browser sessions behind it. The metric shows where behavior changed. The recording shows what people saw and did at that point.

How is session replay different from product analytics?

Product analytics counts defined events across many users. Session replay reconstructs an individual browser session from DOM changes and interactions. Used together, analytics finds the pattern and replay explains the sessions that produced it.

Do frustration signals require extra instrumentation?

Clicks, pointer movement, scrolling, and page mutations already exist in the rrweb event stream, so many frustration signals can be computed without new tracking calls. Product-specific actions still need custom events. Treat every signal as a filter to investigate because repeated clicks and backtracking can have legitimate causes.

How is open experience analytics different from a closed platform?

An open rrweb implementation keeps the recording format portable and lets you choose the analytics model, storage, and embedded interface. A packaged platform may provide more analysis features out of the box. The trade depends on how much product control and infrastructure ownership you need.

How do I keep analytics recordings private?

Define the purpose and consent or lawful basis for recording, then mask sensitive text and inputs in the browser before an event is sent. Set sampling, retention, deletion, and access rules around the recordings. Cross-origin payment iframes stay blank by browser design.

Why rrweb over a packaged experience-analytics SaaS?

A closed platform gives you funnels and replay inside its own app, priced per seat or per session, with sessions in a format you cannot export cleanly. rrweb gives you the open event format and replayer, so you build the analytics product yourself, choose the storage and model, and recompute a metric when its definition changes. Choose the platform for out-of-the-box analysis; choose rrweb when you need the format portable and the interface yours.