How to Track AI Referral Traffic in Your Analytics
Visits from AI answers often get miscounted as direct traffic. This guide covers how to catch and separate them.

As the recent ChatGPT UTM tag bug showed, visits that actually came from an AI answer often show up in analytics as direct traffic. When a tag or referrer doesn't carry through, a visit that really came from an AI service ends up as an unlabeled number with no clear source. This guide covers a few practical ways to catch and separate that traffic.
Why it shows up as direct
AI chatbots and AI search results handle referrer data differently when they open a link. Some services attach their own tag, but when they don't, analytics tools have no way to classify the visit other than as direct.
Even the same service can change how it handles tags without warning, as part of a routine update. If a site owner doesn't notice for a few weeks, that stretch of AI-driven traffic gets folded entirely into the direct number. That's exactly how the ChatGPT tagging gap came to light.
How an app renders an answer also matters. Whether a link opens in a new tab or hands off to an external browser affects how much referrer data survives, so results can differ by device or app version even within the same AI service.
Start with your direct-traffic baseline
The first step is knowing your normal direct-traffic share well enough to notice when it moves. If direct traffic jumps noticeably in a week with no obvious cause, that's worth treating as a signal to check for a change on the AI side.
Any comparison should account for normal day-of-week or seasonal swings too. A rise in the raw number alone isn't enough to conclude it came from AI traffic.
Keeping a running weekly or monthly record of your direct-traffic share makes future comparisons far easier. If you haven't been logging it, starting this week still gives you a useful baseline going forward.
Separate it by landing page and timing
To pull AI-driven visits out of your direct traffic, look at landing pages. A rise in direct visits landing on a specific article or product page, rather than the homepage, is hard to explain as someone typing in that exact URL.
Timing helps too. A visit pattern that doesn't match your usual direct-traffic hours is worth treating as a sign of some other channel. Behavioral signals like time on page and bounce rate, viewed alongside timing, make the pattern easier to confirm.
As one example, if direct visits to a single article spike and the time-on-page or scroll depth looks similar to search-referred visits, it's worth searching to see whether that article is being cited in an AI answer right now.
Break it down by AI service
Because each AI service handles referrer data differently, it helps to look at them separately rather than as one bucket. Some services tag consistently, while others only pass referrer data in certain situations.
If a meaningful share of your traffic comes from multiple AI services, setting up separate tracking links for each one pays off. A tagging problem on one service then leaves the others intact as a comparison point.
Check server logs too
When analytics alone isn't enough, server access logs are worth reviewing as well. The user-agent strings AI crawlers and bots leave behind often don't show up in analytics tools at all, so logs reveal a layer of activity analytics simply can't see.
Still, crawler visits and real users clicking through from an AI answer are two different signals that deserve separate treatment. Logs are the place to watch crawler activity, while analytics remains where you estimate the real human visits hiding inside your direct number.
Tag what you can control directly
Wherever possible, attach your own UTM parameters when distributing content. For channels you fully control, such as press releases or guest posts, you can preserve source data yourself even when an AI service doesn't tag links on its own.
That approach doesn't help with links inside an AI answer, since you have no control over those. For that part, tracking direct-traffic shifts over time remains the only real option.
Recheck this regularly
How AI services handle links can change without notice. Setting a baseline once isn't enough; revisiting your direct-traffic share and landing-page mix every few weeks should become a habit.
It's especially worth a closer look right after a new AI model launches or a service gets updated. Catching a small shift early saves you from having to reinterpret weeks of data later on.
Turn it into a monthly checklist
Turning all of this into something you check once a month makes it far easier to keep up. The monthly change in your direct-traffic share, the share of direct visits landing on specific pages, and whether each AI service is passing referrer data are the three basics to start with.
Add crawler activity from your server logs and the performance of any UTM links you control, and the picture gets considerably clearer. Keeping all five on one dashboard and simply updating the numbers each month keeps this manageable without much extra effort.
You don't need all five in place from day one. Starting with just the direct-traffic baseline and adding one more item each month works just as well.
For smaller teams
A small team without dedicated analytics staff can't realistically watch every item at once. In that case, tracking the monthly direct-traffic trend alone is a reasonable place to start.
Narrow your focus to landing pages and timing only when something looks off, and even a small team can catch major shifts without much overhead. Once the monthly check becomes routine, adding one more item at a time is a realistic way to grow it.