Skip to main content

Response device object

Device

The device object provides details of the device that the person is using. The data is collected through the agent on the form or website where the event originates.

The device object is always available in the result where a probe_id field is sent in the request.

If the lookup is unsuccessful, success will be false. If the probe ID doesn't exist, valid will be false. The success and valid properties are always present, but other properties only exist where success and valid are true.

Examples

Unsuccessful:

{
...
"device": {
"success": false,
"valid": null
},
...
}

Invalid probe ID:

{
...
"device": {
"success": true,
"valid": false
},
...
}

Successful:

{
...
"device": {
"success": true,
"valid": true,
"probe_id": "ctwCYFyAUteNpsBgAw7xYL",
"probe_created_at": "2024-05-20 09:10:27.656374",
"probe_mins_elapsed": 10,
"probe_unique": true,
"probe_ip_match": true,
"probe_suspect": false,
"device_id": "kMZNtJAbyZtFBSZesnNnwg",
"ipv4": "204.158.96.40",
"ipv6": "2041:0000:140f::875b:131b",
"browser_name": "Chrome",
"private_browsing": false,
"headless_browser": false,
"platform": "MacIntel",
"vendor": "Google Inc.",
"memory": 8,
"hardware_concurrency": 10,
"language": "en-GB",
"screen_resolution": "3440x1440",
"timezone": "Europe/London",
"timezone_mismatch": false,
"bot": false,
"anonymous": false,
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"ua_browser_family": "Chrome",
"ua_browser_version": "124.0.0",
"ua_os_family": "Mac OS X",
"ua_os_version": "10.15.7",
"ua_device_family": "Mac",
"ua_device_brand": "Apple",
"ua_device_model": "Mac",
"ua_mobile": false,
"ua_tablet": false,
"ua_touch_capable": false,
"ua_pc": true,
"ua_crawler": false,
"first_seen": "2024-05-20 09:10:27.832895",
"last_seen": "2024-05-20 09:18:05.526443",
"seen_hour": 1,
"seen_day": 1,
"seen_month": 1,
"seen_quarter": 1,
"unique_networks": 1,
"unique_emails": 1,
"unique_phone_numbers": 1,
"unique_postal_codes": 1
},
...
}

Properties

PropertyDescriptionType
successSet to true if the device lookup operation is successful.boolean
validSet to true where the probe_id is found. null where success is false.boolean or null
probe_idThe probe_id for this event. Exactly 22 characters long.string
probe_created_atThe datetime in ISO 8601 format that the probe was created at. e.g. 2024-05-20 09:10:27.656374.string
probe_mins_elapsedNumber of minutes elapsed since the probe was created. Rounded to the nearest minute. See integrity below for more information about this.integer
probe_uniqueSet to true where the probe_id hasn't been seen before. See integrity below for more information about this.boolean
probe_ip_matchSet to true where a match is found between the IP supplied in the event and an IP collected through the agent. Set to null where no IP address is supplied in the event. See integrity below for more information about this.boolean or null
probe_suspectSet to true where probe_mins_elapsed is more than 60, or probe_unique is false, or probe_ip_match is false.boolean
device_idThe unique ID for this device. Exactly 22 characters long.string
ipv4The IPv4 address of the device. Or null where not detected.string or null
ipv6The IPv6 address of the device. Or null where not detected.string or null
browser_nameThe type of web browser, inferred from device characteristics. See browser support below for more information.string
private_browsingtrue where the browser is inferred to be in private browsing (incognito) mode.boolean
headless_browsertrue where the browser is found to be automated, i.e. a headless browser such as Selenium or Phantom.boolean
platformHardware platform that the device reports. e.g. "MacIntel". Or null where it is not available.string or null
vendorVendor that the device reports. e.g. "Google Inc.". Or null where it is not available.string or null
memoryTotal memory reported by the device. e.g. "8". Or null where it is not available.integer or null
hardware_concurrencyHardware concurrency reported by the device. e.g. "10". Or null where it is not available.integer or null
languagePreferred language that the browser is set to. e.g. "en-GB". Or null where it is not available.string or null
screen_resolutionScreen resolution reported by the device. e.g. "3440x1440". Or null where it is not available.string or null
timezoneThe timezone in the tz database format, in the form "Area/Location", e.g. "America/New_York", as reported by the browser.string
timezone_mismatchtrue where the timezone of the device is an approximate match for the timezone of the IP address.boolean
botIndicates whether the connection is detected as a bot (i.e. something other than a web browser). Search engine crawlers and similar 'good bots' show as false.boolean
anonymoustrue if either the device is connected through a VPN, Tor, proxy, etc. or timezone_mismatch is true.boolean
uaThe full user agent header string reported by the device's browser.string
ua_browser_familyThe browser family extracted from the UA header. e.g. Chrome.string
ua_browser_versionThe browser version extracted from the UA header. e.g. 124.0.0.string
ua_os_familyThe OS family extracted from the UA header. e.g. iOS.string
ua_os_versionThe OS version extracted from the UA header. e.g. 17.1.1.string
ua_device_brandThe brand of device extracted from the UA header. e.g. Apple.string
ua_device_familyThe device family extracted from the UA header. e.g. iPhone.string
ua_device_modelThe device model extracted from the UA header. e.g. XS.string
ua_mobiletrue where the user agent implies the device is mobile.boolean
ua_tablettrue where the user agent implies the device is a tablet.boolean
ua_touch_capabletrue where the user agent implies the device is touch capable.boolean
ua_pctrue where the user agent implies the device is a PC/laptop.boolean
ua_crawlertrue where the user agent is that of a good bot (i.e. search engine crawler).boolean
first_seenThe datetime in ISO 8601 format that the device was first seen. e.g. 2024-05-20 09:10:27.656374.string
last_seenThe datetime in ISO 8601 format that the device was last seen. e.g. 2024-05-20 09:10:27.656374.string
seen_hourNumber of times events have been seen from this device since the start of the previous hour.integer
seen_dayNumber of times events have been seen from this device since yesterday.integer
seen_monthNumber of times events have been seen from this device since the start of last month.integer
seen_quarterNumber of times events have been seen from this device since the start of the last calendar quarter.integer
unique_networksNumber of unique networks (partial IP address to network level) associated with this device.integer
unique_emailsNumber of unique normalized email addresses associated with this device.integer
unique_phone_numbersNumber of unique phone numbers associated with this device.integer
unique_postal_codesNumber of unique postal codes associated with this device.integer

Browser support

Browser support for type and private mode detection changes over time, but the table below shows the current level of support.

BrowserPlatformSupported
SafariiOSYes
SafarimacOSYes
Chrome/ChromiumAllYes
EdgeAllYes
FirefoxAllYes
BraveAllYes
MSIEWindowsNo

Integrity

Since the device data is collected on the client-side from data provided by the browser, it's not possible to 100% guarantee the integrity of the information provided in it.

However, it is possible to do some cross-checks to ensure that the probability of the probe being legitimate is high.

Hitprobe provides the result of these checks as flags within the device object:

  • probe_elapsed_mins: There is a limited time between a probe_id being generated, to when it is expected to be redeemed in an event. This property is set to the number of minutes since the probe_id was created. Higher numbers indicate possible tampering.
  • probe_unique: A new probe_id is generated by the agent every time the page is loaded, so it's very uncommon for the same probe_id to be redeemed twice. As long as the probe is unique, this value is set to true. A false value here indicates that the probe_id has been used in another event and if this happens often it may indicate a problem.
  • probe_ip_match: The IP address detected by the agent, and the IP address that the event finally reaches the server from, usually match. If they do, this flag is set to true. This can sometimes show as false for legitimate events, especially where the device is connecting on IPv6. However, it can indicate that the probe was created on a different device than the device that's sending it.

You can choose to take action on an event when the device data may be compromised using the Suspect probe smart rule. The default setting is to queue it for review.

note

If the probe_id is not found or was generated on a different site than the site associated with the event, the valid property will be set to false.

Please reach out to Hitprobe support for advice on events where the probe's integrity is compromised.