How ChatGPT actually picks sources
ChatGPT answers come from two different places, and they behave nothing alike. Parametric knowledge is what the model absorbed during training — slow to change, impossible to influence directly in the short term. Retrieval is what ChatGPT Search fetches live when a question looks current, local, commercial or specific. Retrieval is the surface you can win this quarter.
In retrieval mode the pipeline is short: rewrite the user prompt into one or more search queries, fetch a shortlist of pages, read them, then synthesise an answer with inline citations. Every stage is a filter. If GPTBot cannot fetch your page, you lose at stage two. If your page buries the answer under three paragraphs of preamble, you lose at stage three. If your claim contradicts what the other shortlisted pages say, you lose at stage four.
Practical consequence: ChatGPT visibility is won at the paragraph level, not the page level. The unit that gets cited is a sentence or two, not your whole article.
Step 1 — Open the door to the right crawlers
OpenAI runs three distinct user agents and they do different jobs. Blocking the wrong one silently removes you from answers while leaving your analytics untouched, which is why so many sites discover the problem months late.
| User agent | What it does | Should you allow it? |
|---|---|---|
| GPTBot | Crawls pages for model training | Yes for most sites — this is how you enter the model's background knowledge |
| OAI-SearchBot | Builds the ChatGPT Search index | Always — blocking it removes you from live retrieval |
| ChatGPT-User | Fetches a page when a user or tool asks for it | Always — this is a real person's request |
Two failure modes cause most accidental blocks. First, a wildcard Disallow with no explicit AI-bot block — some crawlers only read their own named block. Second, a CDN or WAF bot rule that returns 403 to unknown agents; robots.txt says yes while the edge says no. Test with a plain curl using each user agent string and confirm you get a 200 and real HTML.
curl -A 'OAI-SearchBot' -sI https://yourdomain.com/ | head -1 curl -A 'GPTBot' -s https://yourdomain.com/ | head -40
Step 2 — Write answer-shaped paragraphs
The single highest-leverage change on most sites is restructuring the first 80 words under every heading. An answer-shaped paragraph is self-contained: it can be lifted out of the page, dropped into a chat response, and still make sense with no surrounding context.
- Lead with a direct declarative sentence that answers the heading as a question.
- Keep it to 40–70 words — long enough to be substantive, short enough to quote whole.
- Repeat the entity name instead of using pronouns: 'OptimAIze scans…' not 'It scans…'.
- Put numbers, dates and units inline; models prefer claims they can attribute precisely.
- Follow with the nuance, caveats and examples — those earn trust but are rarely quoted.
Phrase your headings the way people phrase prompts. 'Pricing' is a nav label; 'How much does GEO auditing cost?' is a retrievable question. This is the same instinct as featured-snippet optimisation, but the payoff is larger because the answer engine has no ten blue links to fall back on.
Step 3 — Make the page machine-legible
Schema does not directly make ChatGPT cite you, but it removes ambiguity about who you are and what the page is. In practice that resolves the two questions the synthesis step cares most about: is this source authoritative, and is this claim current?
- Organization schema sitewide, with sameAs links to your verified social and directory profiles.
- Article or BlogPosting on every content page, with datePublished, dateModified and a named author.
- FAQPage on any page containing genuine question headings — this maps one-to-one onto how prompts are phrased.
- HowTo on procedural content, so each step survives extraction intact.
- A curated /llms.txt at your root pointing to the pages you actually want read first.
Beyond schema, favour plain semantic HTML. Content rendered only after client-side JavaScript, hidden behind accordions that never render server-side, or locked behind consent walls is content that retrieval cannot see. Server-render the answer.
Step 4 — Get corroborated off-site
Language models hedge on claims they can only find in one place. When three shortlisted sources agree, that claim becomes the answer; when only your own site says it, it becomes 'according to their website'. Off-site corroboration is the closest thing GEO has to link building, but the currency is consistent factual mentions rather than raw link equity.
- Get listed in the category directories and comparison roundups that already rank for your terms — those pages are disproportionately retrieved.
- Keep your description identical across every profile; contradictory blurbs weaken entity confidence.
- Answer questions where practitioners already ask them, with substance rather than a link drop.
- Publish data only you have. Original numbers get quoted, and quotes travel.
Step 5 — Measure citations, not rankings
There is no position 1 in ChatGPT. Instead, build a prompt panel: 20–40 prompts that a real buyer would type at each stage of their journey, from 'what is X' to 'best X for Y' to 'X vs competitor'. Run them on a fixed schedule and record whether you were mentioned, cited with a link, or absent, plus which competitors appeared.
Two months of that data tells you more than any rank tracker. Mentions are volatile prompt-to-prompt, so track the share of the panel you appear in rather than any single result. Pair it with server-log analysis: GPTBot, OAI-SearchBot and ChatGPT-User hits are the leading indicator that appears weeks before citations do.
Common mistakes that quietly cost you citations
- Blocking Google-Extended or GPTBot 'for safety' without deciding what you gain.
- Answering in the third paragraph, after the origin story.
- Publishing a wall of thin location or industry pages with no distinct facts — models dedupe near-identical pages and cite none of them.
- Undated content. If nothing on the page signals recency, current-events prompts skip you.
- Contradicting your own pricing, positioning or claims across pages.
- Optimising only for ChatGPT — Perplexity, Gemini and Copilot weight sources differently, and the overlap is cheap to capture.