Sat. Apr 25th, 2026

Why fixing 'Direct/None' alone won't reduce GA4's 'unknown…

The topic of Why fixing ‘Direct/None’ alone won’t reduce GA4’s ‘unknown… is currently the subject of lively debate — readers and analysts are keeping a close eye on developments.

This is taking place in a dynamic environment: companies’ decisions and competitors’ reactions can quickly change the picture.

Posted on Apr 25

• Originally published at revenuescope.jp

A friend running a D2C brand told me last week: “I enforced UTMs across every ad and email link to reduce Direct / (none) in GA4. The Direct share dropped, but the total ‘unknown traffic’ in the report barely changed. What did I miss?”

I dug into it. The answer is straightforward — and slightly embarrassing for me, because I had never internalized it cleanly either.

Direct / (none), (not set), Unassigned, and (other). Each is generated at a completely different stage, by a completely different mechanism, and demands a completely different fix. Reducing Direct / (none) on its own does nothing for the other three.

The crucial thing to understand is at which stage GA4 produces each of these values. Mapping it to the three stages from data arrival to display, the relationship snaps into focus.

If you only attack stage 2 (Direct), stages 1 and 3 keep producing their own “unknown” values regardless of how much UTM hygiene you enforce.

Once you accept the 4-category model, the first step shifts from “how do I make the unknown traffic go away?” to “which of the four is the largest, and what does that imply?”

In GA4, the “Acquisition → Traffic acquisition” report with the dimension switched to “Session default channel group” instantly shows the Unassigned share. Switching to “Source / medium” reveals the (not set) and (direct) / (none) shares. The “Pages and screens” report with “Page path” surfaces the (other) share.

This sequence comes from one obvious-in-hindsight observation: each category lives at a different layer, so you can’t usefully diagnose the second-priority one until the first-priority one is contained.

The thing I wish I had understood earlier is this: “unknown traffic” is not a single problem. Treating it as one — building one fix, one alert, one monitoring rule — guarantees that you’ll be busy without making the dashboard meaningfully more honest.

Splitting it into the four categories, mapping each to its own stage and its own owner, is unglamorous work. But it’s the difference between fixing one of the four (and being puzzled why the total didn’t move) and fixing the actual largest leak in your reports.

If you’ve found a different decomposition that works for your team — or you’ve cracked the (other) cardinality problem more elegantly than “exclude query strings from the URL dimension” — I’d genuinely like to hear about it in the comments.

This post is an English re-edit of an article originally published on RevenueScope. Full English version (with references to all four official Google Analytics docs):

I’m building RevenueScope — a revenue-first analytics layer that sits next to GA4 for eCommerce teams. One of the things it does is re-classify sessions trapped in Unassigned and Direct / (none) back to their probable original channel using domain heuristics, so revenue attribution doesn’t silently leak through these four buckets.

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment’s permalink.

For further actions, you may consider blocking this person and/or reporting abuse

DEV Community — A space to discuss and keep up software development and manage your software career

Built on Forem — the open source software that powers DEV and other inclusive communities.

Why it matters

News like this often changes audience expectations and competitors’ plans.

When one player makes a move, others usually react — it is worth reading the event in context.

What to look out for next

The full picture will become clear in time, but the headline already shows the dynamics of the industry.

Further statements and user reactions will add to the story.

Related Post