Channel groupings in GA4 are rule-based. A session is classified as Organic Search if the source matches a list of known search engines and no UTM parameters are present. It's classified as Paid Search if it has a utm_medium=cpc or utm_medium=ppc. It's Email if utm_medium=email. The full rule set is published in GA4's documentation and evaluated in priority order — the first matching rule wins.
This means the channel assigned to a session is only as accurate as the source and medium data attached to it. Misconfigured UTMs, missing parameters, and referral leakage all corrupt channel classification — and the evidence shows up as inflated Unassigned and Direct traffic.
Why Unassigned Appears
Unassigned means the session had a source and medium that didn't match any of GA4's channel rules. It is always a data quality problem — there is no legitimate traffic that should land in Unassigned on a well-configured property.
Common causes:
- UTM medium values that don't match the channel rules — GA4's Email channel requires
utm_medium=email(or a small set of variants likee-mail). If your email platform sendsutm_medium=newsletterorutm_medium=crm, those sessions won't match the Email rule and land in Unassigned. The fix is standardising your UTM medium values to match the channel ruleset. - Custom campaign sources with no matching rule — if you run campaigns tagged with
utm_source=partner_x&utm_medium=co-marketing, there's no default rule for co-marketing. Those sessions hit Unassigned. - Referral traffic from your own domain — cross-domain tracking issues and missing referral exclusions can create sessions where the source is your own domain. Depending on the domain, GA4 may classify these as Referral or Unassigned.
- Payment processors and redirect sources — without proper referral exclusions, sessions arriving from Stripe, PayPal, or other payment processors appear with those domains as referrers, which don't match any channel rule.
To investigate: in GA4, go to Reports → Acquisition → Traffic Acquisition and filter to show only the Unassigned channel. Then change the secondary dimension to Session source / medium. The breakdown will show you exactly which source/medium combinations are failing to match a channel rule, so you can fix the UTM values or add custom channel rules to cover them.
Why Direct Is Inflated
Direct in GA4 means the session had no detectable referrer and no UTM parameters. True direct traffic — users who typed your URL or clicked a bookmark — exists and is legitimate. But for most sites, Direct is significantly larger than true direct traffic because it absorbs several other things:
Dark social
Links shared in private channels — Slack, WhatsApp, email apps, Discord, SMS, iMessage — don't pass a referrer when clicked. A link shared in a private Slack channel looks identical to a bookmark click from GA4's perspective. For B2B businesses and content sites with engaged communities, this is often 15–30% of what appears as Direct.
Untagged email links
Email clients don't pass referrer headers. Any link in an email that doesn't have UTM parameters will arrive as Direct traffic. If your transactional emails, internal newsletters, or sales team emails contain links to your site without UTMs, all of that traffic is Direct. For SaaS products where transactional emails drive significant site visits, this is a material misattribution.
HTTP → HTTPS referrer drops
Browsers don't send referrer headers when navigating from an HTTP page to an HTTPS page. If a site linking to yours uses HTTP, GA4 won't see the referrer and will classify the session as Direct.
Redirect chains that drop referrers
A click that passes through a redirect before reaching your site may lose the original referrer in transit, depending on how the redirect is implemented. 302 redirects using JavaScript or meta refreshes are particularly prone to dropping the referrer.
Custom Channel Groupings: When and How to Use Them
GA4 lets you create custom channel groupings to handle traffic that doesn't fit the default rules. This is the right fix when your business consistently runs campaigns with medium values that don't match default channels, or when you want to distinguish sub-channels that GA4 groups together.
To create a custom channel grouping: Admin → Channel Groups → Create new channel group. You define rules using source, medium, and campaign conditions, and arrange them in priority order (higher rules are evaluated first).
When custom groupings make sense
- You run affiliate campaigns tagged with
utm_medium=affiliateand want a dedicated Affiliate channel rather than having them fall into Referral or Unassigned - Your CRM sends
utm_medium=crmorutm_medium=lifecycleand you want Email-equivalent classification - You want to separate Brand Paid Search from Generic Paid Search based on campaign name patterns
- You run SMS campaigns and want a distinct SMS channel rather than Direct or Unassigned
The right approach
Custom channel groupings are applied retroactively — once you create a rule, it classifies historical data too, unlike most GA4 configuration changes. This is unusual in GA4 (most config changes are forward-only) and worth knowing: you can build custom groupings today and immediately see corrected historical channel data.
utm_medium=newsletter value is hiding a tagging inconsistency rather than fixing it. The right order is: standardise UTM naming conventions, then use custom groupings for genuinely distinct traffic types that the default rules don't cover.Audit Checklist: Channel Data Health
- Check Unassigned volume — any significant Unassigned traffic is a signal that UTM values aren't matching default channel rules. Drill into source/medium to find the specific combinations causing it.
- Check Direct volume relative to your site type — for a brand with no email program and minimal social sharing, 5–10% Direct is plausible. For an ecommerce site with active email marketing, Direct above 20% should prompt investigation into whether transactional emails are tagged.
- Verify UTM medium values against GA4's channel definitions — check that your email platform sends
emailnotnewsletter, that paid campaigns usecpcorppc, and that social campaigns usesocialorsocial-network. - Check for referral exclusion gaps — any legitimate business domain appearing as a referral source (payment processors, your own subdomains) should be excluded, otherwise those sessions may land in Referral or Unassigned rather than their original source.
- Review custom channel groupings if they exist — are the rules still accurate? Do they cover all the medium values your campaigns use today?
GA4 Health Check audits your channel data for Unassigned volume, UTM consistency, and referral exclusion gaps. Run a 60-second audit to check your attribution health.
Fixing channel groupings is a good start, but attribution problems usually run deeper than UTMs. Our Attribution & Measurement Strategy service looks at the full picture.
