Best GEO Software
All posts
By Best GEO Software Teamguideschatgptcitations

How to Check If ChatGPT Cites Your Website

A citation is a URL in the answer, not a brand name. Check robots and fetches, then a frozen prompt list, then chatgpt.com referrals. GSC will not do this.

Cited means the answer pointed at a URL you control. Named without a link is a mention. Traffic from utm_source=chatgpt.com is a referral. People mash all three into "does ChatGPT cite us?" and then screenshot a chat they ran once. That screenshot is the start of the problem. It is one session, run by one person, on one prompt, on one day. It tells you almost nothing about what ChatGPT says to a buyer next week. The three words, cited, named, referred, are different measurements, and a real check keeps them in different columns.

Google Search Console will not answer this. Overviews are Google. ChatGPT Search is OpenAI. Use the publisher FAQ and crawler docs for access. Use a prompt log for the answer. GSC reports Google surfaces. It does not store the ChatGPT answer to a prompt you typed. If you pull a GSC report into a deck and call it ChatGPT visibility, the client will believe a number that measures a different engine.

1. Confirm SearchBot can read the URL you care about

Allow OAI-SearchBot. Wait about 24 hours after robots.txt edits. Check logs against published IPs. A 403 on that URL means you are checking a firewall, not citations. The firewall is the more common failure than the robots file. A team edits robots.txt, allows the bot, and the CDN still blocks the published IP range. The robots file says yes. The CDN says no. The fetch never happens, and the team blames the engine.

GPTBot is training. Independent. You can allow Search and disallow training. If legal blocks "AI" as one blob, they often kill Search by accident. That accident is the most common way a brand loses its ChatGPT citation without knowing it. Legal writes a broad disallow, the team copies it, and the next QBR shows a drop nobody can explain. The fix is to split the rule. Training and search are separate user agents with separate policies.

ChatGPT-User hits can appear when someone (or the model on their behalf) opens a page. That is not your Search index proof. SearchBot is. OpenAI says robots.txt may not apply to User because a user asked. A ChatGPT-User hit in the log tells you a person, or the model acting for a person, opened the page. It does not tell you the page is eligible for Search answers. Only OAI-SearchBot tells you that.

If a disallowed page's URL still arrives via a third party, ChatGPT Atlas may show only the link and title. The FAQ says use noindex if you do not want that, and the crawler must be allowed to read that tag. A disallow and a noindex are different instructions with different effects. Disallow blocks the crawl. Noindex allows the crawl but tells the engine not to index. The Atlas case is the one where a page you tried to hide can still show up as a link because a third party surfaced it.

2. Freeze prompts and look for a source, not a vibe

Write the questions buyers type, including "Brand vs Brand." Run them in ChatGPT Search, not only the logged-in chat that never browses. Save the answer. Note: named / cited to you / cited to a third party / absent. The four states are the whole scoring system. Named means the answer used your brand word. Cited to you means the answer linked a URL you control. Cited to a third party means the answer linked a competitor or a forum. Absent means the answer did not name anyone in your category, which is its own problem.

One session is noise. Answers change. That is why a tracker exists. A single chat on a Tuesday is a sample of one. The same prompt on Wednesday can name a different brand. If you report a Tuesday screenshot as the state of ChatGPT, you are reporting noise as signal. A tracker stores the series, and the series is what shows whether the citation moved.

Promptwatch stores the response, page-level citations (including Reddit and YouTube when those win), and trends. Explore: 10 ChatGPT prompts, free. Enough to see a hole. Essential: $95/mo for a working list. Professional: $245/mo. Citation trends beat a Tuesday screenshot. Paid checks are daily. There is no instant-alert SKU on that sheet. The daily cadence is the cadence. If a vendor promises a push the second a token lands, ask to see the channel and the delay. The honest answer in this category is daily.

Otterly.AI from $29/mo counts mentions. Fine. Possible week lag. Not the same as page-level citation analytics on our listing. A mention count tells you a number. It does not tell you which URL won, which is the part you can act on. Peec AI has screenshot evidence. We keep it last. Profound Starter is ChatGPT-only, 50 prompts, annual $99.

If you only have a HubSpot grader snapshot (ChatGPT plus two other engines, scores not guaranteed), you have a slide. You have not checked citations. A grader is a one-time score. It is not a ledger of stored answers, and it is not a trend. Treat it as a teaser, not a check.

3. Cross-check referrals without lying

OpenAI says publishers who allow SearchBot can track utm_source=chatgpt.com. Put that in GA4 or Promptwatch visitor analytics (script or GTM). A session without a stored citation can still happen. A citation without a session can still happen. Report both. Do not average them. A session means a person clicked. A citation means the engine pointed at your URL. A person can click a link the engine never cited, because the link was shared elsewhere. The engine can cite your URL and no one clicks, because the answer was enough. Averaging the two produces a number that means neither thing. Keep them in two columns and read them side by side.

4. When the check fails

No fetch: infra. Fetch, mention, no URL: you are a name in a roundup. Fetch, Reddit cited: offsite ticket. Fetch, your old /blog/2019 cited: fix that URL, do not publish a fourth clone. Each fail state has a different fix. No fetch is a webmaster ticket, not a content ticket. A name in a roundup is a content ticket, because the engine knows your brand but will not link it. A Reddit citation is an offsite ticket, because the engine trusts a forum over your page. An old URL citation is an information architecture ticket, because the engine prefers a page you would rather retire. The fixes are not interchangeable.

Content Agents only after the citation miss is a missing claim on a crawlable page. Webflow or Framer, review inbox. 5 articles on Essential. WordPress publishing is not live. The order matters. Fix access first, then the stored answer, then the URL, then the content. Jumping straight to Content Agents before access is fixed is how teams publish ten pages and wonder why nothing moved.

Minimum honest check

Ten prompts, two weeks, SearchBot 200s, a column for cited URL. If the cite is missing, read logs before you hire another writer. That is the check. Product: promptwatch.com. The honest check is small on purpose. Ten prompts is enough to see a pattern. Two weeks is enough to see whether the pattern holds. A column for the cited URL is the part that turns a vibe into a measurement. Everything beyond that is scope, not rigor.