ReferenceAuto-captured Events

Auto-captured Events

Reference for all events automatically captured by the Mythic Analytics SDK including page views, attribution tracking, and auto-included context properties.

Auto-captured events

The SDK automatically captures these events when the corresponding config options are enabled:

EventDescriptionConfig
$pageviewPage load and SPA navigation with URL, title, referrer, and performance metricscapture_pageview
$pageleavePage exit with $time_on_page, $exit_intent, and $triggercapture_pageleave
$engagementFires 10 seconds after page load ($time_to_engage: 10)Always on
$identifyUser identification (via identify())Always on
$create_aliasAlias creation (via alias())Always on
$setPerson-property update (via identify() or setPersonProperties())Always on
$autocaptureClicks, form submissions, and input changes. The $event_type property is click, submit, or changeautocapture
$exceptionUncaught JS errors and unhandled promise rejections, with $exception_type, $exception_message, and $exception_stackerror_tracking

Feature-module events

These fire only when their feature is enabled (most are on by default — see the configuration reference):

EventDescriptionConfig
form_submittedForm submission with extracted, mapped fieldsauto_form_identify
input_capturedEmail detected in an input fieldauto_input_capture
appointment_booked / calendly_booked / acuity_bookedBooking API call detectedauto_booking_listener
survey_completed / typeform_submitted / surveymonkey_completedSurvey submission detectedauto_survey_tracking
Custom event_nameFired per matched endpoint in network_endpointsauto_network_intercept
$web_vital_lcp, $web_vital_cls, $web_vital_inp, …One event per Core Web Vital metricweb_vitals
$cross_domain_linkedSession adopted from a cross-domain linkcross_domain_tracking
$heatmapBatch of click positions and scroll depths (pixels, no element identity)capture_heatmaps
$experiment_viewedA third-party A/B tool (Convert.com) bucketed this visitor — once per session per assignment, with experiment_id, variation_id, variation_name, first_exposure, convert_visitor_idcapture_experiments

When remote-config tags or snippets fail, the SDK also reports $tag_error, $snippet_error, and $snippet_compilation_error; a failing event transformer reports $transformer_error.

$experiment_viewed fires once per session per assignment, so it counts sessions exposed to a variation — not pageviews. To split other events by variation, filter on the $experiments super property (["<experimentId>:<variationId>"]) that every event carries once the assignment is known.

Count exposures with first_exposure: true. A testing tool keeps its assignment for months (Convert: ~6), so a visitor bucketed on a landing page carries that variation into later visits — and $experiment_viewed fires again in each new session, sometimes on pages the test never touched. first_exposure: false marks those: correct for attributing later behaviour to the variation, wrong as an exposure count. A sighting that arrives with a variation name but no id yet (the tool announced itself before writing its cookie) is held briefly and completed from the cookie; detected_via: held_then_enriched marks those, and <source>_unresolved marks one that never completed.

Alongside the event, the SDK stores the A/B assignment on the person profile as $convert_visitor_id and $convert_experiments. $experiments is a super property, so it only rides events sent from the browser — a conversion that arrives server-side (a CRM close, a subscription rebill) carries no super properties at all. The person copy is what lets a later off-browser conversion still be credited to the variation, and it is what the convert_experiments destination reads. Both are erased with the rest of a person's data on a deletion request, and neither is written for HIPAA-enabled locations, where experiment capture is off entirely.

form_submitted never includes password or hidden inputs, and fields whose names look sensitive (SSN, credit card, CVV, API token, etc.) are redacted before the event is sent. A single user submit produces exactly one form_submitted event.

Attribution tracking

When capture_utm is enabled (default), the SDK captures UTM parameters and advertising click IDs from the URL:

  • UTM: $utm_source, $utm_medium, $utm_campaign, $utm_term, $utm_content
  • Google Ads: $gclid, $gbraid, $wbraid
  • Facebook: $fbclid, $fbc, $fbp
  • Twitter/X: $twclid
  • LinkedIn: $li_fat_id
  • OpenAI / ChatGPT Ads: $oppref (the click id), $obref (read from OpenAI's own __obref cookie when their OAIQ pixel is on the page)
  • Mythic Click ID: $iiid (from link redirect tracking)
  • Google Analytics: $ga_client_id (from GA's own _ga cookie, when GA4 is on the page)

$obref is read from OpenAI's cookie the same way $ga_client_id is read from Google's, and for the same reason: it is their browser identifier, not ours. Their __oppref cookie is deliberately not read back — oppref is a click id, and a cookie that outlives the click would mark 30 days of direct traffic as paid ChatGPT traffic. A conversion that happens later gets its oppref from the person's stored attribution server-side instead.

$ga_client_id is read, never written. Google Analytics owns the _ga cookie, and minting our own value would fork the identity and make GA4 count one visitor twice — so if GA is not on the page, the property is simply absent. It is the join key for the google_analytics destination: without it, a server-side GA4 event is attributed to a brand-new user rather than the session that earned it. Not on the HIPAA allowlist, so it is stripped for HIPAA-enabled locations.

$fbc and $fbp follow Meta's Conversions API formats — fb.<subdomainIndex>.<creationTime>.<clickId> and fb.<subdomainIndex>.<creationTime>.<random> — and are persisted for 90 days, with the window rolling forward on each page load. If Meta's pixel already set _fbc/_fbp on the domain, those values are reused rather than regenerated, so the SDK and the pixel report the same browser ID. Once captured, $fbc keeps its original creation time until a different fbclid arrives, which is what lets Meta dedupe browser and server events for the same click. $fbclid itself stays URL-scoped: it is not backfilled from a stored $fbc.

Auto-included context

Every event automatically includes:

  • $lib, $lib_version — SDK identifier and version
  • $current_url, $host, $pathname, $page_title — Page context ($referrer/$referring_domain when available)
  • $browser, $browser_version, $os, $device_type, $user_agent — User agent ($device_type is mobile, tablet, or desktop)
  • $screen_width, $screen_height, $viewport_width, $viewport_height, $screen_density
  • $timezone, $timezone_offset, $browser_language
  • $is_bot, $is_identified, $pageview_id
  • $session_id, $device_id, distinct_id (and $user_id once identified) — Identity context