100% Private & Browser Based

Why GA4 Shows Unassigned Traffic

Unassigned is not a channel. It is what GA4 writes down when it cannot work out which channel a session belongs to, and in a paid media account it is almost always the same single field causing it: utm_medium.

The link still works. The click still lands. The revenue still happens. It simply gets filed under a bucket nobody reports on, which is why the campaign looks like it delivered nothing.

What Unassigned actually means

GA4 assigns every session a Default Channel Group by running the session's source and medium through a fixed set of rules. Those rules are not fuzzy and GA4 does not guess. If utm_medium is missing, or holds a value the rules do not recognise, the session falls through every rule and lands in Unassigned.

Three things follow from that:

The values GA4 recognises

These are the mediums that map to a channel group. Anything outside them is Unassigned.

Channel groupUse one of theseSeen in the wild instead
Paid Searchcpc, ppc, paid, retargetinggoogle_ads, search, sem
Paid Socialpaid_social, social_paidfacebook_ads, paidsocial, meta
Organic Socialsocial, social_network, sminstagram, linkedin
Displaydisplay, banner, cpm, expandableprogrammatic, dv360
Emailemail, e_mailmailchimp, edm, klaviyo
Affiliatesaffiliatepartner, referral_program
Videovideoyoutube, yt

The pattern in the right hand column is always the same mistake: somebody put the platform in the medium field. The platform belongs in utm_source. The medium says what kind of marketing it was.

Rule of thumb: source answers where the click came from, medium answers what you paid for. Facebook is a source. Paid social is a medium.

How to find the broken links

In GA4, open Reports, then Acquisition, then Traffic acquisition. Set the primary dimension to Session default channel group and find the Unassigned row. Then add Session source / medium as a secondary dimension. Every offending value is now listed in front of you, with the sessions each one cost.

What you usually see is a short list: two or three wrong mediums that account for most of the volume. Those are the links to fix first, and they are usually pasted into an ad platform in one place, which means one edit fixes thousands of clicks.

The five causes, in the order they show up

  1. An unrecognised medium. The list above. This is the majority of cases.
  2. No medium at all. A link built with only utm_campaign, which happens when somebody copies a URL from a report and edits the campaign name.
  3. Parameters stripped by a redirect. The click goes to a shortener or a redirect chain that drops the query string. Test the final landing URL, not the one you pasted.
  4. A macro that never resolved. The report literally shows {{campaign.name}} as the campaign. The link reached the browser with the placeholder still in it, which means the macro was encoded, misspelled, or placed where the platform does not substitute it.
  5. Casing drift. CPC is not cpc. GA4 lowercases medium for channel grouping in most cases, but source and campaign stay case sensitive, so the campaign splits into several rows even when the channel is right.

Fixing it without repeating it

Fixing the live links is the easy half. Keeping them fixed is the half that fails, because tagging is done by whoever happens to be launching, in whatever tool they have open.

Three things make it stick:

The UTM builder on this site does all three. It builds one link or one row per channel, it flags a medium GA4 will not map, and its Check a URL tab takes a finished link somebody else built and tells you exactly what is wrong with it. Nothing is uploaded, so it is safe to paste client URLs into.

What Unassigned is not

Two things get blamed for Unassigned that are usually innocent. Consent mode is one: when a visitor refuses cookies the session is modelled, not misfiled, and modelled sessions still carry a channel. Cross domain tracking is the other: a broken cross domain setup shows up as a self referral, not as Unassigned.

If Unassigned appears next to a real source and medium pair in the secondary dimension, the tagging is the problem. If it appears next to (not set), look at your consent and data collection setup instead.

Related reading

For what each parameter does and a naming convention worth adopting, read UTM parameters explained for paid media. For the placeholder syntax each ad platform substitutes at click time, read ad platform URL macros for UTM tracking.