The identifier model
Every identify call returns six identifiers. Each one answers a different question, from “this exact call” up to “this known account.”| Identifier | How it is made | Persistence |
|---|---|---|
| RequestID | A client-generated UUID, one per identify call. It joins the snapshot, the webhook, and History together. | Unique per call. |
| SessionID | A client UUID for the current visit, scoped to a short browsing window. | Per visit or tab. |
| CookieID | A first-party UUID minted in the browser and stored in cookies and site storage. | Lost when cookies or site storage are cleared. |
| DeviceID | Server-derived from dozens of stable browser and device characteristics. Not stored in the browser. | Durable. Survives cleared cookies, incognito, and IP rotation within the same browser. Browser-bound. |
| VisitorID | Server-derived from the DeviceID combined with the CookieID. | Resets when cookies are cleared. Many VisitorIDs can map to one DeviceID. |
| UserHID | Your own hashed account id, passed into the snippet. ShieldLabs never derives it. | Whatever you set. |
RequestID, SessionID, and CookieID are minted in the browser. DeviceID and VisitorID are computed on the server, so the browser never sees them. You correlate everything by RequestID.
Why DeviceID is durable
DeviceID is the identifier most analytics tools cannot match, because it is derived, not stored. The server computes it from dozens of stable browser and device characteristics. The same browser environment always produces the same DeviceID. Because nothing about it lives in the cookie, it holds when cookie-based tracking breaks:- Survives cleared cookies. Clearing cookies removes the CookieID, not the identity.
- Survives incognito. A private window is the same browser on the same machine.
- Survives IP rotation. Switching networks or using a VPN does not change the identity.
Why VisitorID resets
VisitorID is built from two inputs: the DeviceID and the CookieID. The DeviceID half is durable. The CookieID half is not. So when a visitor clears cookies:- The CookieID is gone, and the browser mints a fresh one on the next visit.
- The server combines the same DeviceID with the new CookieID.
- The result is a new VisitorID.
DeviceID for the most stable handle on a returning person within a browser. Use VisitorID for the cookie-scoped view, and UserHID once a person signs in.
UserHID is your hashed account id
UserHID is the only identifier you control. It is your own account id, passed into the snippet so ShieldLabs can tie anonymous activity to a known account. Pass a hashed or pseudonymous value, and apply the same transform every time so the same account always maps to the sameUserHID.
checkAnonymous() and the UserHID is left unset. See the snippet setup for the full method list.
Device Intelligence is part of identification
The output of identification is not just an ID. It is the identity plus the signals around that device, delivered together in one response.| You get | What it is |
|---|---|
| DeviceID | The persistent, browser-bound identity described above. |
| Risk Score (0-100) | An explainable score with a Details array naming every signal that fired. See Risk Scoring. |
| Signals | The anonymity and mismatch signals behind the score. See Anonymity Signals. |
Example response
A realistic webhook body. The six identifiers arrive alongside the Risk Score and theDetails that explain it.
DeviceID and VisitorID are the server-derived identity. UserHID is your hashed account id, echoed back. For every field and its types, see API models.
Next steps
Anonymity Signals
VPN, proxy, Tor, Privacy Relay, and the mismatch signals around each device.
Risk Scoring
The explainable 0 to 100 score and its bands: Clean, Low, Medium, High.
Glossary
Every identifier and term in one place.