GA4 10 min read

Unassigned Traffic in GA4: What It Is and How to Fix It

Seeing 'Unassigned' in your GA4 channel grouping reports? This guide explains the four root causes, how to diagnose which one applies to your property, and the specific fixes for each.

A
Aumlytics Team
·

“Unassigned” is one of the most frustrating things to see in a GA4 channel grouping report. Unlike “(not set)” — which indicates missing data — “Unassigned” means GA4 received session data but couldn’t match it to any of its default channel grouping rules.

The good news: it’s almost always fixable once you know which of the four root causes is responsible. This guide walks through each one.


How GA4 Default Channel Groupings Work

GA4 classifies traffic into channels based on the session_source, session_medium, and session_campaign parameters attached to each session. These channel rules are applied automatically:

ChannelRule
Organic Searchmedium = “organic”
Paid Searchmedium = “cpc” or “ppc”; ad system = Google Ads
Emailmedium contains “email” or “e-mail”
Directsource = “(direct)”, medium = “(none)“
Organic Socialsource matches social network list, medium = “referral” or blank
Paid Socialmedium = “paid_social” or “cpc” + source is social network
Referralmedium = “referral”
Displaymedium = “display” or “banner” or “expandable”

“Unassigned” appears when none of these rules match. GA4 received a session with source/medium data, but the data doesn’t fit any channel definition.

Official reference: GA4 default channel groupings


Cause 1: UTM Parameters Don’t Match Channel Rules

The most common cause. Your links use UTM parameters, but the medium value doesn’t match what GA4 expects.

Examples of medium values that cause Unassigned:

  • utm_medium=newsletter → should be email
  • utm_medium=social-organic → should be organic_social or no medium
  • utm_medium=sponsored → should be cpc or paid_social
  • utm_medium=partner → no matching channel rule
  • utm_medium=EDM → not recognised (should be email)

How to diagnose: GA4 → ReportsAcquisitionTraffic Acquisition → look for “Unassigned” rows → click through to see the source/medium breakdown.

Or in BigQuery:

SELECT
  traffic_source.source,
  traffic_source.medium,
  COUNT(*) AS sessions
FROM `project.analytics_XXXXXXXXXX.events_*`
WHERE
  event_name = 'session_start'
  AND _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
GROUP BY 1, 2
HAVING sessions > 10
ORDER BY sessions DESC;

Look for medium values that don’t appear in GA4’s channel grouping rules table.

Fix: Standardise your UTM medium values to match GA4’s expectations:

What you might useWhat GA4 expects
newsletter, edm, blastemail
social, social-mediaUse source = social network name, medium = social (for organic social)
partner, affiliate-linkaffiliate
banner, display-addisplay
sponsored-contentcpc (if paid)

Build a UTM parameter guide for your team and enforce it. One inconsistent campaign link can send a whole campaign’s traffic to Unassigned.


Cause 2: Auto-Tagged Google Ads Not Linked to GA4

If you run Google Ads with auto-tagging enabled (the default), Google Ads appends a gclid parameter to your ad destination URLs. GA4 uses this gclid to classify sessions as Paid Search, Display, or Demand Gen — but only if your Google Ads account is linked to GA4.

Without the link, GA4 sees the gclid parameter but can’t decode what it means. The session shows as Unassigned instead of Paid Search or Display.

How to diagnose: In your GA4 traffic report, filter for Unassigned sessions. If the session source contains google and there’s a gclid in the page URL for those sessions, this is your cause.

In BigQuery:

SELECT
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_url,
  traffic_source.source,
  traffic_source.medium,
  COUNT(*) AS sessions
FROM `project.analytics_XXXXXXXXXX.events_*`
WHERE
  event_name = 'session_start'
  AND traffic_source.medium IS NULL
  AND _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))
GROUP BY 1, 2, 3
HAVING sessions > 5

If page_url contains gclid= for sessions with NULL medium, the Google Ads link is missing or broken.

Fix:

  1. GA4 Admin → Product LinksGoogle Ads Links
  2. Click Link → select your Google Ads account → confirm
  3. Allow 24–48 hours for historical data to be re-processed (new sessions only — historical Unassigned data won’t be reclassified)

Cause 3: Traffic from Referral Sources Not Classified as Social

GA4 has a built-in list of domains it recognises as social networks (Facebook, Instagram, Twitter/X, LinkedIn, Pinterest, TikTok, etc.). Traffic from these domains with medium = “referral” is classified as Organic Social.

But the list isn’t exhaustive. If you drive traffic from a platform GA4 doesn’t recognise as social — a newer social platform, a forum, a community site — it arrives as “Referral” not Organic Social. That’s actually correct behaviour, but if you want these reclassified, you need custom channel groupings.

Less commonly: If a social platform’s traffic arrives with a medium that doesn’t match GA4’s social rules, it lands in Unassigned.

Fix: Create a Custom Channel Grouping in GA4:

  1. GA4 Admin → Channel GroupsCreate new channel group
  2. Add a channel definition for the platform:
    • Channel name: e.g., “Reddit”
    • Condition: Source exactly matches reddit.com
  3. Save and apply to your reports

Custom channel groupings apply going forward — they don’t reclassify historical data.


Cause 4: Internal Traffic Hitting Production Analytics

If your team, developers, or automated scripts access your production site without being filtered from GA4, their sessions can generate Unassigned traffic — particularly if they’re using direct URL access with unusual parameters, API-driven navigation, or tools that don’t pass standard referrer data.

How to diagnose: Look at the time pattern of Unassigned sessions. If they cluster during business hours, align with your team’s working hours, or spike after deployments — internal traffic is likely contributing.

Fix:

  1. GA4 Admin → Data StreamsConfigure tag settingsDefine internal traffic
  2. Add your office IP address ranges
  3. GA4 Admin → Data Filters → create an “Internal Traffic” filter with Filter type: Exclude and activate it

This removes internal sessions from all GA4 reports going forward.


Cause 5: Medium Values from Email Marketing Platforms

Many email marketing platforms (Klaviyo, Mailchimp, Campaign Monitor, HubSpot) auto-append UTM parameters to links, but use their own default medium values:

PlatformDefault medium (if not customised)
Klaviyoflow or campaign (not email)
HubSpotemail (correct) or custom
Mailchimpemail (usually correct)
Campaign Monitoremail (usually correct)
ActiveCampaignCan be email or custom

If Klaviyo sends utm_medium=flow, those sessions appear as Unassigned (no GA4 channel rule matches flow).

Fix: In Klaviyo → AccountSettingsUTM Tracking → customise the default UTM parameters to use utm_medium=email for all flows and campaigns.

Or, add a custom channel grouping rule that maps medium = "flow" to your Email channel.


How Much Unassigned Is Acceptable?

A small percentage of Unassigned is normal:

  • 0–2%: Expected — edge cases from automated tools, unusual browsers, internal testing
  • 2–5%: Investigate — likely one UTM inconsistency or a missing Google Ads link
  • 5%+: Significant problem — systematic UTM issues or a missing platform link

Creating a UTM Governance Document

The most impactful long-term fix for Unassigned traffic is standardising how your team creates UTM-tagged links. A simple reference document circulated across marketing, content, and dev teams prevents most future Unassigned issues:

APPROVED UTM MEDIUM VALUES:
- email (for all email campaigns and flows)
- cpc (for all paid search and paid social)
- display (for display/banner advertising)
- affiliate (for partner/affiliate links)
- organic_social (for manually tagged social posts)
- referral (for links on other websites)

DO NOT USE:
- newsletter, edm, blast (use: email)
- social, social-media (use: organic_social)
- paid (use: cpc or display)
- sponsored (use: cpc)
- partner (use: affiliate)

Keeping this updated and accessible prevents Unassigned traffic from accumulating as your team uses new channels.

If you’re seeing persistent Unassigned traffic and can’t pinpoint the cause, our team does GA4 tracking audits that identify and fix channel attribution gaps. Book a free consultation.

#ga4#google-analytics#unassigned-traffic#channel-grouping#utm#tracking#dimensions

Want This Implemented Correctly?

Let our team apply these concepts to your specific setup — with QA validation and 30 days of support.