Response device
object
![Device](/assets/images/device-6fdd86fae5e24255a730ba3131c7d7b4.png)
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
Property | Description | Type |
---|---|---|
success | Set to true if the device lookup operation is successful. | boolean |
valid | Set to true where the probe_id is found. null where success is false . | boolean or null |
probe_id | The probe_id for this event. Exactly 22 characters long. | string |
probe_created_at | The datetime in ISO 8601 format that the probe was created at. e.g. 2024-05-20 09:10:27.656374 . | string |
probe_mins_elapsed | Number of minutes elapsed since the probe was created. Rounded to the nearest minute. See integrity below for more information about this. | integer |
probe_unique | Set to true where the probe_id hasn't been seen before. See integrity below for more information about this. | boolean |
probe_ip_match | Set 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_suspect | Set to true where probe_mins_elapsed is more than 60, or probe_unique is false , or probe_ip_match is false . | boolean |
device_id | The unique ID for this device. Exactly 22 characters long. | string |
ipv4 | The IPv4 address of the device. Or null where not detected. | string or null |
ipv6 | The IPv6 address of the device. Or null where not detected. | string or null |
browser_name | The type of web browser, inferred from device characteristics. See browser support below for more information. | string |
private_browsing | true where the browser is inferred to be in private browsing (incognito) mode. | boolean |
headless_browser | true where the browser is found to be automated, i.e. a headless browser such as Selenium or Phantom. | boolean |
platform | Hardware platform that the device reports. e.g. "MacIntel". Or null where it is not available. | string or null |
vendor | Vendor that the device reports. e.g. "Google Inc.". Or null where it is not available. | string or null |
memory | Total memory reported by the device. e.g. "8". Or null where it is not available. | integer or null |
hardware_concurrency | Hardware concurrency reported by the device. e.g. "10". Or null where it is not available. | integer or null |
language | Preferred language that the browser is set to. e.g. "en-GB". Or null where it is not available. | string or null |
screen_resolution | Screen resolution reported by the device. e.g. "3440x1440". Or null where it is not available. | string or null |
timezone | The timezone in the tz database format, in the form "Area/Location", e.g. "America/New_York", as reported by the browser. | string |
timezone_mismatch | true where the timezone of the device is an approximate match for the timezone of the IP address. | boolean |
bot | Indicates 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 |
anonymous | true if either the device is connected through a VPN, Tor, proxy, etc. or timezone_mismatch is true . | boolean |
ua | The full user agent header string reported by the device's browser. | string |
ua_browser_family | The browser family extracted from the UA header. e.g. Chrome. | string |
ua_browser_version | The browser version extracted from the UA header. e.g. 124.0.0. | string |
ua_os_family | The OS family extracted from the UA header. e.g. iOS. | string |
ua_os_version | The OS version extracted from the UA header. e.g. 17.1.1. | string |
ua_device_brand | The brand of device extracted from the UA header. e.g. Apple. | string |
ua_device_family | The device family extracted from the UA header. e.g. iPhone. | string |
ua_device_model | The device model extracted from the UA header. e.g. XS. | string |
ua_mobile | true where the user agent implies the device is mobile. | boolean |
ua_tablet | true where the user agent implies the device is a tablet. | boolean |
ua_touch_capable | true where the user agent implies the device is touch capable. | boolean |
ua_pc | true where the user agent implies the device is a PC/laptop. | boolean |
ua_crawler | true where the user agent is that of a good bot (i.e. search engine crawler). | boolean |
first_seen | The datetime in ISO 8601 format that the device was first seen. e.g. 2024-05-20 09:10:27.656374 . | string |
last_seen | The datetime in ISO 8601 format that the device was last seen. e.g. 2024-05-20 09:10:27.656374 . | string |
seen_hour | Number of times events have been seen from this device since the start of the previous hour. | integer |
seen_day | Number of times events have been seen from this device since yesterday. | integer |
seen_month | Number of times events have been seen from this device since the start of last month. | integer |
seen_quarter | Number of times events have been seen from this device since the start of the last calendar quarter. | integer |
unique_networks | Number of unique networks (partial IP address to network level) associated with this device. | integer |
unique_emails | Number of unique normalized email addresses associated with this device. | integer |
unique_phone_numbers | Number of unique phone numbers associated with this device. | integer |
unique_postal_codes | Number 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.
Browser | Platform | Supported |
---|---|---|
Safari | iOS | Yes |
Safari | macOS | Yes |
Chrome/Chromium | All | Yes |
Edge | All | Yes |
Firefox | All | Yes |
Brave | All | Yes |
MSIE | Windows | No |
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 aprobe_id
being generated, to when it is expected to be redeemed in an event. This property is set to the number of minutes since theprobe_id
was created. Higher numbers indicate possible tampering.probe_unique
: A newprobe_id
is generated by the agent every time the page is loaded, so it's very uncommon for the sameprobe_id
to be redeemed twice. As long as the probe is unique, this value is set totrue
. Afalse
value here indicates that theprobe_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 totrue
. This can sometimes show asfalse
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.
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.