GA4 unassigned traffic: what causes it and how to find the change behind it
GA4 unassigned traffic is traffic whose source and medium match none of the default channel rules, so Analytics labels it Unassigned. It usually comes from UTM values the rules don't recognise, such as a custom utm_medium, or from tag problems that break session data. A sudden rise almost always follows a tagging or tracking change.
What does Unassigned mean in GA4?
Unassigned is the value GA4 uses when no default channel rule matches the traffic source data. Google's own definition is short: it is "the value Analytics uses when there are no other channel rules that match the event data."
GA4 sorts every session into a channel (Direct, Organic Search, Paid Search, Email, Referral, Paid Social and so on) by checking the source, medium and campaign values against fixed rules. Those rules are not case sensitive and you can't edit them. When a session's values fit none of them, it lands in Unassigned.
That means Unassigned is a symptom, not a channel. The visitors are real, the conversions may be real, but GA4 can't tell you where they came from. In a channel report that hides results: a newsletter that drove 300 sessions can look like it drove zero, while Unassigned grows for no visible reason.
Two different problems end up in the same row:
- Values GA4 doesn't recognise. The source and medium are present, but they don't fit any rule, for example
utm_medium=newsletterorutm_medium=social-paid. - Missing or broken session data. The tag fires in a way that loses the session's source, so the session has nothing to classify. Google lists causes such as late configuration, custom client or session IDs and events fired before the Google tag loads.
The first problem is a naming problem and is fixed in your links. The second is a tagging problem and is fixed in Google Tag Manager or in the site code. Telling them apart is the first step of any diagnosis.
Which changes usually push traffic into Unassigned?
Most rises in Unassigned start on the day someone changed how links are tagged or how the Google tag runs. The table maps the usual changes to the rule they break.
| Change | Why it ends up Unassigned | Where to check |
|---|---|---|
New utm_medium value (e.g. newsletter, sms, influencer) | Email needs source or medium to be email, e-mail, e_mail or e mail; Referral needs medium referral, app or link. Anything else matches nothing. | Session source / medium in the "Traffic acquisition" report |
Paid social links tagged with a medium like social-paid | Paid Social needs a social source plus a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$. "social-paid" does not start with "paid". | Session source / medium filtered to social sources |
| Google tag fires late, or events fire before the config | Google says custom events fired before the config command are batched with session_start, which can break session data. | GTM version history, Tag Assistant |
| Custom cookie name or custom client/session ID | Google warns this stops users being tied across sessions and can leave events as (not set). | Google tag settings, site code |
| Server-side tagging switched on | Google notes that a separate client ID can be used for measurements the server processes unless all measurements flow through the server tag. | Server container setup |
| Measurement Protocol events (CRM, backend) | Events sent without a valid session ID can't be tied to a session, so they carry no session source. | Backend or CRM integration |
Notice that none of these is a change in traffic. The visitors arrive as before; only the labels break. That is why Unassigned spikes so often line up with a release, a new email template or a new campaign brief rather than with a real change in demand. For more on naming rules, see our UTM naming convention template.
Read also: UTM naming convention: a practical template and how naming changes break reports · Marketing change log: what it is and how to keep one
How do I find which sessions are Unassigned?
Open the "Traffic acquisition" report, keep Session default channel group as the dimension, and click into Unassigned with a secondary dimension of Session source / medium. The source and medium values tell you which of the two problems you have.
- Open Traffic acquisition
- Add Session source / medium
- Read the values
- Find the first day
Read the source / medium values
- Recognisable values that break a rule (for example
brevo / newsletterorfacebook / social-paid): a naming problem. Find who uses that value and since when. - (not set), blanks or a mix of odd values: usually a tagging or session problem. Look at tag changes, consent setup and server-side tagging.
- Your own domain or a payment provider as referrer: often a cross-domain or redirect issue that drops the original source.
Find the day it started
Switch the report to a daily line and widen the date range to at least four weeks. Note the first day Unassigned rose above its usual share. Then add Session campaign and Landing page as secondary dimensions: if the extra sessions share one campaign or one landing page, you have narrowed the search to one team or one release.
If Unassigned also shows conversions, check them in the conversion paths as well. A sudden drop in attributed email or paid social conversions on the same day is the mirror image of the Unassigned rise. For a broader check of tracking versus real traffic loss, see how to tell a GA4 tracking problem from a real drop.
How do I isolate which change caused the rise in Unassigned traffic?
Put every change from the days before the first bad day on one timeline: link and UTM changes, GTM versions, site releases, consent banner edits and new integrations. Then test the most likely change on its own. A new utm_medium that appears on the first bad day is close to proof.
- List the changes from the week before the rise: new campaigns and their tagged links, email templates, GTM container versions, site deployments, consent or cookie settings, server-side tagging and CRM integrations.
- Match each change to the source / medium values you found. A new value such as
newsletterpoints to the team that started using it; (not set) points to tag or session changes. - Rule out the changes that can't explain the pattern. A bid change in Google Ads can move traffic volume, but it cannot make GA4 misread a medium.
- Fix the one most likely change and watch the next few days. If Unassigned falls back for new sessions, you have proved the cause. Past data does not get reclassified.
With every change on one timeline, you would see that the email platform's new link template went live the same morning Unassigned started to climb, while the GTM release two days earlier changed nothing in the tagging that matters here. In Changeline, the team logs UTM, tag and site changes with date, owner and reason next to the Google Ads edits that are imported automatically, so this check takes minutes instead of a round of messages. See also how to annotate changes in GA4.
Example: On Monday a client asks the agency why Unassigned jumped from 2% to 14% of sessions last week, while email sessions fell almost to zero. Session source / medium shows the new rows are brevo / newsletter. The change timeline shows a GTM version published on Monday, a new newsletter template with utm_medium=newsletter on Wednesday and the rise starting on Wednesday. The GTM version only added a scroll event. The team switches the template to utm_medium=email, logs the fix, and new sessions return to the Email channel. Names and numbers are illustrative.
- MonGTMVersion 18: scroll event added
- WedEmailNew template: utm_medium=newsletter
- WedUnassigned 2% → 14% of sessions
How do I fix Unassigned traffic for each cause?
Fix the cause at the source: rename UTM values so they match GA4's rules, or correct the tag setup so sessions keep their data. GA4 applies the fix to new data only, so log the date of every fix.
Naming problems
- Email: use
emailas the medium (or source). Put the tool or list name in utm_source or utm_campaign instead. - Paid social: use a medium that matches the paid rule, such as
paid_social,paidorcpc, with a social source likefacebookorinstagram. - Partners and affiliates:
referralas medium sends them to Referral. - Channels with no default rule (SMS, QR codes, offline): create a custom channel group with your own rules. You can't edit the default group, but you can make a custom group your primary channel group.
Tagging and session problems
- Load the Google tag before any event, and send page configuration in the
configcommand, as Google recommends. - Use one consistent cookie prefix across the site and don't override the client or session ID.
- With server-side tagging, make sure all measurements for the stream flow through the server tag.
- For Measurement Protocol events, send the client ID and the session ID of the active session, with a timestamp inside that session, if you want them to inherit the session's source.
Not every Unassigned session can be fixed. Some traffic will always arrive without usable source data. The goal is a small, stable share, so that a sudden rise stands out as a signal.
How do I stop Unassigned traffic from coming back?
Agree on allowed UTM values, check new links before they go live, and log every tagging change with its date. Most repeat cases come from a new person or tool using its own naming.
Checklist
- Keep a list of allowed utm_medium values
- Check new email and social templates before sending
- Log every GTM version and site release with a reason
- Review Unassigned share weekly in Traffic acquisition
- Note the date of every fix, since GA4 won't reclassify old data
The log matters as much as the naming rules. When Unassigned rises again in three months, the first question will be "what changed that week?", and a dated list of link, tag and site changes answers it without guessing. Our marketing change log template gives you the columns to start with, and this guide shows how to explain the drop in a client report.
Know which tag change broke your conversions
Changeline puts your team’s changes, imported Google Ads changes and site, tracking and CRM edits on one timeline per client.
Free plan: 1 project, 2 editors, 15 days of history. No card.
FAQ
Is Unassigned traffic in GA4 bad?
A small, stable share is normal, because some traffic arrives without usable source data. It becomes a problem when the share grows or when it hides a channel you report on, such as email or paid social. A sudden rise usually points to a recent tagging or UTM change.
What is the difference between Unassigned and (not set) in GA4?
Unassigned is a channel value: GA4 couldn't match the source and medium to any channel rule. (not set) means a dimension had no value at all, often because session or user data was missing. They often appear together, since sessions with missing source data also match no channel rule.
Will GA4 reclassify old Unassigned sessions after I fix my UTMs?
No. Fixing a UTM value or a tag changes how new data is classified. Sessions already collected keep their channel. A custom channel group can regroup historical data in reports, but the safest habit is to log the fix date so everyone knows where the clean data starts.
Why does my paid social traffic show as Unassigned?
Paid Social needs a social source plus a medium matching GA4's paid rule, such as cpc, ppc, retargeting or anything starting with paid. A medium like social-paid or sponsored fails that rule, so the session falls to Unassigned. Rename the medium in new links.
Can I change GA4's default channel rules?
No. Default channel group definitions can't be edited. You can create a custom channel group with your own rules, for example for SMS or QR codes, and set it as the primary channel group so it becomes the editable default in your reports.