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.

browser_context

Entity
Schema for browser contexts
Schema URIiglu:com.snowplowanalytics.snowplow/browser_context/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked 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
PropertyDescription
viewport
string
Required. Viewport dimensions of the browser. Arrives in the form of WidthxHeight e.g. 1200x900.
documentSize
string
Required. Document dimensions. Arrives in the form of WidthxHeight e.g. 1200x900
resolution
string
Required. Device native resolution. Arrives in the form of WidthxHeight e.g. 1200x900
colorDepth
integer
Required. The number of bits allocated to colors for a pixel in the output device, excluding the alpha channel.
devicePixelRatio
number
Optional. Ratio of the resolution in physical pixels to the resolution in CSS pixels for the current display device.
cookiesEnabled
boolean
Required. 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
Required. 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
Optional. The preferred language of the user, usually the language of the browser UI. RFC 5646 https://datatracker.ietf.org/doc/html/rfc5646.
documentLanguage
string
Optional. The language of the HTML document. RFC 5646 https://datatracker.ietf.org/doc/html/rfc5646.
webdriver
boolean
Optional. Indicates whether the user agent is controlled by automation.
deviceMemory
integer
Optional. Approximate amount of device memory in gigabytes.
hardwareConcurrency
integer
Optional. Number of logical processors available to run threads on the user's computer.
tabId
string
Optional. 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.

mobile_context

Entity
Schema for mobile contexts
Schema URIiglu:com.snowplowanalytics.snowplow/mobile_context/jsonschema/1-0-3
Tracker compatibility
Web: Mobile: Tracked 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
PropertyDescription
osType
string
Required. Operating system type (e.g., ios, tvos, watchos, osx, android)
osVersion
string
Required. The current version of the operating system
deviceManufacturer
string
Required. The manufacturer of the product/hardware
deviceModel
string
Required. The end-user-visible name for the end product
carrier
string
Optional. The carrier of the SIM inserted in the device
networkType
string
Optional. Type of network the device is connected to
Must be one of: mobile, wifi, offline,
networkTechnology
string
Optional. Radio access technology that the device is using
openIdfa
string
Optional. Deprecated tracking identifier for iOS
appleIdfa
string
Optional. Advertising identifier on iOS
appleIdfv
string
Optional. UUID identifier for vendors on iOS
androidIdfa
string
Optional. Advertising identifier on Android
physicalMemory
integer
Optional. Total physical system memory in bytes
systemAvailableMemory
integer
Optional. Available memory on the system in bytes (Android only)
appAvailableMemory
integer
Optional. Amount of memory in bytes available to the current app (iOS only)
batteryLevel
integer
Optional. Remaining battery level as an integer percentage of total battery capacity
batteryState
string
Optional. Battery state for the device
Must be one of: unplugged, charging, full,
lowPowerMode
boolean
Optional. A Boolean indicating whether Low Power Mode is enabled (iOS only)
availableStorage
integer
Optional. Bytes of storage remaining
totalStorage
integer
Optional. Total size of storage in bytes
isPortrait
boolean
Optional. A Boolean indicating whether the device orientation is portrait (either upright or upside down)
resolution
string
Optional. Screen resolution in pixels. Arrives in the form of WIDTHxHEIGHT (e.g., 1200x900). Doesn't change when device orientation changes
scale
number
Optional. 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
Optional. System language currently used on the device (ISO 639)
appSetId
string
Optional. 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)
appSetIdScope
string
Optional. 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)
Must be one of: app, developer,

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.).

yauaa_context

Entity
Schema for a context generated by the YAUAA enrichment after parsing the user agent
Schema URIiglu:nl.basjes/yauaa_context/jsonschema/1-0-4
Tracker compatibility
Web: Mobile: Tracked 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
PropertyDescription
deviceClass
Required. See https://yauaa.basjes.nl/README-Output.html
Must be one 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 Imitator
deviceName
string
Optional. Example: Google Nexus 6
deviceBrand
string
Optional. Example: Google
deviceCpu
string
Optional.
deviceCpuBits
string
Optional.
deviceFirmwareVersion
string
Optional.
deviceVersion
string
Optional.
operatingSystemClass
string
Optional. See https://yauaa.basjes.nl/README-Output.html
Must be one of: Desktop, Mobile, Cloud, Embedded, Game Console, Hacker, Anonymized, Unknown
operatingSystemName
string
Optional. Examples: Linux, Android.
operatingSystemVersion
string
Optional.
operatingSystemNameVersion
string
Optional.
operatingSystemVersionBuild
string
Optional.
layoutEngineClass
string
Optional. See https://yauaa.basjes.nl/README-Output.html
Must be one of: Browser, Mobile App, Hacker, Robot, Unknown, Special, Cloud, eReader
layoutEngineName
string
Optional.
layoutEngineVersion
string
Optional.
layoutEngineVersionMajor
string
Optional.
layoutEngineNameVersion
string
Optional.
layoutEngineNameVersionMajor
string
Optional.
layoutEngineBuild
string
Optional.
agentClass
string
Optional. See https://yauaa.basjes.nl/README-Output.html
Must be one of: Browser, Browser Webview, Mobile App, Robot, Robot Mobile, Cloud Application, Email Client, Voice, Special, Testclient, Hacker, Unknown, Desktop App, eReader
agentName
string
Optional. Example: Chrome.
agentVersion
string
Optional.
agentVersionMajor
string
Optional.
agentNameVersion
string
Optional.
agentNameVersionMajor
string
Optional.
agentBuild
string
Optional.
agentLanguage
string
Optional.
agentLanguageCode
string
Optional.
agentInformationEmail
string
Optional.
agentInformationUrl
string
Optional.
agentSecurity
string
Optional.
Must be one of: Weak security, Strong security, Unknown, Hacker, No security
agentUuid
string
Optional.
webviewAppName
string
Optional.
webviewAppVersion
string
Optional.
webviewAppVersionMajor
string
Optional.
webviewAppNameVersionMajor
string
Optional.
facebookCarrier
string
Optional.
facebookDeviceClass
string
Optional.
facebookDeviceName
string
Optional.
facebookDeviceVersion
string
Optional.
facebookFBOP
string
Optional.
facebookFBSS
string
Optional.
facebookOperatingSystemName
string
Optional.
facebookOperatingSystemVersion
string
Optional.
anonymized
string
Optional.
hackerAttackVector
string
Optional.
hackerToolkit
string
Optional.
koboAffiliate
string
Optional.
koboPlatformId
string
Optional.
iECompatibilityVersion
string
Optional.
iECompatibilityVersionMajor
string
Optional.
iECompatibilityNameVersion
string
Optional.
iECompatibilityNameVersionMajor
string
Optional.
carrier
string
Optional.
gSAInstallationID
string
Optional.
networkType
string
Optional.
operatingSystemNameVersionMajor
string
Optional.
operatingSystemVersionMajor
string
Optional.
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.

spiders_and_robots

Entity
Schema for a context generated by the IAB Spiders & Robots enrichment
Schema URIiglu:com.iab.snowplow/spiders_and_robots/jsonschema/1-0-0
Tracker compatibility
Web: Mobile: Tracked automatically:
Example
{
"category": "BROWSER",
"primaryImpact": null,
"reason": "PASSED_ALL",
"spiderOrRobot": false
}
Schema
PropertyDescription
spiderOrRobot
boolean
Required. true if the IP address or user agent checked against the list is a spider or robot, false otherwise
category
Required. Category based on activity if the IP/UA is a spider or robot, BROWSER otherwise
Must be one of: SPIDER_OR_ROBOT, ACTIVE_SPIDER_OR_ROBOT, INACTIVE_SPIDER_OR_ROBOT, BROWSER
reason
Required. Type of failed check if the IP/UA is a spider or robot, PASSED_ALL otherwise
Must be one of: FAILED_IP_EXCLUDE, FAILED_UA_INCLUDE, FAILED_UA_EXCLUDE, PASSED_ALL
primaryImpact
Required. Whether the spider or robot would affect page impression measurement, ad impression measurement, both or none
Must be one of: PAGE_IMPRESSIONS, AD_IMPRESSIONS, PAGE_AND_AD_IMPRESSIONS, UNKNOWN, NONE