← Back to Guides

What does Unassigned mean in GA4?

GA4 assigns every session to a channel in the default channel group using rules keyed on the traffic's source, medium, and campaign values. There are 19 default channels, from Paid Search to Email to the 2026 addition AI Assistants, each with its own matching conditions. Source: Default channel group, Analytics Help.

Unassigned is not one of those channels. It is the label GA4 reports when no channel rule matches the traffic's event data: the values it carries fit no channel's conditions, or the data a rule needs is missing. Sessions and conversions are still recorded, and where the URL carried source and medium values, those stay visible in the source and medium dimensions. Only the channel classification is missing.

What causes Unassigned traffic in GA4?

The cause this guide focuses on: campaign URLs carrying utm_source and utm_medium values that GA4's rules do not recognize. The pattern looks reasonable to a human and means nothing to the rule engine. Common examples:

How do I find which links cause Unassigned traffic?

One report, three steps:

  1. In GA4, open Reports, then Acquisition, then Traffic acquisition.
  2. Search the channel column for Unassigned, then add Session source / medium as a secondary dimension.
  3. The source and medium pairs listed are the offenders. Match each pair with concrete values against the campaign links your team sent.

Pairs that match links your team sent trace straight back to their templates: correct the templates and the pair stops growing. Concrete pairs you cannot match to any sent link can come from other inputs, such as an ad platform integration writing its own values.

Rows that show (not set) instead of concrete values are a different problem. Those are not link problems: Google documents causes such as sessions missing the automatically collected session_start event, and they need a tracking audit rather than a link fix. Source: (not set) in Session source / medium, Analytics Help.

How do I fix Unassigned traffic going forward?

Standardize your utm_source and utm_medium values on ones GA4's channel rules recognize, and make the standard the path of least resistance for everyone building links. Three parts:

1. Pick recognized values per channel. Email sends use medium email. Paid campaigns use cpc or paid. Organic social posts use one of GA4's social mediums. The full 19-channel rule table lists what each channel matches.

2. Write the convention down with one row per channel: allowed source values, the exact medium, campaign naming. Ambiguity is where new Unassigned traffic comes from.

3. Put a governed builder in front of the team. A documented convention still depends on everyone typing it correctly into every URL. A builder that only emits allowed values removes the typing, and validation against channel rules catches the mistakes a template cannot see.

Can I reclassify past Unassigned traffic?

In the default channel group, no. Historical sessions keep the source and medium they arrived with, and the default rules are Google's to define.

In your reports, yes. Custom channel groups can be applied to your reports retroactively (source: Custom channel groups, Analytics Help). Build a custom group that adds rules for the legacy source and medium pairs you found in the report above, and those historical sessions report under named channels in every report that uses the custom group. The raw values were always stored; classification happens at reporting time.

Which tools help prevent Unassigned traffic in GA4?

Three categories, and they check different things:

Google's Campaign URL Builder concatenates whatever values you type into a syntactically valid URL. It validates nothing against channel rules; a URL that produces Unassigned traffic passes it without a warning.

Template-based governance tools such as UTM.io and CampaignTrackly enforce your naming template: required fields, dropdown values, conventions. That prevents freestyle values, but a template that itself contains an unrecognized medium passes every check and still produces Unassigned traffic.

Channel-validating builders check the produced URL against GA4's channel definitions. Trakr resolves every URL against the channel rules mirrored in your workspace configuration and shows the resulting channel before you copy, so a URL headed for Unassigned is visible while it is still one click from being fixed. The comparison pages hold the tool-by-tool detail.

Common questions

Is Unassigned the same as (not set) in GA4?
No. Unassigned is a channel-level outcome: no rule in the channel group matched the traffic's data. (not set) is a value that appears inside a dimension when GA4 has nothing to report for it. The two often appear together, because missing source or medium data is one of the ways traffic ends up Unassigned, but one is a channel label and the other is a missing dimension value.
Does Unassigned traffic mean my data is lost?
No. Sessions, users, and conversions are all recorded, and where the URL carried source and medium values, they stay visible in the source and medium dimensions. Only the channel classification is missing, which is why the traffic disappears from channel-level reporting while the totals stay correct.
Can I edit or delete the Unassigned channel in GA4?
No. Unassigned is not a channel definition you can open or edit. It is the label GA4 reports when no rule in the channel group matched. You reduce it by making your traffic match rules: fix the URLs going forward, or report through a custom channel group whose rules match your existing values.
Does Unassigned traffic affect my conversion counts?
Total conversion counts stay correct. What breaks is attribution by channel: conversions from Unassigned sessions are credited to Unassigned, so every channel-level performance read (cost per acquisition by channel, email versus paid, agency reporting) is understated for the channels that actually drove them.

Watch your next URL resolve to a channel.

Build a governed URL in the free builder. No signup, no credit card. The channel check runs before you copy.

Open the App, free →