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.

FieldHow to get it
userAgentThe User-Agent request header, on your server
webdrivernavigator.webdriver
browserPluginsArray.from(navigator.plugins).map(p => p.name)
screenResolution{ width: screen.width, height: screen.height }
platformnavigator.platform

Form behaviour (signup forms)#

How a form was filled separates people from scripts. Measure timing and counts only, never what was typed.

FieldMeaning
formCompletionTimeMilliseconds from the form appearing to submit
formInteractions{ clicks, keystrokes, corrections, fieldFocusChanges }
copyPasteEventsNumber of paste events
hesitationPatterns[{ field, timeSpent }] time spent in each field, in ms
navigationFlowPages visited before signing up, e.g. ["/", "/pricing", "/signup"]
referralSourceReferrer host, or "direct"