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-batchrequest is cancelled/blocked. (Routing the SDK through a same-origin reverse proxy avoids this — ask us if you need it.) - A
401/403.401= thewriteKeyorapiHostis 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 ondebug: trueininit()to see the SDK's logs. See Authentication. - The request
200s but the event isn't in the dashboard. A200can still report per-event failures — inspectfailed/errorsin 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
- Installation — setup + the verify step.
- API reference — config, methods, and delivery behaviour.
- Errors & rate limits — status codes and the error envelope.
Last updated 2026-06-10