Recording
Automatic and manual recording modes
Last updated:
Auto Recording (Default)
By default, autoRecord: true starts recording immediately when init() is called. Every page visit generates a session that appears in your dashboard.
SessionSight.init({
publicApiKey: 'YOUR_PUBLIC_API_KEY',
propertyId: 'YOUR_PROPERTY_ID',
// autoRecord: true is the default
});Manual Recording
Set autoRecord: false to control exactly when recording starts. The SDK still initializes and captures into a rolling 5-second pre-buffer, but nothing is sent to the server until you call startRecording().
SessionSight.init({
publicApiKey: 'YOUR_PUBLIC_API_KEY',
propertyId: 'YOUR_PROPERTY_ID',
autoRecord: false,
});
// Later, when something interesting happens:
document.getElementById('checkout-btn').addEventListener('click', () => {
SessionSight.startRecording({ preRecordSecs: 5 });
});Pre-Record Buffer
When using manual recording, you can include up to 5 seconds of activity that happened before startRecording() was called. This lets you see what led up to the trigger.
// Include the last 3 seconds of activity
SessionSight.startRecording({ preRecordSecs: 3 });
// Start from this moment only (no pre-buffer)
SessionSight.startRecording();| Option | Type | Default | Description |
|---|---|---|---|
preRecordSecs | number | 0 | Seconds of pre-buffered activity to include (max 5) |
Use Cases for Manual Recording
- Error flows: Start recording when an error is caught, including what the user was doing before
- Specific funnels: Only record sessions that enter a checkout or signup flow
- Sampling: Randomly record a percentage of sessions to reduce data volume
- User-triggered: Let users opt in to being recorded (e.g., “Report a bug” button)
Pausing and Resuming
stopRecording() and resumeRecording() pause and resume rrweb capture without touching the session, the identity container, or consent. Goals, feedback, and split-test exposures continue to fire while paused. Use this for dynamic in-flow pauses (e.g. a modal with payment fields) when you want to keep the session alive but not record the visual.
// Pause rrweb capture without touching the session, identity, or consent.
// Goals, feedback, and split-test exposures keep firing.
paymentModal.addEventListener('open', () => SessionSight.stopRecording());
paymentModal.addEventListener('close', () => SessionSight.resumeRecording());This is orthogonal to consent. To fully stop collecting data (session, goals, everything), call SessionSight.setConsent(false) instead — see Consent.
What Gets Captured
| Data | Captured | Notes |
|---|---|---|
| DOM state | Yes | Full snapshot with inline CSS for replay |
| Mouse movement | Yes | Position sampled every 500ms |
| Clicks | Yes | Coordinates + button/link labels |
| Scroll depth | Yes | Position sampled every 1s |
| Page navigations | Yes | SPA detected via History API |
| Form interactions | Yes | Focus/blur timing, filled state (boolean) |
| Form field values | No | Never captured |
| Passwords | No | Never captured |
| Cookies / localStorage | No | Never captured |
| Network requests | No | Not captured |
| Image, video, audio sources | No | Stripped by default; opt back in per element with data-ss-allow |
data-ss-mask, data-ss-unmask, data-ss-exclude, and data-ss-allow. Field values, passwords, cookies, network data, and media sources are never part of a recording unless you explicitly opt in.