Skip to main content
← Back to blog

Unassigned and (not set) Traffic in GA4: What It Means and How to Fix It

14 October 20268 min read

Unassigned and (not set) Traffic in GA4: What It Means and How to Fix It

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.

Analyst reviewing GA4 report with unassigned traffic ga4 data highlighting broken channel rules.

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:

Dashboard showing ga4 not set metrics and missing campaign data parameters.
  • 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

Marketing team fixing utm parameters to prevent unassigned traffic ga4 issues.

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

  1. 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.
  2. Look at source / medium. Add a secondary dimension of Session source / medium to the Unassigned row. List every combination.
  3. Map each combination to a channel. Compare them against Google's default channel group definitions, then decide the correct medium for each.
  4. 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.
  5. Update links at the source. Fix templates in your email platform, social scheduler and ad accounts so new links are clean.
  6. 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.
  7. Check tag order in GTM. Confirm the Google tag fires before event tags and on every page.
  8. Test redirects. Visit a tagged URL and confirm the UTMs and gclid survive to the final page.
  9. Review consent setup. Confirm the consent default loads before tags and that you know whether you run basic or advanced mode.
  10. 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