GA4 organizes every session into a "channel group" — a bucket like Organic Search, Paid Social, Email, or Referral. These buckets drive the Traffic Acquisition and User Acquisition reports, feed into attribution modeling, and determine how you read your marketing mix at a glance. When they work correctly, you can see at a quick glance which channels are pulling their weight. When they don't, traffic quietly piles up in (direct) or a category called "Unassigned," and your marketing numbers stop making sense.
The classification system is rule-based — GA4 evaluates the session's session_source, session_medium, and session_campaign_name values against an ordered list of 17 named channels. Miss a rule by one character and the session falls through to Unassigned. GA4 changed these rules compared to Universal Analytics, so properties that migrated without auditing their UTM tagging often have systematic misclassification baked in from the start.
The Default GA4 Channel Groups
GA4's default channel group contains 17 named channels evaluated top to bottom. The first rule a session matches wins. Here is each channel and the conditions that trigger it.
Direct — source exactly matches (direct) and medium exactly matches (none) or (not set). This is the fallback for sessions where no referrer information survived to GA4.
Organic Search — medium exactly matches organic. Google, Bing, and other search engines set this automatically via the referrer; you do not need UTMs for organic search.
Paid Search — medium matches a pattern like cpc, ppc, paid search, or paidsearch, AND source matches a recognized search engine (google, bing, yahoo, baidu, yandex, and others). Both conditions must be true. Google Ads auto-tagging sets this via gclid decoding when the Ads account is linked.
Organic Social — source matches a list of social network domains (facebook, instagram, twitter, linkedin, pinterest, tiktok, reddit, and others) and medium is NOT a paid pattern. Traffic from social apps without UTMs typically lands here via referrer detection.
Paid Social — medium matches paid_social, social_paid, social-paid, or paidsocial, AND source matches a social network. The exact strings matter — social alone is not sufficient for this channel.
Email — medium matches email, e-mail, e_mail, or newsletter. Exact string matching; emails or eml will not match.
Affiliates — medium exactly matches affiliate.
Referral — medium exactly matches referral. Links from other websites where GA4 assigns medium=referral via referrer detection also land here.
Organic Video — source contains youtube and medium is organic or referral; OR source or medium contains video.
Display — medium matches display, banner, or expandable.
Cross-network — campaign name contains cross-network. Used by Google's Performance Max campaigns that serve across multiple networks.
Organic Shopping — source matches a shopping site (google shopping, shopify, etsy, ebay, and others) and medium is organic or referral.
Paid Shopping — campaign name contains product listing patterns OR source is a shopping site and medium is cpc.
SMS — medium exactly matches sms.
Audio — medium exactly matches audio.
Mobile Push Notifications — medium matches notification, push, mobile_push, or mobile push.
Unassigned — doesn't match any of the rules above. This is not a real channel; it is a signal that something is wrong with your UTM tagging or referrer detection.
Why Traffic Ends Up Misclassified
UTM medium values that don't match the rules
The most common source of Unassigned traffic is a UTM medium value that looks right but doesn't match GA4's exact strings. Common examples: a paid social campaign tagged with utm_medium=social instead of utm_medium=paid_social lands in Unassigned because "social" alone doesn't match the Paid Social rule. A display campaign tagged with utm_medium=cpm lands in Unassigned because GA4's Display rule requires display, banner, or expandable — not cpm. An email campaign tagged with utm_medium=emails (plural) misses the Email rule entirely.
GA4's matching uses exact string comparison for most medium values, not partial matching or regex. The full list of accepted strings for each channel is documented in Google's channel grouping reference, and it is worth comparing your actual medium values against it before assuming your campaigns are classified correctly.
Missing UTMs inflating (direct)
Any click that arrives without UTMs relies on the browser passing a referrer header to GA4. When that referrer gets dropped, GA4 has no source information and classifies the session as (direct). Referrers are commonly dropped in several situations: HTTPS-to-HTTP redirects (the referrer is stripped by the browser as a security measure); email clients — Gmail, Outlook, and Apple Mail all strip referrers on link clicks; mobile apps; PDF links; dark social sharing (links pasted into WhatsApp, Slack, iMessage); and some privacy-focused browsers and extensions.
Email campaigns are the biggest contributor here. If your email newsletters use links without utm_medium=email, every click shows as (direct) in GA4. This is one of the most reliable ways to tell whether a team is tagging their emails properly: look at the (direct) trend on days an email goes out. If (direct) spikes on send days, UTMs are missing from the email links.
Auto-tagging and manual UTMs conflicting
When you use Google Ads auto-tagging (gclid) and also add manual UTMs to the same landing page URL, gclid takes priority for channel classification — the session will be attributed to Paid Search regardless of your manual UTM values. However, your manually set utm_source, utm_medium, and utm_campaign values still get logged as event parameters on the landing page event.
This creates a situation where your Traffic Acquisition report shows the session correctly under Paid Search, but custom reports or explorations that read the raw UTM event parameters show whatever values you manually set. If those manual values are inconsistent with the gclid-decoded values, your reports can appear to contradict each other depending on which dimensions you're using. The safest approach for Google Ads URLs is to rely entirely on auto-tagging and remove any manual UTMs — or if you must use manual UTMs (some bid tools require them), make sure they exactly match what auto-tagging would produce anyway.
Custom Channel Groupings in GA4
GA4 allows you to create custom channel groupings to override or supplement the default classification rules. The setting lives in Admin → Data Display → Channel Groups. You can define new channels with your own source/medium/campaign conditions, set the evaluation order for your rules, and leave the default channel group as a fallback.
Common uses include splitting a channel into sub-channels (separating "Newsletter — List A" from "Newsletter — List B" based on utm_campaign), creating an "Agency referrals" channel for specific referring domains, or reclassifying a specific campaign that your team tags in a non-standard way. Custom channels give you a named bucket without requiring every person sending traffic to learn GA4's exact medium strings.
One important characteristic: custom channel groupings are retroactive. GA4 applies the rules to historical session data, not just future sessions. If you fix a channel definition today, your reports for the past 12 months will immediately reflect the corrected classification. This is a significant difference from Universal Analytics, where historical data was frozen under the channel rules that were active at the time.
The main limitation is that you can only set one "default" channel group per property — the group that powers the standard Traffic Acquisition and User Acquisition reports. You can create additional channel groups and use them in explorations and custom reports, but they won't appear in the standard report unless you designate them as the default.
Checking Your Channel Attribution
The Traffic Acquisition report and the User Acquisition report both show channel data, but they answer different questions and use different scoping. Traffic Acquisition is session-scoped — it shows which channel drove each session, including returning user sessions. User Acquisition is user-scoped first-touch — it shows which channel acquired each user when they first visited, and that attribution is fixed at user creation time.
For most marketing analysis, Traffic Acquisition is what you want — it tells you which channels are driving activity right now. User Acquisition is useful for understanding where your user base originally came from, but a user acquired six months ago from Organic Search will always appear under Organic Search in that report, even if every subsequent session comes from Email.
To investigate Unassigned traffic, open the Traffic Acquisition report and click the "Unassigned" row. GA4 will open a detail view where you can add secondary dimensions. Add Session source / medium as a secondary dimension to see the exact source/medium pairs that are landing in Unassigned. The most common findings are custom medium values that almost match a rule (like social instead of paid_social) or missing medium values that left a (none).
A useful diagnostic pattern: export or explore your session_source / session_medium values across the full data range, find every distinct combination, and map each one against the channel rules manually. Any combination that doesn't match a rule will land in Unassigned. Fixing the tagging going forward and creating a custom channel rule to catch historical traffic with the old values is usually the fastest path to clean data.
Frequently Asked Questions
What are GA4 channel groups?
GA4 channel groups are a classification system that sorts every session into a named bucket based on the session's source, medium, and campaign values. The default group includes 17 channels — Organic Search, Paid Search, Email, Paid Social, and others — evaluated in order, with the first matching rule winning. Channel groups power the Traffic Acquisition and User Acquisition standard reports and feed into attribution modeling.
Why is my GA4 showing (direct) for email campaigns?
Email clients (Gmail, Outlook, Apple Mail) strip the HTTP referrer when a user clicks a link. Without a referrer and without UTM parameters, GA4 has no source information and classifies the session as (direct) / (none). Fix this by adding UTM parameters to every link in your emails: utm_source=newsletter, utm_medium=email, utm_campaign=your-campaign-name. Once those parameters are present, GA4 will classify the sessions under the Email channel instead of Direct.
What is Unassigned traffic in GA4?
Unassigned is the catch-all category for sessions whose source, medium, and campaign values don't match any of GA4's 17 default channel rules. It is not a real traffic source — it is a data quality signal. Common causes include UTM medium values that don't match GA4's exact accepted strings (like social instead of paid_social), UTM parameters with typos, or sessions from tracking integrations that use non-standard medium naming. High Unassigned volume usually means UTM tagging needs to be audited.
What is the difference between Traffic Acquisition and User Acquisition in GA4?
Traffic Acquisition is session-scoped: it attributes each session to the channel that drove it, regardless of how many sessions that user has had before. User Acquisition is user-scoped and first-touch: it attributes each user to the channel that drove their very first session, and that attribution never changes. For measuring current marketing activity, use Traffic Acquisition. For understanding where your overall user base originally came from, use User Acquisition.
Can I create custom channel groups in GA4?
Yes. Custom channel groups are available in GA4 under Admin → Data Display → Channel Groups. You can define channels with your own source, medium, and campaign conditions, and set their evaluation order. Custom groups are retroactive — they apply to historical data immediately when you save them. You can create multiple channel groups for use in explorations, but only one group can be designated as the "default" that appears in the standard Traffic Acquisition and User Acquisition reports.
Does GA4 channel grouping affect Google Ads attribution?
Channel groups and Google Ads attribution are separate systems. Channel grouping is a reporting dimension that organizes sessions into buckets for GA4 reports. Google Ads attribution (which conversions to credit to which ads) is controlled by the attribution model set in Admin → Attribution Settings. However, if your Paid Search channel is misconfigured — for example, because auto-tagging isn't working and sessions aren't getting classified correctly — your attribution data will also be inaccurate, since both systems depend on the underlying source/medium values being correct.
Why did my channel groupings change when I moved from UA to GA4?
UA and GA4 use different channel classification rules, and several UA channel names changed or were split. UA's "Social" channel has been split into Organic Social and Paid Social in GA4. UA's "Other Advertising" channel no longer exists. GA4 added channels like Cross-network, Audio, Mobile Push Notifications, and Organic Video that UA didn't have. If your UTM tagging was designed for UA's rules, you may find that traffic which landed cleanly in a UA channel ends up in Unassigned in GA4 — particularly paid social and display campaigns — because the medium values your team is using don't match GA4's more specific rules.
How do I fix UTM tagging to match GA4 channel rules?
Start by auditing your current utm_medium values in GA4. Go to Traffic Acquisition, click into Unassigned traffic, and add Session source / medium as a secondary dimension to see which medium values aren't matching. Then update your UTM templates to use medium values that match GA4's accepted strings: email for email campaigns, paid_social for paid social, display for display campaigns, cpc for paid search. If you have legacy campaigns that use non-standard medium values and cannot be retagged, create a custom channel group rule that catches those specific values and assigns them to the correct channel.
GA4 Audit
Find Every Channel Grouping Issue Automatically
NiceLookingData audits your GA4 property and flags UTM tagging gaps, Unassigned traffic causes, and channel misclassifications — with specific recommendations to fix them.
Run a Free GA4 AuditAnalytics consultant turned founder. After years running the same GA4 and GTM audits across client engagements, Ludde built the audit into a product — so the pattern-matching takes a minute, not a meeting. More about Ludde →
Run a free GA4 audit.
Connect your Google Analytics 4 property. Our auditor runs 61 checks and gives you an instant health score with a plain-English action plan.
