Skip to main content

Device and browser information

Browser information in the atomic event properties

For an overview of the browser information that is tracked in the atomic event properties, please refer to the table on this page.

Context entities added by the tracker

The following context entities are attached at the tracker based on information provided by the browser or operating system.

Browser context

This is an optional feature on the JavaScript tracker that adds browser information that is normally tracked in the atomic event properties (see above) plus some extra information (such as the tab ID) as a context entity.

Context entity: browser_context

Schema for browser contexts

Schema URI:iglu:com.snowplowanalytics.snowplow/browser_context/jsonschema/1-0-0

WebMobileTracked automatically
👀 Example
{
"viewport": null,
"documentSize": null,
"resolution": null,
"colorDepth": 1,
"devicePixelRatio": 1,
"cookiesEnabled": true,
"online": true,
"browserLanguage": null,
"documentLanguage": null,
"webdriver": true,
"deviceMemory": 1,
"hardwareConcurrency": 1,
"tabId": null
}
📃 Schema properties definition
PropertyTypeDescriptionRequired?
viewport"string"Viewport dimensions of the browser. Arrives in the form of WidthxHeight e.g. 1200x900.
documentSize"string"Document dimensions. Arrives in the form of WidthxHeight e.g. 1200x900
resolution"string"Device native resolution. Arrives in the form of WidthxHeight e.g. 1200x900
colorDepth"integer"The number of bits allocated to colors for a pixel in the output device, excluding the alpha channel.
devicePixelRatio["number","null"]Ratio of the resolution in physical pixels to the resolution in CSS pixels for the current display device.
cookiesEnabled"boolean"Indicates whether cookies are enabled or not. More info and caveats at https://developer.mozilla.org/en-US/docs/Web/API/Navigator/cookieEnabled.
online"boolean"Returns the online status of the browser. Important caveats are described in https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine.
browserLanguage["string","null"]The preferred language of the user, usually the language of the browser UI. RFC 5646 https://datatracker.ietf.org/doc/html/rfc5646.
documentLanguage["string","null"]The language of the HTML document. RFC 5646 https://datatracker.ietf.org/doc/html/rfc5646.
webdriver["boolean","null"]Indicates whether the user agent is controlled by automation.
deviceMemory["integer","null"]Approximate amount of device memory in gigabytes.
hardwareConcurrency["integer","null"]Number of logical processors available to run threads on the user's computer.
tabId["string","null"]An identifier for the client browser tab the event is sent from.

How to track?

See the JavaScript tracker documentation to learn how to configure the context entity.

Mobile context

The mobile context entity is tracked on mobile apps gives information about the mobile device platform including some identifiers (IDFA, IDFV). The context entity is enabled by default but the information that is included is configurable on the tracker.

Context entity: mobile_context

Schema for mobile contexts

Schema URI:iglu:com.snowplowanalytics.snowplow/mobile_context/jsonschema/1-0-3

WebMobileTracked automatically
👀 Example
{
"deviceManufacturer": "Samsung",
"deviceModel": "SM-N960N Galaxy Note9 TD-LTE KR 128GB",
"osType": "Google Android 8.1 (Oreo)",
"osVersion": 8.1,
"androidIdfa": "00000000-0000-0000-0000-000000000000",
"appleIdfa": null,
"appleIdfv": null,
"carrier": "Unknown",
"openIdfa": null,
"networkTechnology": "2G",
"networkType": "wifi",
"physicalMemory": 1,
"systemAvailableMemory": 1,
"appAvailableMemory": 1,
"batteryLevel": 42,
"batteryState": "charging",
"lowPowerMode": true,
"availableStorage": 1,
"totalStorage": 128000000000,
"isPortrait": true,
"resolution": "1440x2960",
"scale": 1,
"language": null,
"appSetId": null,
"appSetIdScope": null
}
📃 Schema properties definition
PropertyTypeDescriptionRequired?
osType"string"Operating system type (e.g., ios, tvos, watchos, osx, android)
osVersion"string"The current version of the operating system
deviceManufacturer"string"The manufacturer of the product/hardware
deviceModel"string"The end-user-visible name for the end product
carrier["string","null"]The carrier of the SIM inserted in the device
networkTypeOne of: mobile, wifi, offline, Type of network the device is connected to
networkTechnology["string","null"]Radio access technology that the device is using
openIdfa["string","null"]Deprecated tracking identifier for iOS
appleIdfa["string","null"]Advertising identifier on iOS
appleIdfv["string","null"]UUID identifier for vendors on iOS
androidIdfa["string","null"]Advertising identifier on Android
physicalMemory["integer","null"]Total physical system memory in bytes
systemAvailableMemory["integer","null"]Available memory on the system in bytes (Android only)
appAvailableMemory["integer","null"]Amount of memory in bytes available to the current app (iOS only)
batteryLevel["integer","null"]Remaining battery level as an integer percentage of total battery capacity
batteryStateOne of: unplugged, charging, full, Battery state for the device
lowPowerMode["boolean","null"]A Boolean indicating whether Low Power Mode is enabled (iOS only)
availableStorage["integer","null"]Bytes of storage remaining
totalStorage["integer","null"]Total size of storage in bytes
isPortrait["boolean","null"]A Boolean indicating whether the device orientation is portrait (either upright or upside down)
resolution["string","null"]Screen resolution in pixels. Arrives in the form of WIDTHxHEIGHT (e.g., 1200x900). Doesn't change when device orientation changes
scale["number","null"]Scale factor used to convert logical coordinates to device coordinates of the screen (uses UIScreen.scale on iOS and DisplayMetrics.density on Android)
language["string","null"]System language currently used on the device (ISO 639)
appSetId["string","null"]Android vendor ID scoped to the set of apps published under the same Google Play developer account (see https://developer.android.com/training/articles/app-set-id)
appSetIdScopeOne of: app, developer, Scope of the `appSetId`. Can be scoped to the app or to a developer account on an app store (all apps from the same developer on the same device will have the same ID)

How to track?

Context entities added during enrichment

The following context entities are added during enrichment of events in the pipeline based on other tracked event properties.

YAUAA context for user-agent parsing

YAUAA (Yet Another User Agent Analyzer) enrichment enables parsing the user-agent string tracked in Web events. It extract information about the user's device and browser, like for instance the device class (Phone, Tablet, etc.).

Context entity: yauaa_context

Schema for a context generated by the YAUAA enrichment after parsing the user agent

Schema URI:iglu:nl.basjes/yauaa_context/jsonschema/1-0-4

WebMobileTracked automatically
👀 Example
{
"schema_name": "yauaa",
"agent_class": "Browser",
"agent_information_email": "Unknown",
"agent_name": "Chrome",
"agent_name_version": "Chrome109",
"agent_name_version_major": "Chrome109",
"agent_version": "109",
"agent_version_major": "109.00",
"device_brand": "Apple",
"device_class": "Desktop",
"device_cpu": "Intel",
"device_cpu_bits": "64",
"device_name": "AppleMacintosh",
"device_version": "Demo",
"layout_engine_class": "Browser",
"layout_engine_name": "Blink",
"layout_engine_name_version": "Blink109",
"layout_engine_name_version_major": "Blink109",
"layout_engine_version": "109",
"layout_engine_version_major": "109",
"network_type": "Unknown",
"operating_system_class": "Desktop",
"operating_system_name": "MacOS",
"operating_system_name_version": "MacOS>=10.15.7",
"operating_system_name_version_major": "MacOS>=10.15",
"operating_system_version": ">=10.15.7",
"operating_system_version_build": "??",
"operating_system_version_major": ">=10.15",
"webview_app_name": "Unknown",
"webview_app_name_version_major": "Unknown??",
"webview_app_version": "??",
"webview_app_version_major": "??"
}
📃 Schema properties definition
PropertyTypeDescriptionRequired?
deviceClassOne of: Desktop, Anonymized, Unknown, UNKNOWN, Mobile, Tablet, Phone, Watch, Virtual Reality, eReader, Set-top box, TV, Game Console, Home Appliance, Handheld Game Console, Voice, Car, Robot, Robot Mobile, Spy, Hacker, Augmented Reality, Robot ImitatorSee https://yauaa.basjes.nl/README-Output.html
deviceName"string"Example: Google Nexus 6
deviceBrand"string"Example: Google
deviceCpu"string"
deviceCpuBits"string"
deviceFirmwareVersion"string"
deviceVersion"string"
operatingSystemClassOne of: Desktop, Mobile, Cloud, Embedded, Game Console, Hacker, Anonymized, UnknownSee https://yauaa.basjes.nl/README-Output.html
operatingSystemName"string"Examples: Linux, Android.
operatingSystemVersion"string"
operatingSystemNameVersion"string"
operatingSystemVersionBuild"string"
layoutEngineClassOne of: Browser, Mobile App, Hacker, Robot, Unknown, Special, Cloud, eReaderSee https://yauaa.basjes.nl/README-Output.html
layoutEngineName"string"
layoutEngineVersion"string"
layoutEngineVersionMajor"string"
layoutEngineNameVersion"string"
layoutEngineNameVersionMajor"string"
layoutEngineBuild"string"
agentClassOne of: Browser, Browser Webview, Mobile App, Robot, Robot Mobile, Cloud Application, Email Client, Voice, Special, Testclient, Hacker, Unknown, Desktop App, eReaderSee https://yauaa.basjes.nl/README-Output.html
agentName"string"Example: Chrome.
agentVersion"string"
agentVersionMajor"string"
agentNameVersion"string"
agentNameVersionMajor"string"
agentBuild"string"
agentLanguage"string"
agentLanguageCode"string"
agentInformationEmail"string"
agentInformationUrl"string"
agentSecurityOne of: Weak security, Strong security, Unknown, Hacker, No security
agentUuid"string"
webviewAppName"string"
webviewAppVersion"string"
webviewAppVersionMajor"string"
webviewAppNameVersionMajor"string"
facebookCarrier"string"
facebookDeviceClass"string"
facebookDeviceName"string"
facebookDeviceVersion"string"
facebookFBOP"string"
facebookFBSS"string"
facebookOperatingSystemName"string"
facebookOperatingSystemVersion"string"
anonymized"string"
hackerAttackVector"string"
hackerToolkit"string"
koboAffiliate"string"
koboPlatformId"string"
iECompatibilityVersion"string"
iECompatibilityVersionMajor"string"
iECompatibilityNameVersion"string"
iECompatibilityNameVersionMajor"string"
carrier"string"
gSAInstallationID"string"
networkType"string"
operatingSystemNameVersionMajor"string"
operatingSystemVersionMajor"string"
UA parser context (outdated, not recommended anymore)

The UA parser is no longer recommended be used due to being outdated. Use the YAUAA context instead.

device_familyos_familyos_majoros_minoros_patchos_patch_minoros_versionuseragent_familyuseragent_majoruseragent_minoruseragent_patchuseragent_version
MacMacOSX10157[NULL]MacOSX10.15.7Chrome11000Chrome110.0.0

IAB context for spiders and robots

The IAB Spiders & Robots enrichment uses the IAB/ABC International Spiders and Bots List to determine whether an event was produced by a user or a robot/spider based on its’ IP address and user agent.

Context entity: spiders_and_robots

Schema for a context generated by the IAB Spiders & Robots enrichment

Schema URI:iglu:com.iab.snowplow/spiders_and_robots/jsonschema/1-0-0

WebMobileTracked automatically
👀 Example
{
"category": "BROWSER",
"primaryImpact": null,
"reason": "PASSED_ALL",
"spiderOrRobot": false
}
📃 Schema properties definition
PropertyTypeDescriptionRequired?
spiderOrRobot"boolean"true if the IP address or user agent checked against the list is a spider or robot, false otherwise
categoryOne of: SPIDER_OR_ROBOT, ACTIVE_SPIDER_OR_ROBOT, INACTIVE_SPIDER_OR_ROBOT, BROWSERCategory based on activity if the IP/UA is a spider or robot, BROWSER otherwise
reasonOne of: FAILED_IP_EXCLUDE, FAILED_UA_INCLUDE, FAILED_UA_EXCLUDE, PASSED_ALLType of failed check if the IP/UA is a spider or robot, PASSED_ALL otherwise
primaryImpactOne of: PAGE_IMPRESSIONS, AD_IMPRESSIONS, PAGE_AND_AD_IMPRESSIONS, UNKNOWN, NONEWhether the spider or robot would affect page impression measurement, ad impression measurement, both or none