What FullStory traffic looks like
FullStory loads a recording script, then ships session capture as compressed bundle uploads, readable only around the edges.
- Endpoint pattern
- Recording script from
edge.fullstory.com/s/fs.js(historicallyfullstory.com/s/fs.js; European tenants use aneu1.fullstory.comedge); capture goes tors.fullstory.comon/rec/...paths:/rec/pageregisters the page, then recurring/rec/bundleuploads follow - Transport
- Batched POSTs; bundles carry compressed DOM snapshots, mutations, and interaction data. You will not read individual clicks out of them, but their cadence tells you capture is live
- Key parameters
- Org ID, set in the
_fs_orgwindow global by the snippet and repeated in the/rec/query strings · session and page IDs that stitch bundles into one replay - Payload
- Custom events and identify calls made through the
FS()API (FS('trackEvent', ...),FS('setIdentity', ...)) ride the same ingestion channel rather than appearing as individually readable analytics hits
Debugging FullStory with Event Watcher
- No dedicated parser: requests are identified by hostname, labeled with the platform name and Session Replay category badge, and shown with parsed query parameters, body, and the per-event Cookies section.
- That answers the recurring questions: is
fs.jsloading, which org ID is it recording into (read it from the/rec/query strings), and are bundles actually uploading? - Consent timing per request shows whether capture started before or after the CMP resolved.
- Grouping by Endpoint separates the script load from the
rs.fullstory.comingestion traffic.
FullStory and consent
Analytics consentEvent Watcher checks FullStory against analytics consent. FullStory's own consent controls work at the element and user level: FS('setIdentity') and consent APIs decide what gets captured.
None of that is visible on the wire. What you can verify externally is whether recording traffic exists before the CMP resolved.
A /rec/page request and bundle uploads before the banner interaction are marked pre-consent and counted by the violations counter.
Because replay captures rendered content, treat a pre-consent bundle as a priority finding: real user behavior was uploaded before permission, regardless of what masking rules apply inside the recording.
Common debugging scenarios
- Sessions missing from FullStory. Confirm
fs.jsloads and/rec/bundleuploads follow. A page with the script but no bundles points at sampling, a blocked domain configuration, or a crashed recorder. - Recording into the wrong org. Read the org ID from the
/rec/query parameters and compare against the workspace you expect. Staging snippets in production containers are a classic. - Capture before consent. Check the consent state on the first
rs.fullstory.comevent of the session. - Replay splits mid-session. Compare session identifiers across consecutive bundle uploads; a change indicates the recorder restarted.
- Who loaded FullStory? Use the Script Tree view. Snippets pasted into a tag manager by a past vendor engagement are a common surprise during a tracking audit.