Unassigned traffic looks minor until you see how much of it there is. If a real share of sessions sits in the Unassigned channel, or (not set) appears where source, medium or campaign should be, something in the setup is stopping GA4 from categorising that traffic.
Unassigned isn't one problem. It's the label GA4 uses whenever a session doesn't match any rule in the default channel group. The visits are real; GA4 just doesn't know which channel they belong to.
This guide covers the common causes, what's happening in each, and how to fix them.
What Unassigned means.
When a session arrives, GA4 takes its source and medium (from your UTM parameters, or from the referrer the browser sends) and checks them against the channel definitions: Organic Search, Paid Search, Email, Paid Social, Organic Social, Referral and the rest. Each has specific rules. The first rule that matches decides the channel.
If nothing matches, because the medium isn't one GA4 recognises, the source is missing, the UTMs are malformed or the platform has no rule, the session is Unassigned.
(not set) is related but different. It appears when GA4 has recorded a session or event but the dimension you're looking at has no value, usually because attribution data wasn't available when the session was recorded.
The difference helps diagnosis: Unassigned usually points to a channel rule mismatch; (not set) often points to a session timeout or a data collection timing issue. The (not set) landing page guide covers that side.
Direct is different again. Direct means GA4 had no source at all; Unassigned means it had one, but no channel rule matched. If campaigns are showing up as Direct, see Direct traffic in GA4.
Cause 1: Session timeouts producing (not set).
GA4 sessions end after 30 minutes of inactivity by default. If the user then scrolls, clicks or navigates, GA4 starts a new session.
That new session has no referrer and no UTMs, because the user didn't click a new link. They came back to a tab they already had open. It often has no page view either, so it shows up with a (not set) landing page and poor source data in acquisition reports.
This matters most for email and paid campaigns, where people open a link, get distracted and come back later to buy or enquire. The key event lands in the new session rather than the one the email or ad started. Campaigns look weaker than they are.
How to fix it: Extend the session timeout to match how your users behave: Admin → Data Streams → your web stream → Configure tag settings → Adjust session timeout. The default is 30 minutes and the maximum is 7 hours 55 minutes.
For most sites 4 hours catches most returning users without distorting session data much. For products people research over several hours (property, finance, B2B software), go longer. For quick transactional sites, 2 hours is usually enough.
It needs no code and takes a couple of minutes. It only affects sessions from the change onwards, not historical data, so note your current share of key events attributed to (not set) first as a baseline.
Cause 2: Medium values GA4 doesn't recognise.
This is the most common cause of Unassigned for sites running paid, email or social activity. Default channel rules match source and medium against fixed lists and patterns. Some examples:
- Paid Search: a search engine source, and a medium such as
cpc,ppcor anything starting withpaid. - Paid Social: a social platform source, and the same kind of paid medium, for example
paid_social. - Email: source or medium
email(e-mailande_mailalso match). - Organic Social: a social platform source, or a medium such as
socialorsm.
A medium outside those rules, such as newsletter with a source like mailchimp, or qr or offline, matches nothing and lands in Unassigned. Near misses can also land in the wrong channel: social_paid with source facebook reads as Organic Social, because the medium neither starts with paid nor contains cp.
It adds up quickly. If one person uses paid_social and another uses social_paid, half the paid social activity is reported in the wrong place. Six months of that is six months of attribution you can't correct afterwards.
How to diagnose it: In Reports → Acquisition → Traffic acquisition, add Session medium as a secondary dimension and look at what sits alongside Unassigned. The culprit is usually obvious: a misspelled or custom medium. In a free-form exploration, Session medium sorted by sessions shows every value in use.
How to fix it: Use only approved medium values from now on, and check every campaign template, email platform and ad platform that sets UTMs automatically. The fix has to happen in the URLs, not in GA4. Recorded values can't be changed.
For approved values and a taxonomy that stops this recurring, see the UTM parameters guide.
Cause 3: Missing UTM parameters.
Campaign links with no UTMs and no identifiable referrer are recorded as Direct. Links with only some of the parameters (a utm_source but no utm_medium, say) often land in Unassigned, because the partial information can't match a rule.
UTMs typically go missing through email platforms without auto-tagging, social scheduling tools that strip parameters, people building links by hand without a process, and QR codes pointing at untagged URLs.
How to diagnose it: Compare Direct with your campaign calendar. If Direct spikes on send or launch day, the links are probably untagged. In Traffic acquisition with Session source / medium, look for medium (none) on dates with known campaign activity.
How to fix it: Every campaign link should carry utm_source, utm_medium and utm_campaign. Use a UTM builder or a spreadsheet with controlled dropdowns so the parameters are always present and formatted consistently.
Check your email platform's auto-tagging and make sure scheduling tools aren't stripping parameters. A quick check of every URL before launch takes five minutes and saves weeks of bad attribution.
Cause 4: AI referrals from ChatGPT, Perplexity and similar.
Traffic from AI tools that link to websites, such as ChatGPT, Perplexity, Gemini, Claude and Copilot, is a growing source of unclassified traffic.
There are two problems. Some of these platforms don't send a referrer, or send one GA4 doesn't recognise. And the default channel group has no AI channel, so even a clean referrer from chatgpt.com doesn't get a named channel of its own.
So this traffic ends up in Referral (clean referrer), Unassigned (can't be categorised) or Direct (no referrer). None of those tells you how much AI-driven discovery is bringing you.
How to diagnose it: In Traffic acquisition, add Session source and look for chatgpt.com, perplexity.ai, gemini.google.com and similar. If they sit in Referral or Unassigned, your AI traffic isn't being categorised. Some arrives with no referrer and disappears into Direct, which is harder to spot. The AI traffic guide shows how to give it a channel of its own.
How to fix it: Create a custom channel group with an AI Referral channel: Admin → Channel groups → Create new channel group. Add a channel called AI Referral matching sources that contain chatgpt, perplexity, gemini, claude, copilot or other platforms you care about.
Set medium to referral or leave it open, depending on how the platforms send traffic. Rules run in order, so move AI Referral above Referral.
You then get AI referral volume, engagement and key events separately from organic and referral traffic, without touching your other channels. Unlike UTM fixes, custom channel groups also apply to historical data, so you can see straight away how much past traffic belongs in the new channel.
How to prioritise.
Diagnose before you fix. Fifteen minutes with the Session medium and Session source breakdowns for Unassigned usually shows one cause dominating, so you fix the right thing first.
- If most Unassigned traffic has a recognisable but wrong medium (such as
newsletterorqr), fix the UTM taxonomy first. Past data can't be changed, so stopping it quickly matters. - If (not set) dominates and campaigns are otherwise tagged correctly, change the session timeout. It's a quick win you can do today.
- If chatgpt.com or perplexity.ai appear without a clear channel, set up the custom channel group. It takes under ten minutes.
Summary.
Unassigned traffic is fixable, but the fix depends on the cause, and the label alone rarely tells you which. The diagnosis matters as much as the fix.
The four causes here cover most Unassigned traffic in most properties: session timeouts producing (not set), medium values that break the channel rules, missing UTMs, and AI referrals with no channel definition.
The UTM medium problem is the most common, does the most damage to historical data, and is the most preventable with a clear taxonomy and a check before launch. The session timeout is the quickest fix. The AI channel group is worth doing sooner rather than later.
Marc Alexander, a GA4 expert, can fix all four as part of a GA4 audit and fix.