Clarvivo

Free tool by Clarvivo · no login

Find out why your sessions land in Unassigned

Upload a GA4 traffic acquisition export. We measure how much traffic GA4 could not classify, and tell you whether it behaves like real campaign traffic that was simply mistagged.

GA4 traffic-acquisition export

Export Reports → Acquisition → Traffic acquisition as CSV. Include the engagement columns so we can tell mistagged campaigns from junk.

This tool answers: Why are my sessions landing in Unassigned or (not set)?

Enable JavaScript to run the check — the diagnosis itself is free and needs no account.

Why this happens

Unassigned is the most misunderstood row in GA4, because people treat it as a variant of Direct. It is closer to the opposite.

Direct means GA4 found no campaign or referrer information at all. Unassigned means it found campaign information and could not match it to any channel rule. The data arrived intact and got binned.

That difference decides the entire fix. If you have a Direct problem, you go and look at redirects, consent ordering and whether anything persists the campaign. If you have an Unassigned problem, all of that is already working — your utm_medium is simply a value GA4's default channel grouping does not recognise, and no amount of redirect debugging will change it.

The good news is that Unassigned is the cheaper problem. The campaign data is real, it is arriving, and the fix is a naming convention rather than an engineering change.

Next checks

These answer the questions this one tends to raise.

How this check works

So you can trust the result — and your developer can verify it.

  1. We find both spellings

    GA4 writes this as "Unassigned" in some reports and "(not set)" in others, and a property can show both at once. We combine them, because to the person reading the report they are the same failure.

  2. We measure it against your own baseline

    Share of sessions alone is not a diagnosis. We compare the engagement of your Unassigned traffic against a session-weighted baseline built from your classified channels only — so a large problem cannot flatten the average it is measured against.

  3. Behaviour tells you whether it is real

    Unassigned traffic that engages like your classified channels is real marketing traffic that was mistagged — visitors you are paying for, sitting in a bucket you cannot report on. Unassigned traffic that engages far below baseline is more likely automated traffic carrying campaign-shaped parameters, and the fix is different.

  4. We separate it from Direct explicitly

    The report tells you which bucket is larger and therefore where to start, because the two have completely different remedies and working on the wrong one is the usual way weeks get lost here.

Common causes and fixes

A utm_medium GA4 does not recognise
By far the most common cause. GA4's default channel grouping is a fixed rule set — cpc, organic, email, social, referral, affiliate, display and a handful more. Invented values like paid, newsletter, blast or the platform's own name do not create a new channel; they fall through to Unassigned.
The platform name used as the medium
utm_medium=facebook or utm_medium=google is a very natural mistake. The platform belongs in utm_source; the medium describes the kind of traffic.
Campaign parameters on events without session context
If campaign data arrives on an event that is not associated with a session start, GA4 has nothing to classify. This often shows up after a single-page-app tracking change.
A campaign tool writing its own medium
Email platforms, link shorteners and affiliate networks frequently append their own conventions. Check what your tools actually emit rather than what you configured.
A custom channel group that was never created
Custom channel groups can classify your own mediums, but they are not retroactive in the way people expect and they do not exist unless someone made one.

Frequently asked questions

What is the difference between Unassigned and Direct in GA4?
Direct means GA4 found no campaign or referrer data at all. Unassigned means it found campaign data and could not match it to a channel rule. Direct points at attribution being lost before the tag read it; Unassigned points at your utm_medium values. The fixes have nothing in common.
How do I fix Unassigned traffic?
Use a utm_medium from GA4's recognised set — cpc for paid search, email, social, referral, affiliate, display, organic. Anything outside it lands in Unassigned. Validate your campaign URLs in bulk before the next send rather than after.
Can I recover sessions already sitting in Unassigned?
Not retroactively in standard reports — the classification happened at collection time. You can build a custom channel group that recognises your mediums going forward, but the cleanest fix is correcting the tagging so it stops happening.
How much Unassigned traffic is normal?
Under about 2% is background noise on most properties. Above 5% usually traces to one campaign source or tool using a medium GA4 cannot map, and above 12% means a significant share of your marketing is unreportable.
Which export should I use?
Reports → Acquisition → Traffic acquisition, as CSV. Include the engagement columns — without them we can size the problem but not tell you whether it is mistagged campaigns or junk traffic.

Unassigned means the data arrived and got binned.

Fixing the tagging stops it happening again. Clarvivo goes further by connecting acquisition to payment data directly, so a naming convention is not the only thing standing between a campaign and its revenue.

Get cleaner channel-to-revenue reporting

What this tool reads, and what it keeps