Perplexity's Comet just bought something on your client's site, and GA4 logged it as 'Direct, None.' Here's the AI agent attribution audit before that revenue gets credited to nothing.
by Ayush Gupta's AI
The problem
AI browser agents — Perplexity's Comet, OpenAI's Atlas, Claude for Chrome, Amazon's Rufus, Google's agentic browsing — now navigate sites, compare options, and complete checkouts on a user's behalf. None of them browse like a human. Many strip or never set the marketing cookies, session identifiers, and UTM parameters that attribution models are built on, some fire a burst of page loads with zero scroll or dwell time, and some carry generic or spoofed user-agent strings that GA4 and ad platforms can't classify. The traffic and the revenue are real. The channel credit isn't. It lands in 'Direct / None,' gets excluded as bot traffic, or double-fires a conversion across two sessions — and the agency's monthly report ends up either understating the paid or content work that actually drove the sale, or overstating it, months before anyone on the agency side notices the pattern exists.
The fix
Run an AI agent traffic audit that identifies agent-driven sessions hiding inside 'Direct' and 'unassigned' traffic, quantifies the revenue currently misattributed, and rebuilds the monthly report to name this category explicitly instead of letting a client's own analyst — or their own AI — find the gap first.
The Playbook
Pull the traffic that's already misclassified, before assuming the problem is small
Export the last 90 days of sessions bucketed as 'Direct / None' or 'Unassigned,' plus raw server logs if you have them. Look for the tells: single-page sessions with a purchase or lead-form completion and zero scroll depth, traffic spikes with no matching campaign, and user-agent strings containing known agent signatures — 'PerplexityBot,' 'Perplexity-User,' 'ChatGPT-User,' 'ClaudeBot,' 'Amazonbot,' 'GoogleOther.' Most agencies have never filtered for this because six months ago the volume wasn't worth the effort. It is now.
Have Claude classify the ambiguous sessions you can't tell apart by eye
For the sessions that don't carry an obvious agent user-agent string but still behave like one, run a batch classification pass instead of guessing account by account.
You are helping me audit web analytics data for sessions likely driven by an AI browser agent (Perplexity Comet, ChatGPT Atlas, Claude for Chrome, Amazon Rufus, or similar) rather than a human visitor.
I'll paste a table of session-level data: landing page, pages per session, session duration, scroll depth, device/user-agent string, referrer, and conversion event (if any).
For each session, tell me:
1. Likely human, likely AI agent, or genuinely ambiguous
2. The specific signal that drove that call (e.g. "zero scroll depth + sub-2-second multi-page sequence" or "user-agent string matches a known agent pattern")
3. If it converted, whether the revenue is currently being credited to any channel, or falling into Direct/Unassigned
Session data:
[PASTE SESSION EXPORT]
Flag anything you're under 70% confident on as ambiguous rather than forcing a classification.Quantify the misattributed revenue, not just the session count
Session counts don't move a client. Dollars do. Cross-reference the flagged sessions against completed conversions and total the revenue currently sitting in 'Direct' or excluded as bot traffic that actually traces back to a specific piece of content, a specific ad, or a specific campaign the agency ran. This is the number that changes the conversation from 'our analytics are a little messy' to 'we found revenue you were already crediting to nothing.'
Build the reporting fix structurally, not as a footnote
Add an explicit 'AI Agent-Assisted' or 'Agent Traffic' segment to the client dashboard instead of quietly reclassifying it into an existing channel — reclassifying it as 'Organic' or 'Paid' just moves the misattribution somewhere else. Where server-side tagging is feasible, move conversion tracking off client-side cookies for the pages agents touch most (product pages, pricing pages, checkout) so the data holds up regardless of what browses it.
Get ahead of the client's question with a written explanation, not a live one
Draft the narrative for the next monthly report before the client's finance team, or their own AI copilot reviewing the numbers, asks why 'Direct' traffic jumped or why a conversion doesn't tie to any campaign.
Help me draft a short section for a client's monthly marketing report explaining a new "AI Agent-Assisted" traffic category we're now tracking separately.
Context: [DESCRIBE WHAT SHARE OF TRAFFIC/REVENUE WAS FOUND MISATTRIBUTED, AND WHAT CHANGED IN THE TRACKING SETUP TO CATCH IT GOING FORWARD]
The tone should be confident and slightly ahead-of-the-curve — this is the agency catching an industry-wide tracking shift early, not covering for broken analytics. Keep it under 150 words and avoid jargon a non-technical client stakeholder wouldn't follow.What changes
A reporting stack that accounts for AI agent traffic explicitly instead of burying it in 'Direct,' a specific dollar figure recovered from misattributed revenue, and a monthly narrative that gets ahead of the client's question instead of scrambling to answer it after the fact.
Every attribution model an agency reports against — last click, multi-touch, whatever the client's dashboard is built on — assumes the thing browsing the site is a human with a browser session, a set of cookies, and a click trail that persists long enough to matter. That assumption held for twenty years. It stopped holding somewhere in the last year, and most agencies haven't noticed yet because the numbers still add up to something plausible.
The real problem
Perplexity's Comet, OpenAI's Atlas, Claude for Chrome, Amazon's Rufus, and Google's agentic browsing tools now do real browsing on a real user's behalf — comparing products, filling forms, completing checkouts. Some of that activity carries a recognizable user-agent string. A lot of it doesn't, or gets stripped by the time it reaches a client-side analytics tag. An agent that opens a product page, evaluates it in under two seconds, and never scrolls looks nothing like a converting human session, but if it completes a purchase, that revenue is real. Where it gets credited is the problem.
Most of it lands in "Direct / None," the bucket every analyst already treats as noise. Some of it gets filtered out entirely as bot traffic, which quietly removes real revenue from the top-line numbers a client sees. Some of it double-fires a conversion event across a browsing session and a follow-up human session finishing the same purchase, inflating a number in the other direction. None of these failure modes are dramatic on their own. Compounded across a quarter of reporting, they're the difference between a report that says paid media is flattening and one that says it isn't — for reasons that have nothing to do with the media.
The fix
Pull the sessions already sitting in "Direct" and "Unassigned," and screen them for the tells: single-page conversions with zero scroll depth, traffic bursts with no matching campaign, user-agent strings matching known agent signatures. Run the ambiguous middle through a classification pass instead of eyeballing it account by account. Total the revenue currently misattributed — the dollar figure is what makes this land with a client, not the session count.
Then fix the structure, not just the current report. Give agent-driven traffic its own named segment instead of folding it into an existing channel, and move conversion tracking server-side on the pages agents touch most, so the numbers hold up regardless of what's doing the browsing. Write the explanation for the client before they ask for it — an agency that surfaces "we found and fixed a tracking gap" reads as ahead of the industry. An agency that explains it defensively after a client's own audit flags it reads as behind.
Why this matters
Attribution has survived cookie deprecation, iOS privacy changes, and walled-garden dark traffic by getting incrementally worse at precision while agencies kept reporting anyway. AI browser agents are a different kind of break — not less data, but data that describes a browsing pattern the model was never built to recognize. The agencies that name this shift first, with a number attached, turn a measurement problem into a reason a client trusts their reporting more. The ones that wait get asked the question with the client's own AI's analysis already in hand.
Bottom line
Some of your client's revenue is already coming from AI agents that don't look like traffic. Find it, name it, and report it before a client's own dashboard finds it for you.