GA4 Traffic Showing as "Unassigned"? How to Fix It

"Unassigned" in GA4 means none of Google's channel rules matched a visit. Here is why that happens, how to find the links behind it, and how to fix unassigned traffic in GA4 so paid, social and email visits land in the right channel.

By The Digital Marketing Support team · Updated · 9 min read

You open the Traffic acquisition report and a big row says “Unassigned”. It is traffic you paid for or worked for, and GA4 can’t tell you where it came from. Often the cause is a handful of UTM tags that you can change yourself.

What Unassigned means

GA4 puts every session into a channel, such as Paid Search, Organic Social or Email. It does this with a fixed set of rules Google calls the default channel group. Each rule looks at the session’s source (where the visit came from, like google or facebook), its medium (the type of traffic, like cpc or email) and sometimes the campaign name.

The rules are tested in order, and the first one that matches wins. If none matches, Google says Unassigned is the value it uses. So Unassigned is not a channel of its own. It is GA4 saying “I got some data, but it doesn’t fit anything I know.”

Source, medium, campaign 1 · Direct 2 · Cross-network 3–6 · Paid channels 7–8 · Display, Paid Other 9–12 · Organic channels 13–15 · AI, Referral, Email 16–19 · Affiliates to Push no match Unassigned
GA4 tests the 19 rules from top to bottom and stops at the first match. Unassigned is what's left when none of them fits.

Two details matter for fixing it. First, the channel rules aren’t case sensitive, so Email and email land in the same channel. Second, the values themselves are case sensitive in reports: utm_source=Facebook and utm_source=facebook show as two separate rows. Capitals won’t cause Unassigned, but they will split your numbers.

Direct is different. Direct means the source is (direct) and the medium is (none) or (not set). GA4 saw no referrer and no tags at all, as with a typed URL or a bookmark. Unassigned means there was something to read, but it didn’t fit.

Why it’s worth fixing. Unassigned sessions still count, and their key events (GA4’s name for conversions) still appear in your totals. They just don’t show under the channel that earned them. A paid social campaign tagged meta / facebook_ads looks like it produced nothing in Paid Social, while an unexplained Unassigned row grows. Budget decisions made from that report go the wrong way.

Find the visits behind it

Before you change anything, find out which values land in Unassigned.

  1. In GA4, open Reports › Acquisition › Traffic acquisition.
  2. Change the main column to Session source / medium.
  3. Add Session default channel group as a second dimension, or filter the report to Unassigned.
  4. Sort by sessions. The top few rows show you where to start.

You’ll see pairs like meta / facebook_ads, newsletter / (not set) or flyer / qr. Paste those rows into the channel group checker for GA4. It runs each pair through the same 19 rules, shows which rule matched or why none did, and suggests values that would land in a named channel.

The rows also tell you where to start. If you see a real source with an odd or missing medium, like meta / facebook_ads or newsletter / (not set), the problem is in your links: start with causes 1 to 3 below. If both the source and the medium are (not set), the problem is more likely in your tag or consent setup: start with causes 4 to 6.

Six causes and their fixes

1. A medium GA4 doesn’t know

Paid channels only accept a medium that contains cp, starts with paid, or is exactly ppc or retargeting. Other channels need exact words, such as social, email, referral or affiliate. Values like qr, print, sponsored, boosted_post or story match nothing when the source is also unknown, so the visit is Unassigned.

With a known source, the same values land in the wrong channel instead. The Organic Social rule accepts a visit whose source is on Google’s list of social sites with almost any medium, and only a paid medium reaches Paid Social first (default channel group). So facebook / boosted_post is counted as Organic Social: your paid boosts look like free traffic, which is worse than Unassigned because nothing looks wrong.

Fix: pick a medium from Google’s list. Paid Facebook ads, including boosted posts, should use paid_social. An Instagram story you post yourself can use social.

2. A source nickname with an unknown medium

The social, search, video and shopping rules check the source against Google’s own lists of sites. facebook, fb, instagram and ig are on the social list. Nicknames like meta or fb_ads are not. Pair a nickname with an unknown medium, as in meta / facebook_ads, and nothing matches.

Fix: use the plain site name as the source, such as facebook, instagram, linkedin, google or bing. Google publishes the full source lists as a spreadsheet linked from the default channel group page.

3. Missing tags

Google says to always use utm_source, utm_medium and utm_campaign together, and that missing parameters show as (not set) in reports (URL builders). A link with only utm_source=newsletter has no medium, and newsletter alone isn’t on any list.

Fix: add all three tags to every link you control, for example ?utm_source=newsletter&utm_medium=email&utm_campaign=oct_sale. Most email and social tools have a UTM setting that adds them for you; check what it actually writes.

4. The tag doesn’t fire first

GA4 needs a session_start event to know where a session came from. Google’s (not set) help page says the source / medium is (not set) when that event is missing. A common reason is a Google tag in Tag Manager that isn’t on the Initialization - All pages trigger, so other events fire before GA4 starts the session.

Fix: in Tag Manager, set your Google tag to fire on Initialization - All pages.

5. Consent settings that lose the first event

The same page explains a consent mode trap. Your cookie banner tells Google two things: a starting setting before the visitor chooses (Google calls this the default command), and the visitor’s choice (the update command). If the banner records the visitor’s choice as a new starting setting instead of as an update, the first session event can be lost. Events sent while consent is denied can also start a separate session without session_start.

Fix: ask whoever set up the banner to set the starting setting once with default, then record the visitor’s choice with update. Then test with Tag Assistant.

6. Server-side events without session details

The Measurement Protocol is Google’s way to send events to GA4 from your server instead of the visitor’s browser, for example an order your shop system confirms. Such events only get the visit’s source if they include the visitor’s session_id and are sent no later than 24 hours after that session started (Measurement Protocol use cases). Without both, GA4 can’t tie them to the original visit or its source.

Fix: for events that happen soon after the visit, store the session ID and send it with the server event within 24 hours. A sale closed weeks later can’t be tied back this way. Record it as a key event without expecting a channel, or send it to Google Ads as an offline conversion instead; see how to upload offline conversions to Google Ads.

If Google Ads dimensions, such as the Google Ads campaign, show (not set), the same help page names two more checks: that every Google Ads account advertising your site is linked to GA4, and that auto-tagging is on.

UTM values that land in the right channel

These pairs follow Google’s channel rules. Use lowercase everywhere so your reports don’t split.

You want this channel utm_source utm_medium
Paid Social facebook, instagram, linkedin, tiktok paid_social or cpc
Paid Search (manual tags) bing, google cpc
Display the network or site name display
Organic Social facebook, linkedin social
Email your email tool or newsletter email
SMS your SMS tool sms
Affiliates the partner’s name affiliate
Referral the partner’s site referral

Two traps hide in the campaign name. A name containing cross-network puts the visit in Cross-network, which is tested before every channel except Direct. And because Paid Shopping is tested before Paid Social, a Facebook ad with a campaign like summer_shop_sale and a paid medium lands in Paid Shopping. Keep “shop” and “shopping” out of campaign names that aren’t shopping campaigns.

Some traffic has no default channel at all. Flyers, QR codes and podcast ads you track yourself are good examples. Either use a medium that fits (an audio ad can use audio), or create your own channel for them (see the last section).

Once your team agrees on the values, check every live link against them. The bulk UTM link checker reads a whole sheet of links at once and flags missing tags, mixed capitals, spaces and links that would land in Unassigned, with a corrected link for each row. For a shared naming system, see our UTM best practices guide.

When Unassigned suddenly spikes

Look for a change on the day the jump began. Find the first day of the spike in the Traffic acquisition report, then ask what changed that day:

  • A new campaign or tool. A new email platform, an influencer link or a partner may use its own UTM values.
  • A Tag Manager publish. A changed trigger can stop the Google tag firing first.
  • A new cookie banner. Consent settings can cause (not set) sessions (see cause 5).
  • New server-side tracking. Events without a session ID start showing up without a source.
  • AI assistants. Since May 2026, GA4 has an AI Assistant channel and sets the medium itself for visits from AI assistants it recognizes. That doesn’t add Unassigned traffic, but keep it in mind when you compare channel totals from before and after May 2026.

Compare the source / medium rows for a week before and a week after the change. The new rows tell you which of these it was.

What about past data?

Fixing your tags only changes visits from now on. GA4 sorts each visit when it happens, and you can’t edit the default channel group.

You can, however, create a custom channel group in Admin › Data display › Channel groups. It starts as a copy of the default rules, and you can add your own channels, for example “QR codes” for medium = qr. Google says custom channel groups apply to reports retroactively, so old Unassigned visits move into your new channel. Standard GA4 properties can have two custom groups.

Fix the tags first, then use a custom group to clean up history. Run the channel group checker for GA4 on your top Unassigned rows once a month, and the row should stay small.

Frequently asked questions

What is unassigned traffic in GA4?

It is traffic GA4 couldn’t put into any of its default channels. GA4 tests each session’s source, medium and campaign against a fixed list of rules, and Unassigned is used when no rule matches. The traffic is real; GA4 just doesn’t know which channel it belongs to.

How do I fix unassigned traffic in GA4?

Find the source / medium pairs that land in Unassigned, then change the UTM tags where the links are made so the medium is one GA4 knows, such as cpc, paid_social, email, social, referral or affiliate. Also check that your Google tag fires on every page before other events.

What is the difference between direct and unassigned traffic in GA4?

Direct means GA4 saw no source at all: the source is (direct) and the medium is (none) or (not set). Unassigned means GA4 did get a source or medium, but the values didn’t fit any channel rule. Direct is often typed URLs and bookmarks; Unassigned is often a tagging problem you can fix.

Why did my unassigned traffic suddenly spike in GA4?

Look at what changed on the day it started. Common triggers include a new campaign with unusual UTM values, a Google Tag Manager change that stopped the tag firing first on the page, a new consent banner, or server-side events sent without session details. Compare the source / medium rows before and after that date.

Which utm_medium values does GA4 put into a channel?

Paid channels need a medium that contains cp, starts with paid, or is ppc or retargeting. Other channels use exact words: display, banner, cpm, social, email, referral, affiliate, audio, sms, organic and a few more. Google’s default channel group page lists them all. Capital letters don’t matter for channels.

Why does GA4 show (not set) as the source or medium?

Google’s (not set) help page names the main reasons: sessions missing the session_start event (often a tag that doesn’t fire first), consent set in a way that loses the first event, and incomplete UTM tags. For Google Ads dimensions such as the campaign, it adds two more: Google Ads accounts that aren’t linked, and auto-tagging turned off.

Need help setting this up? Talk to EmproIT