Data and storage

Data model (md), UTM handling, BW_INFO, and storage keys.
developer
Data overview

Where your data appears and how it’s referenced in filters

Data model (md)

SDK internally exposes a structured model used by filters/macros:

  • data: user properties set via setuserproperties / identity
  • var: values from init/autoconf variables.var
  • event: last event name
  • partner: retargeting/link partner data
  • session: session data (e.g., visitor id)
  • utm: utm_campaign, utm_source, utm_medium, utm_term, utm_content, utm_click, utm_ht, utm_at
  • url, referrer: parsed URL parts + query
  • cookie: parsed cookies

Access via macros, e.g. {{data.user_id}}, {{url.host}}.

Browser info (BW_INFO)

Collected at runtime and enriched when available (navigator.userAgentData). Useful fields:

  • n (browser), v (version), t (device: mobile/desktop)
  • https (1/0), z (timezone offset), ls (localStorage available)
  • wv (webview), uab/uam/uap (UA brands/mobile/platform), uapv (platform version)
  • ul (user language if set), pe (push enabled support flag)

setuserlanguage writes BW_INFO.ul, which is included on beacons. In filters, put language or device values on data.* or variables.var. Use {{window.*}} for real Window properties.

Storage keys

Storage is namespaced under a JSON blob in _opc (local/session).

  • Local (under _opc[<tag>]):

    • uid / ttl β€” persistent visitor id when analytics consent is on
    • userConsent JSON
    • UTM keys
    • Modal keys: m_<modalId>.v (views), .t (total), .l (last shown), .x (don’t-show), .q (queue), .ab (A/B variant)
    • Push: webpush_dismissals; push only when push_enable_subdomain_subscription is enabled (otherwise the _ocpsh cookie)
  • Session (under _opc[<tag>]):

    • uid as <timestamp>.<rand>.<count>
    • _let β€” last event time for session timeout

Privacy gate

The analytics load / beforeunload beacons still fire when the analytics flag is off. The stored consent state is consulted only when that flag is truthy. Persistent uid (cid on the payload) is omitted without analytics consent.