Free account
CIPA § 631 Risk

Is FullStory legal in California?

Session Replay · Updated 2026

FullStory captures detailed session recordings including keystrokes and form interactions, and lets teams replay a visitor's entire session. Using it is perfectly legal — but running FullStory before a visitor consents is what creates exposure under California's wiretapping law.

Is this tracker on your site? Find out free in 30 seconds.

Real browser scan with evidence capture. No signup required to see results.

Why FullStory can trigger CIPA claims

California's Invasion of Privacy Act (CIPA), Penal Code § 631, prohibits intercepting communications without all-party consent. Since 2022, a wave of plaintiff-firm litigation has applied this decades-old wiretapping statute to website session-replay, chat, and pixel tools — arguing that capturing a visitor's clicks, keystrokes, and form input without consent is an unlawful interception. FullStory captures detailed session replays including keystrokes and form interactions — high-exposure under CIPA when recording before consent.

Statutory damages run up to $5,000 per violation, and plaintiffs argue each affected visitor session is a separate count — which is why even small sites receive demand letters.

Real-world enforcement

In a landmark action, the California Attorney General reached a $1.2M settlement with Sephora over its use of tracking technologies without honoring consumer privacy choices. Private CIPA suits over session-replay and chat tools have named retailers, healthcare providers, and SaaS companies alike. The common thread: trackers firing before the visitor had any chance to opt out.

How to make FullStory compliant

  1. Delay FullStory initialization until your CMP confirms consent. Do not place the FS snippet directly in <head>.
  2. Enable 'Private by Default' / element exclusion so PII fields are masked (fs-exclude, fs-mask classes).
  3. If using the @fullstory/browser package, call init() from your consent callback rather than at app bootstrap.
  4. Re-scan with 'Verify fix' to confirm no requests reach *.fullstory.com pre-consent.

Consent-gating snippet

import { init } from '@fullstory/browser';
// Call only after consent — not at module load.
cmp.onConsent('analytics', () => init({ orgId: 'YOUR_ORG_ID' }));

FullStory's official privacy/consent documentation →

Check your own site

RegSentry runs a real browser against your site, watches exactly when FullStory (and every other tracker) first contacts a third-party server, and captures the evidence — including whether it intercepts keystrokes typed into your forms.

Is this tracker on your site? Find out free in 30 seconds.

Real browser scan with evidence capture. No signup required to see results.

← See all tracker compliance guides