Most "no events are showing up" reports come down to one of a handful of causes. Work down this list.

No events at all — check GPC first

The #1 cause: GPC silently disables the SDK

respectGPC defaults to true, so when the browser asserts Global Privacy Control the SDK disables itself in init() — no events, no error, nothing in the console. Brave and the DuckDuckGo browser send GPC by default (and some Firefox setups do too), so testing there looks like a dead integration.

Detect it: umap360.isEnabled() returns false after init(). Resolve it: this is usually the correct behaviour — honour the signal. If you have a lawful basis to track regardless, pass respectGPC: false to init(); the SDK then still records the signal as context.gpc but keeps capturing.

The same applies to Do Not Track if you opted in with respectDNT: true.

Events are sent but nothing arrives

  • An adblocker is blocking the request. Privacy extensions and filter lists block requests to analytics endpoints. Check the Network tab for whether the POST /v1-batch request is cancelled/blocked. (Routing the SDK through a same-origin reverse proxy avoids this — ask us if you need it.)
  • A 401 / 403. 401 = the writeKey or apiHost is wrong; 403 = a wrong key type (ingestion needs a write or admin key) or a per-key IP/Origin allowlist that doesn't match. Turn on debug: true in init() to see the SDK's logs. See Authentication.
  • The request 200s but the event isn't in the dashboard. A 200 can still report per-event failures — inspect failed / errors in the response body (e.g. Invalid anonymousId, event name too long). See Errors & rate limits.

Local development

apiHost must be HTTPS in production, but localhost, 127.0.0.1, [::1], 192.168.x.x, 10.x.x.x, and *.local may use http:// — anything else over plain HTTP makes init() throw. The ingestion endpoint allows any origin (Access-Control-Allow-Origin: *), so cross-origin requests from your dev host are fine.

Nothing fires until you flush

With the defaults the first pageview is sent automatically. If you flush() immediately after init() and see nothing, await umap360.ready() first — the initial pageview is deferred until async init settles.

Get a request ID for support

Every response carries an X-Request-ID header (the SDK doesn't surface it, but you can read it in the Network tab — or send your own and it's echoed back). Quote it when you contact support so we can find the exact request. See Response headers.

Next

Last updated 2026-06-10

We use cookies for analytics — to understand how visitors use UMAP360 and improve the product. Essential cookies (session, forms) always run; analytics cookies wait for your call. See cookie policy.