Docs·Feature guides
Session replay
Session replay records how visitors use your site, so you can watch a visit with its page views, events, clicks and typing listed beside the recording. It is on the Growth plan. Replays come from the same visits as every report, so you find them the same way: by date range, by filter, or from a session or a profile.
A replay is not a video. The recorder captures the page and each change to it, and the player rebuilds the page from that, at the size of the visitor's window. That is why page text in a replay is sharp, and why what was masked was never sent at all.

Turning it on
Session replay is off until an admin turns it on, for each audience:
- Open Settings → Tracking script.
- Under Session replay, switch on Record sessions.
The app confirms with "Session replay on — recording starts within a minute." Nothing changes on your site: the tracking script picks the setting up by itself, and loads the recorder, a second file of about 24 KB, only for the visits it records. Switching it off stops new recordings. Replays already recorded stay until they expire.
On Free, the section says "Session replay is on the Growth plan." and shows Upgrade plan in place of the switch.
Who is recorded
With replay on, every visit is recorded, up to your plan's monthly replays, unless:
- the visitor is not tracked with cookies. Cookieless visitors are never recorded, and an audience with Cookieless tracking on records nothing. See Cookieless tracking.
- their browser sends Global Privacy Control.
- the visit is excluded under Excluded traffic, or dropped as a bot. See Excluded traffic below.
- the visit lasts under 5 seconds. Nothing is sent before then.
Consent
In the EU and the UK, regulators treat session replay as needing the visitor's consent, with or
without cookies. Because only visitors tracked with cookies are recorded, the setup that holds cookies
back covers replay too: start the script with cookieless: true, and call
Spreelytics.allowCookies() once the visitor agrees. Recording starts from the next page they open.
Cookieless tracking shows the code.
Recording only some visits
To record only signed-in users, or to stop recording on part of your site, set
session_replay: { manual_start: true } in Spreelytics.init(), call Spreelytics.startReplay() when
recording should begin, and Spreelytics.stopReplay() to stop. Each call lasts for the rest of the
visit. The JavaScript SDK page has the details.
What is masked
Replays show your pages as visitors saw them, page text included, except:
- Everything typed into a form field is masked, and shows as asterisks. Password fields are always masked.
- Email addresses are masked wherever they appear on the page.
- Card fields from Stripe and Braintree are left out. They sit in frames from another site, and those are never recorded.
<canvas>drawings are not recorded.
Two attributes cover the rest, on any element of your page:
| Attribute | What it does |
|---|---|
data-spree-mask | Masks the text inside the element. On <body>, it masks the text of every page. |
data-spree-block | Leaves the element out of the recording. The replay shows an empty box the same size. |
<p data-spree-mask>Account balance: $1,240.00</p>
<img src="/uploads/avatar.jpg" data-spree-block />
Images show in replays, so add data-spree-block to pictures your visitors upload, such as avatars.
To change masking in code, for example to mask by CSS selector or to stop masking form fields, set
session_replay in Spreelytics.init() (JavaScript SDK).
The Replays page
Replays, under Behavior in the sidebar, lists the recorded visits that started in the date range, newest first. It has the date range and Filter, like every report, and two narrowings of its own:
- Search replays finds visits by their entry page, the site's hostname, the visitor's email address or the visitor ID, as on Sessions.
- The length menu: Any length, 10 s or more, 30 s or more, 1 min or more or 5 min or more. It counts the recording's length, not the session's.

Every filter applies, so you can list the replays of the visits from one campaign, of one segment, or of the people who completed a goal. The list keeps 50 replays a page.
| Column | What it shows |
|---|---|
| Play | Opens the replay. |
| Visitor | The visitor's email once identified, or Anonymous. |
| Location and device | A flag, then browser, operating system and device icons, each with a tooltip. |
| Recorded | When the recording started. |
| Length | How long the recording runs. A live dot beside it, "Still recording", means new moments came in within the last 5 minutes. |
| Pages and Events | The visit's page views and events. |
| Entry page | The first page of the visit. |
"Nothing recorded in this range with these filters." means there is nothing to list yet. Recordings start once session replay is on, and are kept for 30 days.
Watching a replay
A replay opens in a window over the page you are on. Its address gains ?replay=, so you can send it
to a teammate in your workspace, and the browser's Back button closes it. The header shows who and
when, Session to open the visit's session page, and, from the Replays page, Previous replay
and Next replay.
The recording
Above the recording, the address bar shows the page on screen and the size of the visitor's window, with buttons to copy the address and open the page. When something was not recorded, a note says so: "Not recorded here: an excluded page." or "the page was too big", and recording picks up on the next page.
The bar and the controls
The bar under the recording is a full-height segment wherever the visitor was active, and a thin line where nothing happened for more than 10 seconds. A stretch that was not recorded is dashed. Each item of the activity list is a dot on the bar, red for a rage click. Point at the bar to see the time and the item there, such as "Clicked “Pricing” · 1:02", and click to jump.
| Control | What it does |
|---|---|
| Play | Plays and pauses. Space does the same while the player has focus. |
| Back and forward | Jump 10 seconds. The ← and → keys do the same. |
| Speed | From 0.5× to 16×. |
| Skip inactivity | On by default. Fast-forwards the thin and dashed stretches, with "Skipping inactivity" on screen while it does. |
| The time | Where you are, and the recording's length. |
| Copy link to this moment | A link that opens the replay at this second (?t=). |
Your speed, Skip inactivity and whether the activity list shows are remembered for next time.
Activity
Activity lists the visit beside the recording, or under it in a narrow window:
- page views, with their path;
- events, by name, including the ones you send with
track(); - clicks, named by the text of what was clicked, such as "Clicked “Start free”";
- rage clicks, in red: three or more clicks close together, each within a second of the last;
- typing, one "Typed in …" row per field, never what was typed.
All, Events and Clicks filter the list, and the dots on the bar follow. The list follows playback: the moment on screen is highlighted, what is still to come is dimmed, and it scrolls by itself unless your pointer is over it. Click a row to jump to it.
Live visits
A visit that is still going shows Live and keeps loading as new moments come in, a few seconds behind the visitor. Once you catch up, the player says "Waiting for the visitor…" and carries on when more arrives.
Replays elsewhere in the app
- Sessions: a screen icon on a row, "Has a replay", marks a recorded session. In the open row and on the session's own page, Watch replay sits on the Timeline header.
- Profiles: each recorded session on a profile's timeline has Watch replay, including in the visitor activity window that Goals and Revenue open.
- Realtime: the visitor card on the globe has Watch replay while that visit is being recorded.
Every member who can see Sessions can watch replays. Replays are never part of a shared dashboard.
Excluded traffic
Excluded traffic applies to replays too. Visits from an excluded IP address and visits of an excluded profile are not recorded. On an excluded page, recording pauses, and the replay shows "Not recorded here: an excluded page." until the visitor reaches a page that is not excluded.
Limits
| Monthly replays | One replay a month for every 10 events of your Growth size: 25,000 on 250k, 100,000 on 1M and 5,000,000 on 50M. They have their own allowance and never count as events. Usage & Billing shows how many you have used. |
| When they run out | New visits are not recorded until the period resets. Your analytics carry on as before, and nothing is charged on top. See Billing. |
| How long they are kept | 30 days on every size, then deleted, whatever your plan keeps for analytics. |
| Very large pages | A change to a page too big to send pauses recording until the next page, and the replay marks the gap. |
| Websites only | Replays come from the tracking script. Mobile apps are not recorded. |
| Not captured | Console messages and network requests. |
Related
- Sessions: every visit, recorded or not, and its timeline.
- Cookieless tracking: who is tracked with cookies, and consent.
- JavaScript SDK: recording options,
startReplay()andstopReplay(). - Audience settings: the Session replay switch.
- Billing: replays for each Growth size.