·4 min read·Agency Play #143

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

Client ReportingHigh pain·3-4 days for the initial audit, then a standing monthly check to implement

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.

Performance marketing agenciesE-commerce agenciesPaid media agenciesGrowth and CRO agenciesAgencies managing ad spend on retainerAnalytics and reporting teams

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

1

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.

2

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.
3

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.'

4

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.

5

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 dangerous version of this isn't the agency missing the shift. It's the client's own finance or ops team running the same analytics export through their own AI assistant, noticing the Direct-traffic spike, and asking the agency to explain a pattern the agency hasn't looked for yet.

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.

More agency plays every week.

Real workflows for agency founders, not generic AI advice.

Subscribe