Skip to main content
Abuse Patterns are a dashboard feature. ShieldLabs computes them server-side by aggregating your historical identify data, then surfaces flagged entities on the dashboard Patterns tab. There are 8 of them, and they answer a different question than the per-request Risk Score.
  • The Risk Score scores a single visit in real time from the signals on that one request. It is delivered by webhook and readable via the History API. See Risk Score and Signals.
  • Abuse Patterns look across many visits over time and flag an entity (a device, an account, a visitor, a local IP) when its linked identifiers cross a threshold. This is correlation over history, not a single-request score.
Abuse Patterns are dashboard only. They are not in the webhook payload and not in the History API response. To consume pattern results, use the dashboard Patterns tab. Per-request decisions in your own code should use the Risk Score and Details from your webhooks.

How a pattern is computed

Each pattern counts linked identifiers for an entity inside a rolling time window, then grades the entity. The identifiers a pattern can group and link are:
IdentifierWhat it is
UserHIDThe customer’s own logged-in account id, passed in via the snippet (hashed, never a raw email).
VisitorIDUUID5(DeviceID + CookieID). Breaks when storage is cleared.
DeviceIDUUID5 of stable browser components. Durable across cookie clear and incognito on the same browser.
CookieIDFirst-party cookie id, minted client-side.
Local IPThe WebRTC-derived local IP. Shown on the dashboard as “Local IP”.
How these IDs are made and how durable each one is lives in Identifiers. When a group fires (for example, one device linked to many accounts), ShieldLabs marks every linked participant in that group at the same level, not just the entity that triggered it. So a flagged device also flags the accounts, visitors, and cookie ids correlated with it.

Grading: Normal, Suspicious, Dangerous

Every pattern grades an entity on three tiers:
GradeMeaning
NormalThe entity has not crossed the Suspicious threshold. It is the implicit baseline. Nothing is recorded.
SuspiciousThe entity crossed the lower threshold for that pattern in its window.
DangerousThe entity crossed the higher threshold. The strongest grade.
Only Suspicious and Dangerous are persisted as detections. Normal is simply the absence of a detection: an entity that never crosses the Suspicious floor is not recorded.
Two rules shape grading:
  • The level never downgrades. Once an entity reaches Dangerous, it stays Dangerous across later worker runs. Only its current count and last-seen time update. The grade does not slide back down.
  • Thresholds adapt to the entity’s Risk Score. A low-risk entity (a low Risk Score) needs to cross a higher count before it flags, while an entity that already looks anonymous or abusive flags sooner. The thresholds are server-side configuration, not a setting you change.
The counts in the pattern descriptions below are illustrative of intent, not guaranteed exact thresholds. The live thresholds are server-side configuration that can change and that adapts to each entity’s Risk Score. Read each pattern as “flags when an entity crosses a Suspicious or Dangerous count in this window,” not as a fixed number you can rely on.

Time windows

Most patterns use a rolling 30-day window by default. Three override it:
WindowPatterns
30 days (default)Many Accounts on One Device, Many Devices on One Account, Many Accounts on One Local IP, Shared Local IP Across Multiple Accounts, Many Devices on One Visitor
24 hoursMultiple Countries on One Account
7 daysChanging IDs on One Account
Recent 7 days vs 30-day historyNew Device and New Country on One Account

When patterns refresh

A background worker recomputes all 8 patterns for each verified domain on a fixed cadence, roughly every 10 minutes, with one run at startup. There is nothing to trigger and no schedule to configure. Newly flagged entities appear on the Patterns tab on the next pass.

The 8 Abuse Patterns

One device linked to many different user accounts.A single physical browser environment (one DeviceID) is associated with several distinct logged-in accounts (UserHIDs) inside the window. The pattern groups by device and counts the distinct accounts behind it.
  • Window: 30 days
  • Grouped by: DeviceID, counting linked UserHIDs (also flags the linked VisitorIDs and CookieIDs)
  • Reads as: Suspicious when a handful of stable accounts share one device, Dangerous when many do
  • Example abuse cases: Multi-accounting, account farms, anti-fraud bypass
One user account used from many different devices.A single account (UserHID) is seen on an unusually large number of distinct devices (DeviceIDs) inside the window. The pattern groups by account and counts the distinct devices.
  • Window: 30 days
  • Grouped by: UserHID, counting linked DeviceIDs (also flags the linked VisitorIDs and CookieIDs)
  • Reads as: Suspicious when an account spreads across several devices, Dangerous when it spreads across many
  • Example abuse cases: Account sharing, account resale, account takeover
Many different accounts connected through the same local (WebRTC) IP.Several distinct accounts share one Local IP inside the window. Because the Local IP is the WebRTC-derived private address, this surfaces accounts that look distinct on the public IP but resolve to the same local network.
  • Window: 30 days
  • Grouped by: Local IP, counting linked UserHIDs (also flags the linked VisitorIDs and DeviceIDs)
  • Reads as: Suspicious when several accounts cluster on one Local IP, Dangerous when many do
  • Example abuse cases: Account farms, multi-accounting, anti-fraud bypass
Accounts share one Local IP while using different devices AND different public IPs.A stronger coordination signal than pattern 3. Here the accounts share a Local IP but each presents a different device and a different public IP, which is hard to explain as a normal shared household or office network.
  • Window: 30 days
  • Grouped by: Local IP, counting linked UserHIDs, requiring more than one distinct device and more than one distinct public IP
  • Reads as: Suspicious when a cluster of such accounts appears, Dangerous when the cluster is large
  • Example abuse cases: Coordinated activity, proxy and VPN sharing, account farms
One account active from many countries in a short window.A single account (UserHID) appears from several different countries inside a tight 24-hour window. The short window is what makes this meaningful: distance and travel time make a normal user unlikely to legitimately appear from many countries in one day.
  • Window: 24 hours
  • Grouped by: UserHID, counting distinct countries (also flags the linked DeviceIDs, VisitorIDs, and CookieIDs)
  • Reads as: Suspicious when an account spans several countries in a day, Dangerous when it spans more
  • Example abuse cases: Account sharing across regions, VPN and proxy abuse, geo bypass
One VisitorID seen on many distinct devices.A single VisitorID appears across an unusual number of distinct DeviceIDs inside the window. Since VisitorID = UUID5(DeviceID + CookieID), one VisitorID resolving to many devices points to fingerprint instability or spoofing. This pattern includes anonymous visitors (it does not require a logged-in account).
  • Window: 30 days
  • Grouped by: VisitorID, counting linked DeviceIDs (also flags the linked UserHIDs and CookieIDs)
  • Reads as: Suspicious when a visitor maps to several devices, Dangerous when it maps to many
  • Example abuse cases: Fingerprint spoofing, anti-detect browsers, automated or scripted activity (surfaced here as a downstream symptom of identity churn)
The same account keeps changing its VisitorID, DeviceID, or both.A single account (UserHID) churns through a high number of distinct VisitorIDs or DeviceIDs inside a 7-day window. ShieldLabs grades on the higher of the two churn counts. Some churn is normal (Safari may not persist cookies past 7 days, some browsers reset daily), so the window and thresholds account for that baseline.
  • Window: 7 days
  • Grouped by: UserHID, counting the greater of distinct DeviceID churn or distinct VisitorID churn
  • Reads as: Suspicious when an account changes IDs repeatedly in a week, Dangerous when it changes them constantly
  • Example abuse cases: Scripted or automated activity, anti-detect browser usage, anti-fraud bypass, an unstable browser environment
An existing account appears from a new device and a new country it has not used before.ShieldLabs compares an account’s recent 7 days against its historical activity over a longer lookback. When the account shows up from a (device, country) combination that is new to it, the pattern flags it. The strength rises if there is no prior history in that country and the account’s old device is still active elsewhere.
  • Window: recent 7 days, compared against a 30-day historical lookback
  • Grouped by: UserHID plus DeviceID, checking new device-and-country combinations against history
  • Reads as: Suspicious on a new combination, Dangerous when several new combinations stack up
  • Example abuse cases: Account takeover, compromised credentials, suspicious login

A note on “bot activity”

Some pattern use cases mention automated, scripted, or “bot” activity. That language describes a downstream symptom these correlation patterns can surface, for example a VisitorID jumping across many devices. ShieldLabs identifies visitors, detects anonymity (VPN, proxy, Tor, anti-detect browsers), and correlates abuse signals across linked identifiers. Read these use cases as the kinds of abuse a pattern can light up. The patterns flag suspicious correlation over history; your own code decides what to do with a flagged entity.

Patterns vs. Risk Score

Use the right tool for the question you are answering.
Risk ScoreAbuse Patterns
ScopeOne visit, in real timeAn entity, across history
DeliveryWebhook + History APIDashboard Patterns tab only
QuestionHow anonymous or masked is this single request?Is this device, account, visitor, or Local IP behaving like coordinated abuse over time?
GradesClean / Low / Medium / High (0-100)Normal / Suspicious / Dangerous
You act on itIn your own code, per requestBy reviewing flagged entities on the dashboard
ShieldLabs surfaces both. Your own application code owns every allow, challenge, review, or block decision. There is no in-product rules engine and no threshold UI: pattern thresholds are server-side configuration, and per-request decisions are yours to write against the Risk Score and Details.

Next steps

Patterns dashboard

See flagged entities, levels, and counts on the dashboard Patterns tab.

Identifiers

How UserHID, VisitorID, DeviceID, CookieID, and the Local IP are made and linked.

Risk Score

The per-request 0-100 score, its bands, and recommended actions.

Acting on the Risk Score

Turn Score plus Details into allow, challenge, review, or block in your own code.