Guides
Send device signals
Collect a device ID and browser details to make decisions sharper.
A stable device ID is the single most useful signal after the email address. It lets isCredible recognise the same browser behind different accounts.
A device ID#
Any stable identifier for the browser or app install works:
- A device fingerprint from a library such as FingerprintJS.
- A random ID you create on first visit and keep in local storage, which is simple and privacy-friendly.
// Browser: create once, reuse on every request
export function getDeviceId() {
let id = localStorage.getItem("device_id");
if (!id) {
id = crypto.randomUUID();
localStorage.setItem("device_id", id);
}
return id;
}Send it from your frontend to your backend with the signup or login request, and pass it on as deviceId.
Browser details#
These help identify automated browsers. All are optional.
| Field | How to get it |
|---|---|
userAgent | The User-Agent request header, on your server |
webdriver | navigator.webdriver |
browserPlugins | Array.from(navigator.plugins).map(p => p.name) |
screenResolution | { width: screen.width, height: screen.height } |
platform | navigator.platform |
Form behaviour (signup forms)#
How a form was filled separates people from scripts. Measure timing and counts only, never what was typed.
| Field | Meaning |
|---|---|
formCompletionTime | Milliseconds from the form appearing to submit |
formInteractions | { clicks, keystrokes, corrections, fieldFocusChanges } |
copyPasteEvents | Number of paste events |
hesitationPatterns | [{ field, timeSpent }] time spent in each field, in ms |
navigationFlow | Pages visited before signing up, e.g. ["/", "/pricing", "/signup"] |
referralSource | Referrer host, or "direct" |