Verify

Confirm a real session arrived before you build anything on top of it.

The recorder batches events and posts them in the background, so "no errors in the console" is not proof that anything landed. Check the product instead.

Load your app, then open Replays

Visit a page in your app and click around for a few seconds. Then open Replays in Human Behavior. A new session appears at the top of the list with its duration, device, and country.

Session list with a recent session at the top
One row per session, newest first.

That row is the whole proof: it means the key was valid, the recorder started, and a batch reached ingestion.

Give it more than a few seconds

By default the SDK waits until a session is at least 5 seconds long before sending anything, so a page you open and immediately close may never appear. That is minimumDurationMilliseconds, and you can set it to 0 while testing:

HumanBehaviorTracker.init(apiKey, { minimumDurationMilliseconds: 0 });

If nothing shows up

Work down this list — in practice it is almost always the first two.

  • The key is undefined in the browser. Log it at the call site. If it is empty, the variable is missing the public prefix your bundler requires. See the table on Install.
  • Init ran on the server, not the client. In SSR frameworks the tracker logs that it initialized in a server environment and disables session tracking. The initializer has to be in client code.
  • The session was too short. Set minimumDurationMilliseconds: 0 as above.
  • You are looking at the wrong project or environment. A key belongs to one environment; check you are reading the same one in Settings → Environments.
  • An ad blocker dropped the requests. Check the Network tab for blocked requests to our ingestion host.

To see what the SDK itself thinks is happening, turn its logging up:

HumanBehaviorTracker.init(apiKey, { logLevel: "debug" });

Once a session is landing, attach identity and your own events.