EN RO
Talk to us

Why 38% of your traffic says "Unassigned" in GA4 (and how to get it back)

When GA4 files a session under "Unassigned", it lost track of the visitor's source. The five usual causes, and how to put those sales back on the map.

Founder of Raw Ideas, running it since 2015

Tracking 6 min read

In this article5 sections
  1. What “Unassigned” means
  2. The five causes, most common first
  3. Why it costs you money
  4. How to get it back
  5. What good looks like

Open your GA4, go to the Traffic acquisition report, and look at the channel called Unassigned. If you’re like most stores I audit, it’s 20, 30, sometimes 40% of your sessions, and every one of those is a visit GA4 gave up trying to explain.

It looks like a bug, but Unassigned is GA4 being honest with you: “a human showed up, something happened, and I have no idea where they came from.” On one store last month it was 38%. More than a third of the business, filed under “who knows.”

You can’t file that under reporting and move on. It’s the exact number your ad platforms are bidding against.

What “Unassigned” means

GA4 sorts every session into a channel (Organic Search, Paid Search, Direct, Email, and so on) using a set of rules based on the source, medium and campaign it can read off the session. Unassigned is the bucket for sessions that matched none of the rules. GA4 couldn’t even call it Direct. It just shrugged.

A healthy account has Unassigned somewhere under 5%. When it climbs into the double digits, something upstream is stripping the signals GA4 needs before they ever arrive.

The five causes, most common first

  • Consent Mode denials. Since Consent Mode v2, if a visitor doesn’t accept analytics cookies, the tag fires in a cookieless mode with no client identifier. Without modeling turned on, GA4 can’t stitch the session to a source, so it lands in Unassigned. In the EU this alone can be 20-30% of traffic.
  • Lost gclid and UTM tags. A redirect, an “open in app” hop, a consent wall that reloads the page, or a marketing tool that rewrites the URL can each drop the click ID before GA4 reads it. The visit still happens; the why is gone.
  • Cross-domain gaps. Checkout on a different domain, a payment provider that bounces the user back, a booking widget on a subdomain. If cross-domain measurement isn’t configured, the return trip looks like a brand-new, source-less session.
  • Client-side loss. Ad blockers, Safari’s Intelligent Tracking Prevention, slow connections that abandon before the tag loads. The browser is a hostile place to measure from, and it’s getting more hostile every year.
  • Redirects and link shorteners that strip query strings on the way through. Your email tool swears it tagged the link; the redirect ate the tag.

None of these means “GA4 is broken.” In every case it’s signal dying in the browser before it reaches the server.

Why it costs you money

Your Google and Meta bidding optimises on the conversions it can see, which is not the same thing as reality. If a third of your sales are unattributed, the algorithm is learning from a biased two-thirds. It confidently pours budget into the channels that happen to be measurable, and quietly starves the ones that aren’t.

Bad measurement ends up defunding the channels that work, because they’re the ones going dark in your data. Fix the measurement and the same budget gets smarter, with nothing else changed.

I’ve watched a “losing” channel turn out to be the best performer the moment its conversions stopped disappearing. Same spend, same creative. The only thing that changed was that we could finally see it.

How to get it back

Clicking around in the GA4 settings won’t fix Unassigned. Moving the measurement off the fragile browser and onto a server you control will:

  1. Server-side tagging. A server-side tracking setup collects the event first-party, from your own subdomain, then forwards it to GA4, Google and Meta from the server. Fewer things in the middle to strip the signal.
  2. Consent Mode v2 with modeling. Configure it properly and GA4 recovers the shape of the consented-away traffic instead of dumping it into Unassigned.
  3. Cross-domain and UTM hygiene. Tag every campaign link consistently, and make sure the checkout, payment and subdomain hops all carry the session through.
  4. The Conversions API for Meta and enhanced conversions for Google, fed from the server and deduplicated against the browser, so the platforms bid on complete data.

Done right, Unassigned drops back under 5% and the conversions your dashboard couldn’t see show up in your own GA4. Usually that’s 30-60% of conversions that were hiding client-side.

What good looks like

  • Unassigned under 5% of sessions.
  • The order count in GA4 within a few percent of the order count in Shopify and your bank.
  • Bidding that stops changing its mind every week, because it’s finally learning from the whole picture.

If your Unassigned is in the double digits right now, don’t explain it away in a meeting. It’s the cheapest performance you’ll ever recover, because you already paid for those visitors and just lost the receipt.

In our projects so far, the fix has paid for itself within six months at most. The price and what’s included are on the pricing page. If the number in your own report is bugging you now, start here.

Tracking done right, our ad. A 7-second preview.

Our own ad about tracking

This is our own ad for tracking audits. In 70 seconds it shows how bad tracking data sends ad budget to the wrong campaigns. We wrote the script and did the design and animation ourselves.

Want your missing conversions back?

Fix My Tracking is a fixed-price project: €1,500, about 7 days, with a before-and-after report in your own GA4. In our projects so far it has paid for itself within six months.

Rather call? +40 724 242 442

Keep reading