Developer pages

Events & properties

Named events, automatic vs custom, property enrichment, and where they appear.

Event

An event is a named fact that something happened, optionally with a property bag.

Examples shipped by the SDK (automatic):

$pageview, $click, $form_submitted, $rageclick, $deadclick, $web_vitals

Examples you send (custom):

signed_up, checkout_completed, feature_flag_evaluated

Browser delivery uses tracker.customEvent(name, properties?), which batches to POST /api/ingestion/customEvent/batch (see Custom events).

Properties

Properties are key/value fields on an event (plan: "pro", path: "/pricing"). Prefer JSON-serializable primitives.

Sources of properties

SourceControlled byExamples
You (custom)customEvent second argumentplan, price, source
AutocaptureAutomatic tracking optionstag, text, path, href
Automatic enrichmentenableAutomaticProperties (default on)device_type, browser, os, utm_*, referrer, viewport
User traitsidentifyUser / setUserPropertyemail, name, plan (on the user, not every event)
DenylistpropertyDenylistKeys excluded from automatic enrichment

Automatic device/location fields come from the SDK property detector (device_type, browser, browser_version, os, screen_resolution, timezone, language, URL/UTM/referrer fields, etc.).

Automatic vs custom

KindSourceWhere you notice them
AutomaticSDK defaults / autocaptureDashboard Pages/Events, Replay activity, behavioral Issues
CustomYour customEvent callsDashboard Custom tab, Funnels, Replay Custom tab

Naming rules that save pain

  • Use one convention (snake_case or stable dot.case) and keep it.
  • Do not rename events after funnels depend on them.
  • Put identity in identifyUser, not only on events.
  • Avoid colliding with SDK $… reserved names unless intentional.
  • Keep property values small — huge strings may be trimmed or drop batches near the 1MB chunk limit on the events path.

Batching & delivery (custom)

BehaviorValue
Debounce flush100 ms
Max batch size50 events
Primary endpointPOST /api/ingestion/customEvent/batch
Min-duration holdDefault 5s (minimumDurationMilliseconds)