Direct Traffic in GA4

November 15, 2025

It’s nightmare isn’t it.

You open your Google Analytics 4 reports, ready to see how your latest campaigns are performing, and… whoosh. The ‘Direct’ traffic segment is massive. Again.

I get asked loads about direct traffic in training sessions.

It’s that mysterious black hole in your analytics, making it impossible to confidently report on your campaign ROI.

You know you didn’t get 10,000 new visitors from people dutifully typing your full URL into their browser.

Here’s the thing: most of that ‘direct’ traffic probably isn’t direct at all.

It’s a symptom.

It’s misattributed traffic from your email, paid, or social campaigns.

It’s lost referral data, technical gremlins, or simple tagging mistakes that are making your reports next to useless.

So, when should you actually worry?

As a general rule, I always say if your ‘Direct’ traffic is consistently over 20% of your total site traffic, it’s a strong signal that something is broken.

Diagnosing the cause can be tricky, as the information simply isn’t there.

But don’t worry, we can play detective. Here are the most common causes I see when unpicking this problem for clients, broken down into what you can fix, what your developer needs to fix, and what you just need to be aware of.

Table of Contents

Checking for Direct Traffic in the browser

A great way to debug whether or not traffic is classifed as direct or not is using the console.

Head to the console in the browser (right click, click inspect and choose Console in the tabs at the top).

If you type document.referrer into the console it will come up with the referral.

If it is empty (”) then there is no referral and will more than likely end up in direct.

 

document.referrer

Where to see Direct Traffic

It’s fairly simple to see Direct traffic in GA4.

Head to your report section and choose traffic acquisition.

From there, you should be able to see Direct as a row.

Bear in mind though – because you can customise reports in GA4, it might not look the same – and you may need to dig around for it.

You could also build a report in the explore section to primarily focus on Direct traffic.

Direct Traffic

Your Campaign & Link Tagging Needs a Check-Up

This is the most common culprit and, luckily, the easiest one for you to fix. This is all about data being lost before it even gets to your site.

  • Broken or Missing UTM Parameters: This is ground zero (this could also be the cause of Unassigned Traffic). A simple typo (utm_source=Email vs. utm_sauce=email), a capitalisation error, or a misapplied tag in your email or paid campaigns means Google Analytics doesn’t know where the click came from. Its solution? Dump it in ‘Direct’. This can also be the case if the UTMs themselves are wrong e.g. instead of ?utm_source=linkedin&utm_medium=social you use ?utm_source=linkedin+utm_medium=social (notice how I used the + symbol there).

    • The Fix: Audit and standardise. Create a simple, shared spreadsheet for your team that defines your naming conventions (e.g., utm_source=linkedin, utm_medium=social-paid). Consistency is your best defence here. A single capitalised Email vs. email will split your data.

  • Forgetting to Tag your non-web documents and links: Are you running a campaign in your own newsletter or putting links in your annual report PDF or Doc? If you’re creating a PDF and linking back to your site, you must use UTM parameters to make sure that referral data is captured, even if the source isn’t otherwise trackable.

  • Link Shorteners Stripping Data: Services like Bitly and Owly are great, but they can strip referral data. You must put the full, UTM-tagged URL into the shortener before you create the short link. If you shorten the raw link, all that traffic will look like it came from nowhere. This happens because the user is technically being referred by bit.ly, not your original source, and the redirect process loses all the original context.

  • Untagged Google Business Profile (GBP) Links: A classic offender, and one that’s so easy to fix. Your Google Business Profile is a source of incredibly high-intent traffic. If you haven’t added specific UTM tracking to the website link in your GBP listing, every single click from your profile (e.g., from Google Maps) will land straight in the ‘Direct’ bucket, robbing your local SEO efforts of their credit. The brilliant Claire Carlile has a great guide and free document on implementing UTMs for Google Business Profile.

Technical Reasons for Direct Attribution

If your tagging is watertight, the problem is likely on your website itself.

These technical issues are notorious for stripping referral data after the user arrives.

  • Your Cookie Consent Banner: This is a huge one. I once audited an account with 99% new users and sky-high direct traffic. The culprit? Their “unobtrusive” cookie banner.

    • Problem 1 (Delayed Consent): The banner was so subtle that users could click a link to another page before giving consent. That second page-load has no memory of the first, so the original referral data is lost.

    • Problem 2 (The Page Refresh): Even worse, some consent platforms, when you click “Accept,” refresh the entire page. This refresh creates a new session, strips the original referral data, and—you guessed it—everything from that point on is ‘Direct’. Your cookie solution should force interaction on the first page and never trigger a page refresh.

  • Missing GA4 Tracking Code: Does your GA4 tag fire on every single page? Imagine a user clicks from a paid ad to a landing page (tracked). They then click to a thank-you page (NOT tracked), and then to your homepage (tracked). By the time they hit that third page, the original referral data is long gone.

  • Dodgy Redirects: Redirects, especially JavaScript-based ones, are notorious for losing referral data. If you have old campaign links floating around that hit a redirect chain before landing on the final page, the referral data can easily get lost.

  • The HTTP-to-HTTPS Hop: This is less of an issue these days, but it still happens. If you have an old, powerful backlink on a major site that still points to the http:// version of your website, that redirect to the secure https:// version can sometimes cause the referral source to be lost. It’s worth auditing your top-referring backlinks to check.

  • Dodgy Backlinks: Just jumping on the HTTP-to-HTTPS issue – if you have a really important backlink to your site. And that links is HTTP (the referring site is HTTPS), the link will almost always go in Direct. Check those backlinks SEO peeps!

  • Cross-Domain Tracking Failures: This is a big one for hospitality or e-commerce sites using a third-party booking engine. For cross-domain tracking to work, the click from your site to the booking site must be a standard <a href...> link. When a user clicks that button, GA4 needs to physically ‘decorate’ the outgoing link with a special parameter (you’ll see _gl=... in the URL). This parameter carries the original session info over to the new domain. If you’re using a JavaScript event that just opens a new window, that decoration never happens, the ‘handshake’ fails, and the booking engine sees a new ‘Direct’ user.

When it’s actually direct

Finally, don’t forget that some of that traffic is genuinely direct. This includes:

  • Users who have your site bookmarked.

  • Users who type yourwebsite.com directly into their browser.

  • …and, very likely, your own internal team and employees visiting the site every day (using the above methods). This can seriously skew your numbers. You should always filter out your internal office IPs. In GA4, you can do this under Admin > Data Streams > Configure tag settings > Define internal traffic. This is a five-minute fix that will immediately clean up your data

Factors You Can’t Control (But Should Know About)

Sometimes, it’s not your fault. These factors are just part of the modern web.

  • Dark Social: When someone copies your link and shares it via WhatsApp, Slack, a text message, or a private email. There is no referral data to pass, so it’s all ‘Direct’. You have to accept that a healthy portion of this will always exist.

  • Rel=”noreferrer”: If an external site links to you but uses the rel="noreferrer" attribute on that link, their browser is specifically instructed not to pass on any referral information. This is common on many large platforms for security and privacy reasons. Perhaps you can talk to the website owner, but more often than not, it’s a no go alas.

  • Apple’s Intelligent Tracking Prevention (ITP): Apple’s privacy features mean first-party cookies can expire much faster (sometimes in 24 hours). A user might click a paid ad, browse, and leave. A week later, they remember your site and type the URL. GA4, with its expired cookie, sees them as a “new user” with a “Direct” source, even though their original visit was from a paid campaign.

  • Bot Traffic: While GA4 is better at filtering it, some bot and spam traffic can still get through, and it often appears as ‘Direct’.

Putting Your Data Back in its Box

 

Chasing down ‘Direct’ traffic can feel like a ghost hunt. But by starting with a simple 20% benchmark, you can quickly tell if you have a real problem.

Your best bet is to work through this list methodically. Start with the low-hanging fruit you can control (your UTMs, GBP links, and internal traffic filters) before you rope in your development team to investigate the cookie banner and redirects.

Fixing this isn’t just a vanity exercise. It’s about getting the credit you deserve for your campaign successes and making sure your data is clean, trustworthy, and ready to inform your next big strategic move.

It ain’t fun, it’s not pretty, but it might help you get better knowledge and understanding of your campaign’s performance.

Kyle

Author

Hello, I'm Kyle Rushton McGregor!

I’m an experienced GA4 Specialist with a demonstrated history of working with Google Tag Manager and Looker Studio. I’m an international speaker who has trained 1000s of people on all things analytics.

Scroll to Top