GA4 diagnostics

Why GA4 is full of "(not set)" (and what each one means)

"(not set)" is GA4's way of saying "I was asked for a value and didn't have one". The trap is that it means something different in every report, so treating it as one problem gets you nowhere. Here is how to read it per context.

It is a placeholder, not an error

GA4 shows (not set) whenever a dimension had no value at the moment it was needed. The cause depends entirely on which dimension you are looking at, so the fix does too. Work out the context first.

The common ones, decoded

Which ones to ignore

A small slice of (not set) is normal and unavoidable: privacy tools, very fast bounces, and timing races will always produce a few. If it is a rounding error, leave it. It is worth investigating when it is a large, growing share of an important dimension, because then it is masking real traffic or revenue.

How to actually fix it

Because the root cause differs per dimension, the fix is diagnosis: when does the GA4 tag fire relative to consent and redirects, is the data layer populated before the event, and is the page a single-page app that mutates after load. That is exactly what an audit isolates in your live setup.

Want us to check your tracking in 10 seconds?

Pop in your domain and we will show you what is firing, what is not, and where data is leaking. Free, no signup.

Check my tracking free

Get a plain-English audit

We check your live GA4, Google Tag Manager and consent setup by hand and tell you exactly what is wrong. The audit comes off any build.

See how it works & pricing

Datahound are analytics and ad-tracking specialists. We fix broken GA4, Google Tag Manager and server-side tracking so every sale, form and call gets counted. Back to datahound.agency · All tracking guides · Unassigned traffic in GA4