Fruitback Docs
fruitback.com GitHub
All the docs

Docs Guides Identified reporters

Identified reporters

By default a reporter is anonymous, and a name typed into the popover is stored as a claim: a tracker shows it as self-declared. On a site of the console, a reporter is verified in one case: a member of the workspace whose extension is connected, in team mode. The worker sets the flag, and removes it from anything a browser sends.

Do not pass init({ identityToken }) on a site of the console: the worker has no key to verify the token with, and the note is refused. The option exists for a site that already knows who its visitor is: its backend mints a short-lived HS256 JWT (sub, an exp, and optionally name and email) and hands it to the widget, which sends it in the Authorization header and never inside the note. This is what it looks like, for the day a site of the console gets a key:

init({
  endpoint: WORKER_URL,
  clientId: 'site_…',
  // Called before every write, so a token that expired mid-session is refreshed rather than refused.
  identityToken: () => fetch('/api/fruitback-token').then((response) => response.text()),
});

A token that fails to verify is a 401, not a silent downgrade to anonymous: measured on 2026-10-16, a note sent with a token signed by a key of the host answered 401 invalid-identity, and was not kept. The key was the identitySecret of a client of FRUITBACK_CLIENTS, which no worker takes since 0.3.0. Whether a site of the console gets one is not decided.