Identifiers
ShieldLabs uses several identifiers in every webhook payload. Each tracks a different dimension of the user session.RequestID
Scope: Single check The
RequestID identifies one specific fingerprint submission. Every call to checkAnonymous() or checkAuthenticatedUser() generates a new RequestID.
Use RequestID to:
- Correlate the browser callback with the incoming webhook
- Look up a specific session in the dashboard
- Query via Pub API:
debug/request_id/{uuid}
SessionID
Scope: Browser tab session (~10 minutes) Stored in
sessionStorage. A new SessionID is created when the session expires or forceCheck* clears storage.
CookieID
Scope: Persistent visitor Generated on first visit and stored in:
localStoragekeyvisitorID- First-party cookie
visitorID(2-year expiry,SameSite=Lax)
DeviceID
Scope: Device hardware + browser environment Computed server-side from stable MixVisit fingerprint components (canvas, WebGL, fonts, screen, navigator, etc.) using UUID v5 (SHA-1):
- Stable across sessions on the same device/profile
- Changes if hardware or browser profile changes significantly
- Anti-detect browsers may cycle DeviceIDs when randomizing fingerprint components
VisitorID
Scope: Device + cookie pair Derived server-side from the pair
(DeviceID, CookieID):
UserHID
Scope: Authenticated user The value you pass to
checkAuthenticatedUser(). Must be a stable, hashed identifier — never raw user ID or email.
"anonymous"whencheckAnonymous()is used- Query all sessions:
history/user_hid/{hash}
Summary
| Identifier | Tracks | Changes when |
|---|---|---|
RequestID | Single check | Every check* call |
SessionID | Browser session | ~10 min TTL or forceCheck* |
CookieID | Visitor cookie | Site data cleared |
DeviceID | Fingerprint | Hardware/profile change |
VisitorID | Device + cookie pair | DeviceID or CookieID changes |
UserHID | Your user | You pass a different value |
Querying by identifier
Base URL:https://account.shieldlabs.ai