Open almost any GA4 report and the first dimension you reach for is the channel. "Where did this traffic come from?" Organic Search, Paid Search, Direct, Email, Referral. It's the language every marketer and every client speaks in. The problem is that GA4 doesn't actually store a channel anywhere. It stores a source and a medium, and then derives the channel on the fly from a fixed set of rules. Once you understand those rules, the reports stop surprising you.
This guide covers what each default channel really means, how GA4 picks one from the raw source and medium, and the handful of mistakes that send perfectly good traffic into the Unassigned bucket.
Why Channel Grouping Exists at All
You think in channels. GA4 thinks in source and medium. Those are two different layers, and the channel grouping is the translation between them.
Every session carries a source (who sent the traffic: google, facebook.com, newsletter) and a medium (the type of link: organic, cpc, email, referral). On their own, source and medium are precise but unwieldy. You don't want a report with two hundred source/medium rows. You want roughly a dozen channels. The Default Channel Group is GA4's built-in rulebook that collapses all those source/medium combinations into named channels you can report on.
How GA4 Assigns a Channel
GA4 runs each session through an ordered set of rules. It checks conditions against the session's source, medium, and sometimes the campaign name, and it also consults an internal list of known source categories, Google's classification of domains as Search, Social, Shopping, or Video. So when a session arrives from google, GA4 knows that's a search source; from facebook.com, a social source.
The rules are evaluated in order, and the first one that matches wins. That ordering matters: a session has to satisfy both the source-category condition and the medium condition for a paid channel before it falls through to the more general buckets. If nothing matches, the session lands in Unassigned.
| Default channel | Triggers when |
|---|---|
| Direct | Source is (direct) and medium is (none) or (not set): GA4 has no referrer and no campaign tagging to work from |
| Organic Search | Medium is organic, or the source matches a known search engine (like google or bing) with no paid medium |
| Paid Search | Source is a search engine and medium matches a paid pattern: cpc, ppc, or paid |
| Organic Social | Source is a known social network (like facebook.com) and medium is social, social-network, or similar non-paid social |
| Paid Social | Source is a known social network and medium matches a paid pattern (cpc, paid, or contains paid alongside social) |
Medium is exactly email (or the source/campaign clearly indicates email) |
|
| Referral | Medium is referral and the source isn't a recognised search or social property |
| Display | Medium is display, banner, cpm, or expandable (typically banner and remarketing inventory) |
That's the core set most reports live in. There are a few more (Affiliates, Audio, SMS, Mobile Push Notifications, Paid Shopping, Organic Shopping, Organic Video, Paid Video) but they follow the same shape: a source-category check combined with a medium pattern.
Where It Goes Wrong
Channels are only as good as the tagging feeding them. Three problems cause the overwhelming majority of misclassified traffic.
Untagged campaigns. If you send a paid email blast or run a sponsored post and forget the UTM parameters, GA4 has no medium to read. The session arrives with whatever referrer the browser passed, or none at all, and you lose the channel entirely. Untagged paid traffic frequently shows up as Direct or Referral, quietly inflating channels that did no work.
Wrong medium values. This is the big one. GA4 matches medium against an expected list. If you tag a Facebook campaign with medium=social when GA4 expected the paid pattern, or you invent medium=newsletter instead of email, the rule that would have caught it never fires. The session falls through every channel condition and lands in Unassigned.
Your medium values must match GA4's expected list. A medium GA4 doesn't recognise satisfies no channel rule, so the session falls all the way through to Unassigned. The channel grouping can only sort traffic it can read.
Self-referrals. When a user crosses between your own subdomains, or returns from a payment gateway, your own domain can show up as the referring source. Without that domain on your referral exclusion list, GA4 may start a new session attributed to Referral from yourself, fragmenting the original channel.
UTM medium cheat sheet: use cpc for paid search, organic only for genuinely organic links (you rarely set this by hand), email for email, social for organic social posts, and display or cpm for banner buys. For paid social, use a paid pattern like cpc or paid-social rather than plain social. Match these exactly and the right channel falls out automatically.
The Unassigned Bucket
Unassigned is not a channel. It's the absence of one. A session ends up there when GA4 ran through every rule in the Default Channel Group and none of them matched, usually because the medium was missing, misspelled, or a value GA4 doesn't recognise.
A small amount of Unassigned is normal. A large or growing share is a signal: somewhere in your campaign tagging there's a medium GA4 can't classify, or a tracking gap leaking sessions. Treat a rising Unassigned line as a tagging audit waiting to happen, not as a fixed cost of doing business. The fix is almost always upstream, in how links are tagged, not inside GA4.
You Cannot Edit the Default Group
Here's the constraint that trips people up: the Default Channel Group is read-only. You can't change how it classifies cpc, you can't add a rule for your odd internal medium, and you can't rename Organic Search to something your client prefers. Google owns those definitions and updates them periodically.
What you can do is create a custom channel group, which sits alongside the default and lets you write your own ordered rules. That's how teams split Organic Search into Brand and Non-Brand, route a quirky in-house medium into the right named channel, or reclassify mis-tagged paid traffic without re-tagging the whole campaign history. The default stays untouched; your custom group is where your business logic lives.
In adop.tools
The channel groups feature in adop.tools lets you reclassify channels with your own rules without waiting on a GA4 admin change. You can split brand versus non-brand, fold a mis-tagged paid campaign back into Paid Social, or rename a channel to match how your client talks, all defined in the report itself. The breakdown tables then read from those rules, so the channel column reflects your logic rather than only GA4's fixed default.
Start With the Tagging
Default channel groupings feel like a GA4 setting you configure. They aren't. They're a downstream readout of the source and medium on every session, and those are decided the moment a link is clicked. If your channels look wrong, the lever is almost never inside the channel report, it's in the UTM parameters, the referral exclusions, and the consistency of the medium values your campaigns send. Get the inputs right and the default grouping does its job quietly. Get them wrong and no amount of staring at the channel report will fix it.