Unassigned and (not set) Traffic in GA4: What It Means and How to Fix It
14 October 20268 min read

Unassigned traffic in GA4 is one of the most frustrating things to see in your acquisition reports. It means GA4 recorded sessions or conversions but could not put them into any of its default channel groups. Add a few rows of "(not set)" and a growing slice of "Direct", and suddenly a meaningful share of your traffic has no clear source.
The good news is that most causes are fixable. This guide explains what each label means, the common reasons they appear and how to work through them.
Quick answer: "Unassigned" in GA4 means the traffic source and medium did not match any rule in GA4's default channel group, often because of non-standard UTM parameters. "(not set)" means GA4 had no value for that dimension at all, usually because session data was missing, for example from events firing before session_start, consent restrictions or Measurement Protocol hits. Fix them by standardising UTMs, checking tag order and consent setup, and linking Google Ads correctly.
What "Unassigned" actually means
GA4 groups traffic into channels like Organic Search, Paid Search, Email, Organic Social and Referral using a set of rules based mainly on source and medium. If a session's source and medium do not match any rule, the channel is labelled Unassigned.

The key point: Unassigned does not mean GA4 does not know where the traffic came from. Often it knows the source and medium perfectly well. It just cannot map them to a channel. Change the dimension in your report from "Session default channel group" to "Session source / medium" and you will usually see exactly what is going on.
What "(not set)" means
"(not set)" is a placeholder GA4 uses when a dimension has no value. You may see it as:

- Source / medium: (not set)
- Landing page: (not set)
- Campaign: (not set)
This is a different problem from Unassigned. Here GA4 genuinely lacks the information, usually because the event that carries it was missing, delayed or blocked.
How it relates to direct traffic in GA4
Direct traffic in GA4 is sessions where GA4 found no referrer and no campaign information. It is a real channel (typed URLs, bookmarks, some app links), but it is also where traffic goes when tracking information is lost. If Direct is growing while other channels fall, investigate it with the same steps below.
Common causes of Unassigned traffic

1. Non-standard UTM parameters
This is the most common cause. GA4's channel rules expect particular medium values. For example:
- Email expects medium values such as "email", "e-mail", "e_mail" or "e mail"
- Paid Social expects a recognised social source plus a paid medium such as "cpc", "ppc", "retargeting" or one starting with "paid"
- Display expects medium values such as "display", "banner", "expandable", "interstitial" or "cpm"
If your team uses mediums like "newsletter", "social-post", "fb_ad" or "QR", GA4 may not recognise them and you get Unassigned. Mixed case can also cause problems in reports, so stick to lowercase.
2. Custom tools adding their own UTMs
Some email platforms, link shorteners, scheduling tools and affiliate networks add UTM parameters automatically, often with their own naming. Check the source / medium values coming from each tool.
3. Cross-platform or offline sources
QR codes on print, SMS campaigns and podcast links often end up Unassigned because nobody chose a medium that matches a channel rule. Decide in advance which channel each should map to.
Common causes of (not set)
1. Events firing before session data is available
If an event fires very early, or the GA4 configuration loads after other event tags, some events may not carry session source information. In Google Tag Manager, make sure your Google tag (GA4 configuration) fires on the Initialization trigger or before other GA4 event tags.
2. Consent Mode effects
With Consent Mode in advanced mode, users who decline cookies send cookieless pings. GA4 can model some of this behaviour, but session-level attribution for those users is limited, which can add to (not set) values. In basic mode, unconsented users are not recorded at all. If you have recently changed your cookie banner, look for a step change in (not set) on the same date.
3. Measurement Protocol and server-side hits
Events sent through the Measurement Protocol or a server-side container without the right client_id and session_id cannot be stitched to the original session. They show up with (not set) source and landing page. Pass through client and session identifiers from the browser.
4. Sessions that span midnight or time out
GA4 sessions time out after 30 minutes of inactivity by default. If a user returns after a timeout via an event rather than a page view, the new session can lack a landing page. Some level of (not set) landing page is normal for this reason.
5. Google Ads data not flowing
If your GA4 property is not linked to Google Ads, or auto-tagging is disabled, campaign dimensions for paid clicks can show (not set). Link the accounts under Admin, Product links, and confirm auto-tagging is switched on in Google Ads.
Causes that inflate Direct or Unassigned
These also lose source information and push traffic into the wrong bucket:
- Redirects that strip parameters. A redirect from http to https, or from a vanity URL, can drop UTMs and the gclid if it is not configured to preserve query strings.
- Missing cross-domain tracking. When users move between your own domains, the session breaks and the second domain may record a referral or direct visit. See our guide to cross-domain tracking in GA4.
- Links in apps and documents. Links in PDFs, some messaging apps and email clients often do not pass a referrer, so tag them with UTMs.
- Pages missing the GA4 tag. If a landing page has no tag, the session starts on the next page with no source.
How to fix Unassigned and (not set): step by step
- Measure the size of the problem. In Reports, Acquisition, Traffic acquisition, note the share of sessions and key events that are Unassigned, (not set) and Direct over the last 90 days.
- Look at source / medium. Add a secondary dimension of Session source / medium to the Unassigned row. List every combination.
- Map each combination to a channel. Compare them against Google's default channel group definitions, then decide the correct medium for each.
- Write a UTM naming standard. Lowercase only, a fixed list of allowed utm_medium values that match GA4's rules, and clear guidance for utm_source and utm_campaign. Share it with everyone who builds links, including agencies.
- Update links at the source. Fix templates in your email platform, social scheduler and ad accounts so new links are clean.
- Optionally create a custom channel group. GA4 lets you create custom channel groups that apply retroactively in reports. This can tidy historical data while the source fixes take effect.
- Check tag order in GTM. Confirm the Google tag fires before event tags and on every page.
- Test redirects. Visit a tagged URL and confirm the UTMs and gclid survive to the final page.
- Review consent setup. Confirm the consent default loads before tags and that you know whether you run basic or advanced mode.
- Monitor monthly. Track the share of Unassigned and (not set) as a simple data quality metric.
How much is acceptable?
Some (not set) and Direct traffic is unavoidable. There is no official threshold, and the right level depends on your channels and consent rates. What matters is that Unassigned is close to zero once UTMs are standardised, and that (not set) and Direct are stable rather than climbing. A sudden jump almost always lines up with a change you can identify.
Where this fits in your wider data checks
Unassigned and (not set) are symptoms. They often appear alongside other issues such as duplicate tags, broken key events or mismatched ad platform numbers. Our GA4 audit checklist covers all of these in one pass.
FAQs
Why has my Unassigned traffic suddenly increased?
Usually because a new tool, campaign or team member started using UTM values that GA4 does not recognise. Check the source / medium combinations behind the Unassigned row for the date the increase started.
Is (not set) the same as Direct traffic?
No. Direct means GA4 found no referrer or campaign information. (not set) means a specific dimension had no value recorded at all, often because of how or when an event was sent.
Can I fix historical Unassigned data?
You cannot change the raw data, but a custom channel group applies retroactively in reports, so you can reclassify past source and medium combinations into the correct channels.
Do UTM parameters work on Google Ads links?
They can, but use auto-tagging for Google Ads instead. Manual UTMs on Google Ads can override or conflict with auto-tagging data unless configured carefully.
Find out where your traffic really comes from
If a big slice of your traffic or conversions has no clear source, our Tracking Audit + Fix costs a fixed £199. We review your GA4 configuration, validate GTM, test conversion events and fix what is broken. Get My Audit and get clean, trustworthy acquisition data.
Related reading: Cookie banner data loss.
Share
