Your site may be one page edit away from a ChatGPT citation and nowhere close to a Google AI Overview. A general ranking cannot tell you which is which; your prompts, logs, and referrals can.

I wrote the general comparison in ChatGPT vs Perplexity vs Google AI Overviews: Where to Earn Citations First. We are taking a second look because engines fetch and cite pages differently from one site to the next. Before you commit effort to one of them, run this 30-day test on your own site.

The question: where is your site already close?

For your site and category, which engine retrieves your pages, which one credits them, and which prompts make that happen? That is the question. My expectation: the three engines will not behave alike. One may fetch you often and rarely cite you. Another may fetch you less often but cite you when it does.

A screenshot of one answer cannot reveal that pattern. Use repeated prompts, verified fetches, and actual arrivals to choose your first target. Keep those measurements separate; each tells you something the others cannot.

Before day one: freeze the panel and capture a baseline

Set up three things before you run a prompt:

  1. A panel of 20 to 30 buyer questions. Write them the way customers ask them. Mix comparison and best-X-for-Y prompts, definitional what-is prompts, local near-me prompts if you serve an area, and branded prompts that name you. If you sell commercial cleaning in Austin, that might mean “best commercial cleaning service for medical offices,” “what is terminal cleaning,” “commercial cleaners near me open weekends,” and your brand name plus “reviews.” Save the exact wording. You will reuse it every week.
  2. Raw server or CDN logs. Get access to the last 30 days and the next 30. On Cloudflare, you need edge logs; on nginx or Apache, access logs. Each hit needs its user agent, source IP, URL, and status code. An AI-looking user agent without an IP you can verify is not evidence of an AI fetch.
  3. A day-zero snapshot. Export Performance from Search Console and, if you have it, the Generative AI report. That report shows impressions for links shown in AI Overviews and AI Mode, split by page and date, without clicks or queries. In GA4, record sessions in the built-in AI Assistant channel. It groups referrer-matched sessions, but it misses some app and copied-link visits.

Do not tidy the prompt wording halfway through because a better phrase occurs to you. A frozen panel makes a change in the results worth investigating rather than a change you accidentally wrote into the test.

Measurement 1: run the same prompts every week

Run every question in ChatGPT with browsing on, Perplexity, and a plain Google search. For Google, note whether an AI Overview appears and what it links. Use the frozen wording on the same day and start a fresh session each time so chat history does not steer the answer. If you want a stricter panel, copy the method in Build an AI Visibility Baseline: 40 Prompts, 4 Engines, 3 Runs Each.

For every answer, record:

  • Whether your site was cited.
  • The exact URL linked, if any, and where it appeared in the answer.
  • Which competitors were cited instead.
  • Whether your brand was named without a link.

Repeat the full panel weekly for four weeks. One run proves little because answers shift. Four runs let you compare citation rates by prompt type without mistaking one flattering screenshot for a trend.

My expectation is that definitional questions will favor clean explainer pages, while comparison questions will more often point to third parties. I would also expect Google AI Overviews to stay closer to existing organic rankings than the assistants do. Ahrefs found that 76% of URLs cited in Google AI Overviews came from top-10 organic pages, versus 28.6% overlap for Perplexity and far less for ChatGPT. Those are not your site’s results. They are a reason to keep Google and the assistants in separate columns.

Treat a single-week win as noise. Use the four-week citation rate by prompt type as your signal.

Measurement 2: check who actually fetched your pages

The prompt panel shows what appeared in answers. Logs show which agents requested your pages. Separate background crawlers that build an index, on-demand fetchers responding to a live question, and training crawlers that do not drive citations.

For OpenAI, filter for OAI-SearchBot and ChatGPT-User: the former governs whether a site can appear in ChatGPT search answers; the latter is a user-triggered fetch. For Perplexity, filter for PerplexityBot and Perplexity-User. The Bot surfaces sites in results; the User fetches a page for a live question. Keep Googlebot in the filter too, since AI Overview citations draw on Google’s index. Do not count a Googlebot crawl as proof that an Overview opened a page for your particular prompt. The *-User hits are the clearest sign here of a live conversation requesting that URL.

Before trusting a count, verify source IPs against the vendors’ published ranges. User agents are easy to spoof. I check against the JSON ranges at openai.com/searchbot.json, chatgpt-user.json, and the Perplexity equivalents, then inspect *-User requests for 403 or 429 status codes. A failed live fetch can show you an answer trying to read a page and getting blocked. A page looking fine in your browser does not settle what the fetcher received.

Our own edge logs show why this split matters. In one 30-day window, our homepage served 783 live ChatGPT-User requests against 40 from Claude-User. Same page, very different fetch behavior. That does not predict your numbers. It tells you why your own log is more useful than an industry-wide favorite.

Count verified requests and their status codes by agent and URL. Keep that sheet beside the prompt results, not folded into them.

Measurement 3: count arrivals, not just mentions

Citations without visits are nice for the ego. I want the click. In GA4, start with the built-in AI Assistant channel, which groups referrer-matched sessions from ChatGPT, Gemini, Claude, and others under the medium ai-assistant. Then build a wider view. That channel is a floor, not a total.

On one test property, it caught 666 of 740 AI sessions, about 90%, while the rest sat in Referral or Unassigned. Across 28 sites, 2,710 pageviews carried utm_source=chatgpt.com, but only 2,087 had a ChatGPT referrer. Referrer-only reporting missed 623 visits.

The mechanism matters: ChatGPT adds utm_source=chatgpt.com to links, AI Overview clicks stay inside Organic Search, and app or copied links can arrive without a referrer. Record these three measures each week:

  • Sessions by AI source, using the AI Assistant channel plus referrer and UTM evidence.
  • AI Overview impressions by page, using the Generative AI report where available.
  • Conversions from those sessions, not sessions alone.

If Perplexity cites you twice and sends eight qualified visits while ChatGPT cites you ten times and sends one, the citation count alone points you the wrong way. For the question of why a business gets picked at all, Why AI Assistants Cite Some Businesses and Skip Others is the short version. For this test, keep the rule plain: a mention is not an arrival.

Lab notebook with server log lines filtered for AI fetchers

Read the three signals together, then pick one target

After four weeks, put verified fetches, citation rate by prompt type, and referred sessions in separate columns for each engine. Read across each row. The numbers will not form a perfect funnel: a background crawl is not the same event as your prompt run, and a citation does not guarantee a click. The gaps still give you a practical next check.

  • Live fetches are high, but citations are low: access may not be the problem. Test whether a relevant page gives a direct answer a model can lift. Rewrite one section at a time: put a two-sentence answer beneath the heading that matches the prompt, followed by the table or list that supports it.
  • Verified fetches are low: inspect robots rules, login walls, JS-only rendering, and the status codes for the pages you expected agents to reach. On the Google side, check whether the page ranks at all. Copy edits will not help much if the page is not getting read.
  • You appear for what-is prompts but not comparisons: your explainer may be usable while third parties supply the clearer answer to money questions. Do not write ten best-of posts about yourself. Put your numbers, limits, and dates on your own domain in plain HTML so a forum thread is not the clearest available source. One industry compilation reports 3.2 times more citations for content updated within 30 days; for your site, the prompt panel is where you check whether fresher, clearer facts make a difference.

I would start with the engine where verified live fetches already happen and citations look close but inconsistent. That is an existing behavior you can test with one page. If no engine fetches you, check access first; then look at the Google path, where organic standing matters more to AI Overview citations than it does to assistant citations. For a stricter way to distinguish screenshots from trends, use How to Measure AI Search Visibility Without Trusting One Screenshot.

Prioritize the engine already knocking on your door. Check the lock before you rewrite the welcome mat.

Follow-up: change one page and run it again

Choose the page with the clearest gap: verified fetches are happening, but citations are missing. Change only that page. Add facts an answer can lift without guessing: specific numbers with units, named products or places, applicable limits, and the date you checked the facts. Put a direct answer under the heading that matches the prompt and keep it in the HTML a fetcher receives. Leave the rest of the page alone.

You are testing one change. Rewrite five pages and alter your robots file in the same week, and you will struggle to tell which change mattered.

Wait 30 days. Then run the frozen panel for two consecutive weeks and pull the same log and referral measures. Compare citation rates for that prompt cluster before and after, verified *-User fetches for the changed URL, and sessions from AI sources. I used to tell clients to expect movement in a week. I was wrong. Crawlers follow their own timetables, and answers can be cached. A week is hope, not data.

If fetches rise but citations do not, revisit the answer on the page. If fetches never rise, check whether the change was read. Neither outcome is a reason to change every page at once. Each gives you the next thing to inspect.

Make anyone selling AI visibility pass the same test

An agency asking for money to improve your ChatGPT or Perplexity visibility should be able to show more than a screenshot. Ask for three things:

  1. The prompt panel, including exact wording and run dates.
  2. Log evidence with verified IPs and status codes, not just a dashboard count of user agents.
  3. Before-and-after citation rates and referrals for a changed page, measured against a frozen baseline.

Then ask what they inspect when fetches exist but citations do not, and what they inspect when neither exists. If the answer is “more content” both times, keep your wallet closed. The panel, logs, and before-and-after comparison will not prove every cause, but they give you something to challenge and repeat.

The manual version works as a first test. It is a poor quarterly chore: few people want to rerun a 30-prompt panel and verify IPs by hand every week. That is where an always-on setup earns its keep. groas runs the loop continuously: the prompt panel stays live, log filters stay on verified fetches, referrals are tracked through sessions and conversions, and changes land in an action log with reasoning you can audit. You get a trend line and a next fix, not one good screenshot. It runs for one flat monthly fee, month to month, rather than a percentage of spend.

Run the 30 days yourself first. If an engine already fetches you and nearly cites you, you have a page to test. If nothing fetches you, you have an access and visibility problem to inspect before polishing copy. Either result changes where your next hour goes. That is a better basis for choosing ChatGPT, Perplexity, or Google than somebody else’s ranking.