CDPGuidesSupport

Sampling and Event-Triggered Recording

Use sampleRate and alwaysRecordEvents to control which sessions get recorded. Record 10% of traffic and always capture checkout flows.

Recording every session is expensive and rarely necessary. sampleRate and alwaysRecordEvents let you record a small slice of traffic but still guarantee coverage on the sessions that matter.


sampleRate

sampleRate is a number between 0 and 1 that controls what fraction of sessions are recorded.

  • 1 (default): record every session
  • 0.1: record 10% of sessions
  • 0: never auto-record (you can still promote sessions via alwaysRecordEvents)

The sampling decision is made once per session and is sticky for the rest of the session lifetime. A session is either in or out; it doesn't flip mid-flight from random sampling.

ours('init', '{cdp_token}', {
  session_replay: {
    token: 'replay_token',
    sampleRate: 0.1,
  },
});

alwaysRecordEvents

alwaysRecordEvents is a list of event names that override sampling. When a track event with a matching name fires during a session that was sampled out, recording starts immediately from that point forward.

ours('init', '{cdp_token}', {
  session_replay: {
    token: 'replay_token',
    sampleRate: 0.1,
    alwaysRecordEvents: ['checkout', 'purchase', 'error'],
  },
});

Note: The Ours Privacy Web SDK automatically notifies Session Replay whenever a track event fires, so event-triggered recording works without any additional code on your part.

What gets captured when an event triggers recording

Recording starts at the moment the event fires. Events and DOM activity that happened before the trigger are not retroactively captured. If you need to capture the lead-up to a promotion event, set sampleRate higher (e.g., 0.5) and trade off cost for context.


Common patterns

Record 10% of traffic, but always capture checkout and errors

session_replay: {
  token: 'replay_token',
  sampleRate: 0.1,
  alwaysRecordEvents: ['checkout', 'purchase', 'error'],
}

Only record sessions with specific events

session_replay: {
  token: 'replay_token',
  sampleRate: 0,
  alwaysRecordEvents: ['checkout'],
}

This records no sessions by default. Recording starts the moment a checkout event fires. Cheap, targeted, and useful for funnel debugging.

Record everything during a launch, scale back later

session_replay: {
  token: 'replay_token',
  sampleRate: 1, // 100%; flip to 0.1 once you have enough data
  alwaysRecordEvents: ['checkout', 'signup', 'plan_upgrade'],
}

The Web SDK handles replay event notifications and session rotation automatically. You only need to configure sampleRate and alwaysRecordEvents in your session_replay settings.


Next steps

  • Configuration: every supported option
  • Recipes: copy-paste setups that combine sampling, paths, and masking

How is this guide?

On this page