Problem
GA4 unassigned traffic: how to fix it
Unassigned is not a channel. It is what the property shows when a session has source and medium values that do not match any channel definition, or when it has no traffic source information at all. That distinction matters because the first is a tagging convention problem you can fix in an afternoon, and the second is usually a broken measurement chain that needs real work.
By CartKernel · Last reviewed 2026-09-07
Does this look familiar?
- A large unassigned row appears in the acquisition reports alongside the named channels
- Unassigned carries revenue, so real orders are being credited to nothing
- The row grew after a campaign launch, a consent banner change or a checkout change
- Paid campaigns show far fewer sessions in analytics than clicks in the ad platform
- Unassigned is concentrated in one country, one browser or one device type
- Sessions that begin on a payment or booking domain appear as unassigned
Causes, ranked
Why it happens, most common first
Check them in this order. The first two account for most cases we open.
- most common
Campaign parameters do not match any channel rule
Channel groups match on specific source and medium values. A medium written as paid-social, ppc-ads, newsletter or something invented by a partner will not match, so the session lands in unassigned even though the tagging is present and consistent. Capitalisation and stray whitespace cause the same result.
- most common
The session has no traffic source at all
This happens when the first event of a session arrives without referrer or campaign context. Common triggers are events sent from a server without session context, a redirect that strips query parameters before the page loads, and app or webview traffic that arrives with nothing attached.
- common
Cross domain measurement is not configured
When checkout, a booking step or a payment provider runs on a different hostname, the visitor starts a new session there. If that domain is not listed in the cross domain configuration, the new session has no source and the purchase inside it becomes unassigned revenue.
- common
Consent settings prevent source information being stored
Where analytics storage is denied, the property cannot read or write the identifiers that carry campaign information between pages. Depending on configuration, the resulting sessions either model into channels or fall into unassigned. This concentrates in regions with prominent consent banners.
- common
Ad click identifiers are lost on the way in
A redirect chain, an aggressive URL cleaning script, a cached page served without query parameters or a link shortener that drops parameters removes the click identifier. The visit still arrives, but the property has nothing to attribute it to and the ad platform reports a click you cannot see.
- occasional
Events arrive outside a normal session
Measurement protocol calls without a client identifier and session information, offline conversions imported without matching, and late arriving events from a closed browser all produce activity that cannot be attached to an acquisition source.
The fix
In this order
Each step is something you can do today. Do them in sequence; skipping ahead is how a review fails twice.
Prevent it next time
- Publish one campaign tagging convention and give everyone a link builder that enforces it
- Add every new domain in a customer journey to cross domain settings on the day it goes live
- Test the click parameter survives redirects whenever a landing page or caching rule changes
- Watch the unassigned share as a monitored metric rather than noticing it during a review
Split unassigned into its two kinds
Build a report of unassigned sessions broken down by session source and session medium. Rows with values present are a naming problem. Rows showing nothing for both are a measurement problem. Handle them separately, because the fixes share nothing.
Standardise campaign tagging to values the channel rules recognise
Agree one convention: lowercase throughout, cpc for paid search, email for email, and source values that name the actual platform. Publish it, rebuild the links you control, and update the templates any partner or tool uses to build links for you.
Create custom channel groups for what remains
Where a partner cannot change its parameters, define a custom channel group that maps those exact values into the channel where they belong. Apply it going forward and note that custom groups can be applied to historical reporting in the property, unlike some other settings.
Configure cross domain measurement and referral exclusions
List every hostname a visitor crosses during a normal journey, including payment providers and any subdomain running a separate application, in the cross domain settings. Add payment and authentication domains to the unwanted referrals list so they do not start new sessions.
Protect click identifiers through redirects
Test each ad landing page by following a real ad click and checking whether the click parameter survives to the final URL. Fix redirects to preserve the query string, and make sure any caching layer varies on those parameters rather than serving a stripped copy.
Set consent up to signal rather than block
Configure the consent tool so tags load and receive explicit signals in both directions, with defaults set per region. This lets the property model behaviour for visitors who decline instead of collecting sessions with no context at all.
Give server sent events the context they need
Any event sent from a server must carry the same client identifier and session identifiers as the browser session it belongs to. Without them, the event is treated as a new sessionless visit, which is a common source of unassigned revenue on stores using server side collection.
Recheck after a full week and record the residual
Once the changes are live, wait a complete week and measure the unassigned share again. Note what remains and why, so the next investigation starts from a known baseline rather than from scratch.
When to get help
Get help when unassigned carries a meaningful share of revenue and the split between naming problems and missing sessions is not obvious from the reports, because at that point the work involves the measurement architecture rather than settings. That usually means checking how sessions are stitched across domains, whether server collection is passing identifiers correctly, and how consent is implemented in each market. Attribution decisions across paid channels rest on this data, so it is worth resolving properly rather than filtering the row out of reports.
Free. We reply within one business day.
What is the difference between unassigned and direct traffic?
Direct means the property saw a session with no referrer and no campaign, which it treats as a known state and places in its own channel. Unassigned means the values present did not match any channel definition, or attribution could not be resolved at all. They look similar in a report but point at different causes.
Can I reduce unassigned by editing the default channel group?
The default group cannot be edited, but you can create a custom channel group that matches your own source and medium values and use it in reports. Custom groups apply to historical data in the property, which makes them useful for cleaning up campaigns already run.
Why does unassigned appear mainly on purchases rather than on sessions?
Because purchases often happen after the visitor has crossed into a checkout or payment domain. If that hostname is not covered by cross domain settings, a new session starts there with no source, and the order lands in it. Sessions earlier in the journey were attributed normally.
Is some unassigned traffic unavoidable?
Yes. Privacy settings, unusual browsers, links shared without parameters and events arriving outside a session will always leave a residue. The aim is to get it small and stable, then treat any growth in the share as a signal that something in the measurement chain has changed.
Services that fix it for good
Related problems, answers and terms
Stop the leak.
A free Growth Analysis finds what is broken and ranks it by the revenue it costs you.