Skip to content
trackrift

Documentation

SDK

Autocapture

Behavioral events, selectors, exclusions, and privacy guarantees.

AI brief: installAutocapture(tracker, opts): scroll_depth, engagement_time, click, form_start/field_change/submit/error, rage_click. data-track-ignore on elements. Never captures input values.

Autocapture records behavioral signals without instrumenting every button. It uses event delegation — one listener on document — keeping overhead minimal.

EventTriggerPayload highlights
scroll_depth25/50/75/100% per pathdepth, path
engagement_timeEvery 15s active + on hideactive_seconds
clickDelegated clicksselector, text (truncated), tag
form_startFirst focus in formform_id, field count
form_field_changeBlur after changefield name/type, filled: boolean
form_submitNative submitfield names only — never values
form_errorinvalid eventfield name
rage_click3+ clicks <1s same targetselector
autocapture-setup.ts
import { tracker, installAutocapture } from '@trackrift/sdk';

tracker.init({ endpoint: 'https://api.trackrift.com', publicId: 'YOUR_PUBLIC_ID' });

const uninstall = installAutocapture(tracker, {
  clicks: true,
  forms: true,
  scrollDepth: true,
  engagementTime: true,
  visibility: false,
  rageClick: true,
});

// SPA teardown — optional cleanup
// uninstall();

Excluding elements

html
<button data-track-ignore>Sensitive action</button>
<div data-track-ignore>
  <!-- entire subtree ignored for click autocapture -->
</div>

Password / email fields

Autocapture never serializes input values — only field names, types, and whether filled. Still use data-track-ignore on auth forms for defense in depth.

Shadow DOM

Clicks inside closed shadow roots may not resolve selectors. Prefer explicit track() for Web Components checkout widgets.