Services
Analytics & MeasurementAI & Search VisibilityMarketing OptimizationAboutThinkingProductsGo Forward

Direct traffic is not a measurement channel. Stop reporting it like one.

What GA4 actually puts in the direct bucket, how to test the claims made about it, and the two metrics that should take its place in your monthly report.

It happens in almost every monthly review. Direct traffic is up forty percent. The brand lead reads it as awareness finally landing. The analytics lead says the tags are probably broken. The media agency says their flight is in market. All three are plausible, none can prove it, and the meeting moves to the next slide.

The reason it never resolves is that the report contains a category error. Direct sits in the channel table next to Paid Search as though it were a peer. It is not.

Direct is a residual, not a source

Every session runs through a provenance test. GA4 looks for a referrer header, then UTM parameters, then a click identifier, then a cross-domain linker parameter. If one resolves, the session gets assigned. If none do, it is recorded as direct / none.

Direct is not a description of how someone arrived. It is a record that GA4 could not determine how they arrived.

How GA4 classifies a session Four checks, in order. Direct is what happens when all four fail. Session arrives 1. Referrer header present? Did the browser say where it came from yes Organic Search or Referral including the AI Assistant channel no 2. UTM parameters present? Was the link tagged before it shipped yes Email, Paid Social, Display whatever the tag says it is no 3. Click ID present? gclid, gbraid, wbraid, msclkid yes Paid Search auto-tagged from the ad platform no 4. Cross-domain linker present? _gl parameter from a linked property yes Session continues original source is preserved no direct / none Not a source. A record that no source could be identified.

Every other row in the table has one shared cause. Direct has four, moving in different directions, in proportions that change monthly without anyone touching a campaign.

The four populations inside it

PopulationWhat it isDirection
Brand demandTyped URL, bookmark, HCP returning to a saved portalThe part worth reporting
Stripped provenanceAI assistants, in-app browsers, PDF viewers, Teams and SlackGrowing structurally
Tagging failureThe link existed but carried no parameters, or lost them in transitFixable, usually larger than expected
Internal trafficMLR reviewers mid-cycle, agency QA, field teams, unfiltered corporate rangesNoise. Exclude it, do not explain it

The third row is heavier in biopharma than in most verticals. Approved email frequently ships without campaign parameters. Field-shared links get copied out of a system and pasted into a message. QR codes on leave-behinds and ISI cards point at a clean vanity URL nobody thought to tag. A television spot drives a vanity domain that redirects twice, and the parameters do not survive the second hop. Cross-domain movement between a branded site and a separate support hub breaks when the linker is misconfigured, and each of those sessions restarts as direct.

Three checks that decompose it

Landing page distribution. Real type-in traffic concentrates on the homepage and a few memorable entry points. Direct landing on deep pages, a locator, or a PDF is stripped provenance or a redirect problem, not someone typing from memory.

Timing correlation. Overlay direct volume against media flighting, print and conference drops, and MLR review windows. Review traffic produces sharp spikes that align with submission dates and vanish afterward. If nobody has checked this, it is usually the fastest win in the account.

Redirect chain testing. Follow the actual QR code, the actual vanity URL from the actual spot, with a header inspector. Test what shipped, not what was specified. Parameter loss on the second hop is common and invisible from inside GA4.

Where the AI traffic went

Much of what has been added to direct buckets recently arrived from AI assistants, and GA4 structurally cannot see most of it.

Where AI-referred sessions land in GA4 Only one of these three destinations is labelled as AI. CAPTURED AI Assistant channel Added by Google in May 2026. Recognises ChatGPT, Gemini, Copilot, DeepSeek, Grok. Does not recognise Perplexity. Requires a surviving referrer. MISATTRIBUTED 35–70% arrive with no referrer at all In-app browsers and assistant sandboxes drop the header before the click lands. Lands in direct / none INVISIBLE google / organic AI Overviews and AI Mode pass no distinct signal. Indistinguishable from a standard blue link click. No reliable way to isolate it. Range drawn from two published 2026 analyses: 371,847 sessions (lower bound) and 446,405 visits (upper bound). Treat the range as the finding. Any single point estimate in this category should be discounted.

This is not new, which matters for anyone inclined to dismiss it as hype. SparkToro ran a controlled experiment in 2023 across 1,113 visits and sixteen platforms and found every visit from TikTok, Slack, Discord, Mastodon, and WhatsApp was misattributed as direct. The referrer has been leaking for years. Assistants are the first source large enough that people noticed.

For a biopharma brand the shape is specific. Assistants are well suited to synthesizing exactly what sits on your site: indication, dosing, safety, coverage, and where to get treated. Gated HCP portals are invisible to the crawlers feeding those systems, so the assistant answers from an unbranded source and the branded site receives a click with no provenance attached.

The case for direct as a real signal

None of this makes direct meaningless. In biopharma it is often the closest thing to a live awareness signal a brand team has, because upper-funnel spend has almost no clean digital linkage.

A Video Advertising Bureau analysis of sixteen pharma DTC television advertisers found 88 percent recorded their highest branded search volume once the television campaign launched. Ozempic more than doubled branded query volume in the week its first spot aired. Navigational demand responds to awareness spend, fast enough to be useful.

The mistake is not using direct as a demand proxy. It is reading that proxy off a row that also contains three populations moving for unrelated reasons. A tagging fix and a media flight produce identical shapes on that chart.

Testing the claim that media drove it

The most common explanation offered for a direct surge is that media went in market. Sometimes that is correct. The problem is that it is almost always asserted rather than tested, and it is asserted in only one direction. When direct rises during a flight, media is credited. When direct falls during a flight, nobody claims it. An attribution argument that only runs one way is not measurement.

The claim is testable with data you already have. Six checks, each independent. Any one of them failing should end the discussion.

What is being claimedWhat would have to be trueWhat kills it
Awareness drove people to the siteBranded search moved in the same window and directionBranded search flat while direct rose
Media exposure caused itLift concentrated in exposed marketsLift uniform across exposed and unexposed geographies
New people discovered the brandThe lift is new usersThe lift is returning users
Media weight produced itThe curve builds and decays with flightingStep change on a single date, then flat
People saw the ad and came directThe lift lands on the homepage and brand entry pointsThe lift lands on campaign landing pages
Media drove incremental sessionsPlatform clicks reconcile to measured sessionsLarge click-to-session gap on that campaign

Start with branded search. Awareness does not produce direct-only lift. People who encounter an ad overwhelmingly search rather than type a URL from memory, so a genuine awareness effect appears in branded query volume and direct together. If direct is up forty percent and branded search is flat across the same window, the conversation is finished in one slide. This is the cheapest test in the set and the one most likely to settle it.

Then run the geographic control. Media is nearly always geo-targeted or at minimum geo-weighted, which gives you a natural experiment nobody had to design. Split direct sessions by region into exposed and unexposed markets and compare the rate of change. Uniform lift across both is not a media effect. National broadcast complicates this, since there is no true unexposed control, but even national buys carry market weighting, and digital layers almost always vary geographically.

Read the shape, not just the direction. Awareness effects build, peak, and decay with weight. Tagging changes and technical events produce step functions that begin on an exact date and hold flat afterward. A square step starting on day one of the flight is not consumer behavior. It is a system change.

Which raises the confounder almost nobody controls for. Media launches ship new landing pages, new redirect rules, and new vanity URLs. The flight date and the site change date are frequently the same date. The correlation is real and the causal story is backwards, and no amount of staring at the trendline will separate the two. Only the geographic control and the landing page signature will.

One result gets misread as agreement. If the direct lift landed on campaign landing pages rather than the homepage, that traffic probably is the media’s traffic. It arrived without parameters. That is not brand lift, it is a tagging defect, and it means the platform-side numbers are also wrong. The correct conclusion is to fix the tagging, not to celebrate the awareness. Those two conclusions lead to opposite budget decisions.

Finally, reconcile the arithmetic. If the platform reports a click volume the property never recorded as sessions, the gap has to be somewhere, and direct is usually where. That is not inference, it is subtraction, and it is the least arguable evidence in the set.

What to report instead

Take direct out of the channel table One row that answers two unrelated questions becomes two metrics that each answer one. TODAY Organic Search sessions, CPA Paid Search sessions, CPA Email sessions, CPA Referral sessions, CPA Direct up 40%. Meaning? Brand demand, broken tags, AI, or MLR reviewers INSTEAD Organic Search Paid Search Email Referral no direct row Brand Demand Index Direct plus branded organic, deduplicated, indexed to a pre-flight baseline. Weekly. Leading indicator. Never a CPA. Unattributed Rate Direct plus unassigned as a share of sessions. Give it a threshold and an owner. Data quality. Triggers an investigation.

Brand Demand Index. Direct plus branded organic, deduplicated, indexed to a pre-flight baseline, reported weekly and lag-correlated against media flighting. A leading indicator of awareness. Never attach a cost per acquisition to it, and never let it into an efficiency comparison against paid search.

Unattributed Rate. Direct plus unassigned as a share of sessions. A data quality metric, not a performance metric. Give it a threshold and an owner, and review it the way you would review a tag firing rate. When it moves, the response is an investigation rather than an interpretation.

Two metrics, two questions, no ambiguity about which one a change belongs to. It takes an afternoon of configuration.

What happens next

The share of sessions arriving with no usable provenance is going up, not down. Consent enforcement removes some, referrer policies remove more, in-app browsers strip headers by design, and assistants are adding volume faster than the fixes are landing.

Frameworks that assume every session can eventually be attributed will keep degrading, and that monthly argument will keep happening. The ones that hold up separate the demand signal from the data quality problem and report each honestly. That is a smaller change than it sounds like. It is mostly a decision to stop pretending a residual is a channel.

Interested in reconciling your GA4 data? Turning direct — and the rest of the channel table — into numbers you can defend is the core of our Analytics & Measurement work.

See how we can help →

More from Thinking: The 76% conversion rate that wasn’t · You can rank #1 on Google and still be invisible in AI search

← All thinking