Start · Getting started

Introduction

What HideGuard measures, what it answers, and what it does not do.

HideGuard measures the browser on your page, the address it arrives from, and how it behaves. The result is a verdict your backend can act on: allow, challenge or block.

The question it answers#

One question, asked where something of value changes hands: is this visit trustworthy?

The answer is the sum of several independent measurements. Whether the browser has been modified, whether the address is a proxy or a datacenter, what this browser's payment history looks like. Each carries its own weight, and together they make a score from 0 to 100.

ScoreVerdictMeaning
0-34allowNothing rose to suspicion
35-69challengeA signal, not enough to refuse on
70-100blockEnough evidence, from independent causes

The arithmetic is in Verdict and score.

Three limits#

The verdict is a weighted recommendation rather than an action. Your page is still where the refusal happens, because only you know what that order is worth and what a wrong refusal costs.

A check that could not run gives unmeasured. It is never rounded to measured and fine. That rule shapes every number on every screen and is worth reading on its own: Measured and unmeasured.

What gets stored is the raw signals. When the scoring model changes, all of history is re-scored under the new one. A record saying "this person is a bot" could never be re-scored.

A check that fired is a signal. A verdict wants several of them, from causes independent of each other, so one signal alone rarely reaches block.

The two halves of an integration#

The browser SDK is one <script> tag on your page. It measures, posts, receives a verdict, and sets an fpc_vid cookie on your own domain so your backend knows which browser is asking.

The server-side check is your backend calling POST /api/v1/verdict before accepting anything important. This is the half that can refuse. The verdict the SDK hands the page is advisory, and a scripted client never runs it at all.

Start at Quickstart, or read How it works if you would rather understand the path of the data before writing any code.