Skip to main content
This page describes the new analytics dashboard, which is rolling out to all accounts.
Integration is where you connect a site to ShieldLabs. It has four tabs: Install, Domains, API keys and Webhooks. Pick the domain you are working on at the top of the screen; the period there sets the identification counts and key usage shown on this screen. Each section below maps one tab and links the setup page with the full steps.

Install

Install shows the snippet for the selected domain, with its Public Key already in the import URL.
  • Pick your stack to get the snippet in the form your platform expects.
  • Anonymous visitors: the snippet with checkAnonymous(), for pages without sign-in.
  • Authenticated users: the snippet with checkAuthenticatedUser(userHashedId). Pass a hashed User HID with checkAuthenticatedUser on every signed-in page. Users, account-level risk and all four High-Risk Events are built on it. Use a hashed or pseudonymous ID, never a raw internal ID.
  • Snippet methods: checkAnonymous, checkAuthenticatedUser, forceCheckAnonymous and forceCheckAuthenticatedUser.
checkAnonymous and checkAuthenticatedUser run at most one identification every five minutes for the same user in the same browser, shared across open tabs. A call inside that window posts nothing, counts nothing, and its onInitialized handler receives { status: "not_initialized" }. forceCheckAnonymous and forceCheckAuthenticatedUser run an identification every time, keep the current Session ID and restart the five-minute window. The banner under the snippets shows whether the domain is reporting: it says identifications are arriving, with the time of the last one, once they do; Pending, with Recheck, until the first one arrives; Paused, with Open Domains, while you have paused the domain; and Frozen while the domain is at its rate limit. If your site sends a Content-Security-Policy header, allow the hosts listed on Content Security Policy. Full steps: Install the snippet.
Integration > Install for example.com in the analytics dashboard: the stack picker with JavaScript selected, the Anonymous visitors and Authenticated users snippet cards (each expands to its snippet), the Snippet methods table with checkAnonymous, checkAuthenticatedUser, forceCheckAnonymous and forceCheckAuthenticatedUser, and the line Identifications are arriving from example.com. Last identification 2 minutes ago.Integration > Install for example.com in the analytics dashboard in the dark theme: the stack picker with JavaScript selected, the Anonymous visitors and Authenticated users snippet cards (each expands to its snippet), the Snippet methods table with checkAnonymous, checkAuthenticatedUser, forceCheckAnonymous and forceCheckAuthenticatedUser, and the line Identifications are arriving from example.com. Last identification 2 minutes ago.

Integration > Install in the analytics dashboard: pick your stack, open the snippet for anonymous visitors or authenticated users, and check that identifications are arriving.

Install with AI, marked Alternative, gives the same install as a ready-made instruction for your AI assistant: your domain and Public Key, the snippets for anonymous visitors and signed-in users, the Content-Security-Policy header, where the snippet goes and how to check the install. Copy it with the copy button on the card or with Copy installation guide at the top of the tab; Show the whole prompt expands it. Build with AI has prompts for the rest of the integration.
Integration > Install for example.com in the analytics dashboard: Copy installation guide at the top, the stack picker with JavaScript selected, the Anonymous visitors, Authenticated users and Content-Security-Policy cards collapsed, and the Install with AI card (Alternative) open, with Open in Cursor, a copy button, Show the whole prompt and the start of the prompt: # Install ShieldLabs on example.com, Integrate ShieldLabs into our JavaScript app with the CDN snippet below.Integration > Install for example.com in the analytics dashboard in the dark theme: Copy installation guide at the top, the stack picker with JavaScript selected, the Anonymous visitors, Authenticated users and Content-Security-Policy cards collapsed, and the Install with AI card (Alternative) open, with Open in Cursor, a copy button, Show the whole prompt and the start of the prompt: # Install ShieldLabs on example.com, Integrate ShieldLabs into our JavaScript app with the CDN snippet below.

Install with AI in the analytics dashboard.

Domains

Domains lists every domain on your account with its Status, its identifications in the period and its Subdomains setting. Subdomains reads Accepted when the domain also takes traffic from its subdomains, and Exact host when it takes only its own host. Each domain can be paused, resumed or deleted; deleting asks you to type the domain back and keeps its identification history. Add domain adds a host; at your plan’s limit the button reads Upgrade plan to add a domain. Your plan sets how many domains you can add: Free 1, Starter 1, Growth 3, Scale 5. All your domains share one account quota. Full steps: Domains.
Integration > Domains in the analytics dashboard: example.com Reporting with 11,020 identifications in the last 7 days and subdomains Accepted, dev.example.com Reporting with 1,460 and Exact host, shop.example.com Paused with 0 and Exact host, and Upgrade plan to add a domain.Integration > Domains in the analytics dashboard in the dark theme: example.com Reporting with 11,020 identifications in the last 7 days and subdomains Accepted, dev.example.com Reporting with 1,460 and Exact host, shop.example.com Paused with 0 and Exact host, and Upgrade plan to add a domain.

Integration > Domains in the analytics dashboard: each domain's status and subdomain setting.

API keys

API keys shows one key type at a time: pick Public Key, Private API Key or Secret Key, and each domain in scope gets a row with its key, when it was last used and its usage in the period. The Public Key shows in full and the other two are masked. The copy button copies the full key. Rotate replaces it, and the previous key stops working at once, so update your snippet or server client first. Full steps: API keys.
Integration > API keys for example.com in the analytics dashboard: tabs Public Key, Private API Key (selected) and Secret Key; the Private API Key masked after its first characters, sec_6eo9l8 followed by dots; Active, last used 14m ago, 7d usage 11,020, a copy button and the Rotate icon.Integration > API keys for example.com in the analytics dashboard in the dark theme: tabs Public Key, Private API Key (selected) and Secret Key; the Private API Key masked after its first characters, sec_6eo9l8 followed by dots; Active, last used 14m ago, 7d usage 11,020, a copy button and the Rotate icon.

Integration > API keys in the analytics dashboard: one domain's Private API Key, masked, with tabs for Public Key, Private API Key and Secret Key.

Webhooks

Webhooks lists your endpoints with their signing secret, status and last delivery. Add endpoint registers an HTTPS URL for a domain. Each domain takes up to 10 endpoints, and each endpoint gets its own whsec_ signing secret.
  • Verify sends a webhook.ping delivery. A 2xx answer verifies the endpoint.
  • Test sends a sample identification.scored delivery and shows the HTTP status and how long it took.
  • Edit, Rotate secret, pause or resume deliveries, and Delete manage the endpoint.
An endpoint moves through the statuses Pending, Waiting for the first event, Delivering, Failing, Verification failed and Paused. Verify a signature shows how to check the X-Shield-Signature header, sha256= followed by the HMAC-SHA256 of the raw request body, in Node.js, Python, Go, PHP, Ruby and C#. Full steps: Webhooks.
Integration > Webhooks for example.com in the analytics dashboard: 2 endpoints (limit 10), each Delivering with a masked whsec_ signing secret and its last delivery 2m ago; row action icons Pause, Edit, Test, Verify, Rotate secret and Delete; the Test result Delivered HTTP 200 in 184 ms; and the Verify a signature sample for Node.js.Integration > Webhooks for example.com in the analytics dashboard in the dark theme: 2 endpoints (limit 10), each Delivering with a masked whsec_ signing secret and its last delivery 2m ago; row action icons Pause, Edit, Test, Verify, Rotate secret and Delete; the Test result Delivered HTTP 200 in 184 ms; and the Verify a signature sample for Node.js.

Integration > Webhooks in the analytics dashboard: each endpoint has its own signing secret, Verify and Test.

Next steps

Install the snippet

Both snippets, the four methods and framework examples.

Identify signed-in users

The User HID that users and High-Risk Events are built on.

Domains

Add, pause and scope your domains.

API keys

What each key authenticates and where it belongs.

Webhooks

Register an endpoint and verify every delivery.

Read one account in code

Every identification of one account through the History API.