Get Started
Autopilot is the session-recording SDK that powers session replay. It records what happens on a page — the initial DOM, every subsequent mutation, and user interactions such as scrolling, resizing, and pointer movement — then binary-encodes, compresses, and uploads that stream so a session can be replayed later.
Autopilot is not integrated on its own. It is loaded and initialized by the Pulse SDK, and it reuses Pulse's session context (session, device, and user identifiers) so that recordings line up with the rest of your analytics data. As an integrator you do not add a separate <script> tag or call an Autopilot init function — you enable Pulse, and Pulse brings up Autopilot when the relevant settings allow it.
What Autopilot records
- Initial snapshot — a full walk of the document: the document node, elements, text nodes, attributes, and stylesheets.
- Incremental mutations — node additions and removals, attribute and value changes, character-data changes, captured through a
MutationObserver. - User interactions — scroll, resize, pointer (down, up, move, cancel, click), and tab visibility changes.
The recorded stream is encoded to a compact binary format, gzipped, and uploaded in batches, with session metadata posted alongside it for indexing.
Key characteristics
| Aspect | Behavior |
|---|---|
| Integration | Loaded by Pulse — no standalone script tag or init call |
| Session context | Reuses Pulse session_id, device_id, user_id, app, country_code |
| Enablement | Gated by both a Pulse config flag and a remote setting; clients can opt out with autopilotTracking: { enabled: false } (see Initialization & Enablement) |
| Privacy | Sensitive input values are masked before recording (see Masking Sensitive Inputs) |
| Modes | standard (top frame) and iframe (cross-frame recording) |
Next steps
- Initialization & Enablement — how Pulse loads Autopilot and the two gates that decide whether recording starts.
- Masking Sensitive Inputs — how to keep sensitive field values out of recordings.