How to Fix Direct and Not Set Traffic Eating Your GA4 Reports
When Direct traffic climbs above 30 percent, it is rarely people typing your URL from memory. Here is what is really causing it and how to get that traffic properly credited.

Direct traffic is supposed to be people who typed your web address into a browser or opened a bookmark.
If Direct is 35 percent of your sessions, either you have built one of the most memorable brands in history, or your tracking is losing information somewhere. It is almost always the second one.
Direct is not a channel. It is a shrug. It is GA4 saying “this person arrived and I have no idea how”.
What actually causes it
Redirects stripping your campaign tags
This is the biggest one and almost nobody checks it.
Someone clicks a link with UTM parameters on the end. Your site redirects them, from the non www version to www, or from http to https, or from an old URL to a new one. If that redirect is not built to carry the query string through, the campaign information is gone. The visit lands as Direct.
Test it by loading your own ad link with the parameters attached and watching what survives in the address bar afterwards.
Payment gateways and booking tools
A customer goes to Stripe, PayPal, or an external booking system to pay, then returns to your thank you page. To GA4 that return can look like a brand new visit from another website, or worse, from nowhere at all.
The fix is referral exclusions plus proper cross domain tracking.
Links from apps, PDFs, and messages
Clicks from WhatsApp, Slack, email clients, mobile apps, and PDF documents often arrive with no referrer information. There is nothing technically broken here. It is just how those platforms behave. This is the portion of Direct you cannot eliminate, only reduce with tagged links.
Missing UTMs on your own campaigns
Email newsletters, social posts, partner links, QR codes on printed material. If you did not tag it, GA4 cannot categorise it. Half the Direct traffic in a typical account is the marketing team’s own untagged links.
Consent banners blocking measurement
If your consent tool blocks analytics until someone accepts, and the visitor accepts after landing, the original source can be lost by the time tracking starts.
And what about not set?
Not set is slightly different. It means the dimension exists but GA4 has no value for it.
Common causes are events that fire before the session source is established, a Google Ads account that is not linked properly, missing auto tagging, or reports pulled before GA4 has finished processing, which can take up to 48 hours.
If Not Set appears mostly in Google Ads related reports, check that auto tagging is switched on and that the accounts are properly linked. That fixes it more often than anything else.
The fix list, in order of impact
Audit your redirects. Make sure every redirect preserves the query string. This single fix often cuts Direct traffic dramatically.
Set referral exclusions. Add your payment providers, booking tools, and any subdomain you send users to.
Tag every campaign link. Email, social, partners, QR codes. Use a consistent naming convention and stick to it.
Turn on auto tagging in Google Ads and confirm the GA4 link is active.
Set up cross domain tracking if your checkout or booking flow lives on a different domain.
Review your consent setup so measurement starts as early as your policy allows.
Consider server side tracking if you have exhausted the above and Direct is still high. It makes attribution far more durable.
What good looks like
For most businesses, Direct traffic should sit somewhere between 10 and 20 percent of sessions. Strong brands with lots of repeat customers run higher, and that is genuine.
Above 30 percent, assume you are losing attribution data rather than winning at branding.
The reason this matters is not tidy reports. It is budget. Every session sitting in Direct is a session whose real source gets no credit, which means a channel that is genuinely working looks like it is not, and eventually somebody cuts its budget.
Need this fixed properly?
If Direct is swallowing a third of your traffic and you cannot work out where it is coming from, that is a very fixable problem. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.
Have a look at what I do, or book a call and we can go through your setup together.






















