A business owner asks whether ChatGPT, Gemini or Google AI Overviews cites their company. A prompt tracker, Search Console and the server logs return three different numbers. I would anchor the report on verified live fetches and referrals, then use tracker scores to decide what to investigate. That is the choice in this head-to-head, and it should feel familiar to anyone who has reconciled Google Ads conversions.

The ad platform counted one number, Analytics counted another, and the backend counted a third. Each watched a different part of the funnel. AI visibility has the same problem: a tracker samples what a model might say to a prompt you chose; Search Console shows where Google displayed your page in an AI unit; analytics catches some of the people who clicked through; and server or edge logs show which pages an assistant fetched. None is a complete answer to “How often did AI cite us?”

I am comparing the three approaches for an owner or marketing lead who needs a defensible report, not another dashboard to admire. The decision turns on four things: what each approach observes, how easily the number misleads, what it costs to run, and whether it reveals the prompts you can act on. No tie at the end.

First, decide what each number actually observes

I used to tell clients the Google Ads number was right and Analytics was wrong. I was wrong. The ad server counted a click on its redirect, the browser counted a page that finished loading with JavaScript running, and the CRM counted an order that passed fraud checks three days later. Arguing over which total was true missed the point. One described what the platform recorded, another what the site received, and the last what the business could bank.

The AI version starts with a prompt tracker. It runs a curated set of questions across ChatGPT, Claude, Gemini and Perplexity, then records whether you appeared, which source was cited, where you sat in the answer and what the tone was. It observes the answer to its prompts on its schedule. It does not observe every question a buyer asks.

Search Console and GA4 occupy another part of the chain. The Generative AI report under Performance launched June 3, 2026, and went worldwide August 31, 2026, covering AI Overviews, AI Mode and Discover AI. It reports impressions by page, country, date and device, but no clicks or queries. GA4, meanwhile, can record a visit when an assistant sends someone to your site with a usable referrer. An impression and a visit answer different questions; neither tells you the full wording of the answer.

Logs sit nearer the retrieval step. Bots do not need to run your analytics JavaScript to request a page, so server and edge logs can show requests that GA4 never sees. But “AI bot traffic” is not one useful category. Indexers such as OAI-SearchBot, training crawlers such as GPTBot and ClaudeBot, and user-triggered fetchers such as ChatGPT-User, Claude-User and Perplexity-User do different jobs. A verified, successful user-triggered fetch shows that an assistant retrieved your page while handling a request. It does not, by itself, prove that the final answer cited you.

That distinction is worth keeping in the report, not burying in a footnote. The closest thing here to a fetch receipt is still a fetch receipt. If the owner asks whether the assistant named the business, a log line cannot supply the answer text. If the owner asks whether the site supplied a page to a live retrieval, the log can.

Next, ask how the number can fool you

Prompt trackers are tempting because the output looks like a ranking chart. The underlying answers are less orderly. When SparkToro and Gumshoe ran 2,961 prompts repeatedly, fewer than 1 in 100 reruns produced the same brand list, and about 1 in 1,000 matched in the same order. Their rule was at least 20 to 30 runs per category per model for a directional trend, and 50-plus for a benchmark. A plan that runs each prompt once a week can produce a tidy line graph without producing a stable measurement.

Then you choose the prompts. The advice to start with 20 to 30 high-value prompts rather than 500 keywords is sensible, provided those prompts resemble buyer questions. Choose questions you already win, and the dashboard turns green. Choose a different set next month, and the score moves even if your pages do not. A tracker score is a sample you designed, not a census of what buyers saw. Use it to spot mention gaps, not as the headline visibility total.

Google’s numbers invite a different mistake. External-link clicks from AI Overviews and AI Mode sit inside overall Web search totals with no dimension that separates them. Dividing those Web clicks by Generative AI impressions does not produce an AI click-through rate. I have watched owners do that arithmetic and report a 0.4% CTR to a CEO. The spreadsheet looked clean; the numerator and denominator described different pools of activity.

Referrals have the opposite weakness: they record visits that reached you, but they miss some that did. GA4 added a native AI Assistant channel on May 13, 2026 for clean referrers. The draft’s limitation still matters in practice: that channel misses Perplexity, is not retroactive before May 2026, and cannot recover visits that arrive without a referrer. ChatGPT’s utm_source=chatgpt.com parameter rescues some app clicks, while native-app opens, no-referrer policies and copy-pasted URLs can leave visits in Direct. Unlinked brand mentions may send no click at all. Treat the AI channel as a floor on identifiable visits, not a count of every answer that mentioned you. A referral proves a visit arrived, not that it became revenue.

Logs need cleaning before they deserve trust. A user agent string can be spoofed; a bot request can also fail to receive the page. OpenAI publishes per-agent IP lists, including its GPTBot, OAI-SearchBot and ChatGPT-User lists, so matching the connecting IP to the relevant ranges is part of verification. Filter unsuccessful requests too. One operator found scanners posing as PerplexityBot and OAI-SearchBot while probing /.env; removing those and requests with status 400 or higher cut inflated assistant counts by a third. Raw bot hits are not a visibility metric. Count verified live fetches that successfully returned your page, and label them as fetches.

This is why crawler volume makes such a poor victory slide. groas described thousands of archive hits and zero AI citations in its edge-log postmortem. Indexing, training and live retrieval are different jobs. Putting them in one bar called “AI activity” makes that bar bigger, not more useful.

Cutaway diagram separating AI bot visits into training, index and live-answer fetches

Then count the work and the cost

A tracker wins on convenience. Set the prompts, choose a schedule and get a report. Entry plans in the draft’s cost comparison run about $99 a month for 100 prompts or $199 for 250; multi-engine tools generally sit near $90 to $300 a month before anyone spends time interpreting the results. That fee can make sense when someone will use prompt-level gaps to change pages. It is an expensive way to confirm that a dashboard exists if nobody will do the follow-up work.

Search Console and GA4 avoid that subscription cost, but somebody still has to keep the definitions straight. Put Generative AI impressions beside assistant referrals if you like. Do not join them into an invented click rate, and do not call clean-referrer sessions all AI traffic. The maintenance here is less technical than log filtering; the risk is a confident-looking report built from mismatched columns.

Logs cost nothing beyond setup in the comparison, but the setup is real work. You need access to server or edge requests, a way to separate user-triggered fetchers from index and training crawlers, IP verification where applicable, and a filter for failed responses. Once those rules are in place, the weekly question is straightforward: which URLs received verified live fetches?

A small-site example shows why separating bot jobs pays off. Over 23.5 hours, one operator recorded 189 live-answer fetches, 541 index fetches and 1,178 training fetches. One server produced three totals. Add them together and you lose the part most relevant to a current user request. Keep them apart and the log becomes a useful operating signal, even though it still cannot show the final citation.

Finally, decide whether you need prompt-level detail

This is the tracker’s clean win. A sampled answer can tell you which of your chosen prompts triggered a mention, who else appeared and which source the answer cited. Logs give you URLs and agents, not the question a person asked. Search Console’s Generative AI impressions give you pages, not queries. GA4 tells you about an arriving visit, not the words that prompted it.

That detail is useful only when you can act on it. If a buyer question repeatedly produces a competitor mention, someone can inspect the page and decide what to change. If no one owns that decision, paying for prompt detail just gives the unanswered question a monthly invoice. I have watched owners spend $199 a month to learn ChatGPT prefers a competitor, then change nothing because the work lived in product copy and crawling, not in the chart.

Coverage matters too. A tracker samples answers across the engines it runs; it cannot stand in for every answer those engines give. Search Console is the stronger view of Google AI Overview impressions but tells you little about Gemini app answers. The log approach described here is strongest for the identifiable ChatGPT and Claude live fetches it can verify; it misses Gemini entirely. Choose the tool for the question it can answer, then keep that label attached to its number.

AxisPrompt trackersSearch Console plus GA4Verified server logs
What it observesAnswers to sampled promptsGoogle AI impressions and identifiable visitsPages fetched by live-answer agents
Prompt-level detailYes, for prompts you chooseNo queries or promptsNo prompts; URLs and agents
Main measurement trapVariance and prompt selectionImpressions and clicks are easy to misjoin; referrals undercountSpoofed agents, failed requests and crawler types need filtering
CoverageSampled answers across selected enginesStrongest for AI Overviews; limited for Gemini app answersStrong for verifiable ChatGPT and Claude fetches; misses Gemini
Cost and effortPaid, easy to scheduleNo subscription cost, some reporting disciplineNo subscription cost, technical setup

Verdict: build the report on fetches and visits

Winner for most businesses: verified logs plus referrals. Logs show when your pages were retrieved for live answers. Referrals show identifiable visits that made it to your site. Put Search Console impressions alongside them for Google’s display signal. None of those numbers is a citation count, and they should not be sold as one. Together they tell a more defensible story about what your site supplied and what traffic arrived than a single sampled mention score.

The tracker loses as the anchor, not as a tool. Buy one when you have pages worth improving and a person ready to act on the prompt gaps. That reader should pick the loser for its one advantage: it shows what an answer said to a specific question. Keep its score separate from fetches and visits, and rerun prompts enough times to look for direction rather than treating Tuesday’s answer as a ranking.

If you haveRun this stackWhy
Zero budgetSearch Console Generative AI impressions, GA4 AI Assistant sessions and a free log filterYou get a Google display signal, an identifiable-visit floor and live-fetch evidence for the cost of setup
A spreadsheet and two hours a monthThe above, plus 25 buyer prompts rerun 20 times each in one modelRepeats make the sampled answers more useful for spotting direction
A team that reports monthlyAdd a paid tracker, with its prompt-level results kept separatePrompt detail earns its fee when someone acts on the gaps

For the case against treating prompts as a fixed asset, read Your Brand Doesn’t Have a Magic Prompt List. Prompt lists rot fast. If the next decision is which surface deserves the work, start with ChatGPT vs Perplexity vs Google AI Overviews: Which Should You Target First?. Neither decision requires pretending that a tracker score is the business outcome.

I would keep the weekly report boring: one sheet, three tabs. Tab one holds verified live fetches by URL. Tab two holds GA4 AI Assistant sessions and chatgpt.com and perplexity.ai referrals, clearly labeled as a floor. Tab three holds mention rates for 25 buyer prompts, rerun enough times to show a trend. Say you spend $20k a month on search and the owner asks what AI did. Point to the first tab for evidence that assistants retrieved your pages, the second for identifiable visits, and the third for questions to investigate next. Do not call the first tab citations or the second tab revenue.

That order is the whole argument. I trust the server first for what it can show: a verified page fetch. I trust referrals next for what they can show: a visit. I keep sampled answers third, where they can guide the next edit without pretending to count every mention. The three numbers will not match. They are not measuring the same thing.