ChatGPT picks sources in three stages. First it sorts your question into a use-case bucket that decides whether it searches the web at all. If it does search, it pulls pages through one of four retrieval pipelines. Then it cites only the pages it can read cleanly and that directly answer the question: not simply the highest-authority domain. The practical upshot: plain, server-rendered HTML that answers the question wins the citation.
The clearest recent window into this came in June 2026, when SEO consultant Suganthan Mohanadasan inspected the raw network traffic of his own ChatGPT Pro account and published the internal labels he found. This piece summarises what that teardown revealed and what to do about it. It is a companion to the data piece on why AI share-of-voice scores are volatile, and a different lens than where ChatGPT's product recommendations come from, which looks at ranking rather than the retrieval plumbing.
A note on confidence. This is one practitioner's reading of about 1,240 source records from a single Pro account over several days. A small, tech-skewed sample. The author himself separates high-confidence structural facts (the internal field names and pipeline labels exist) from directional frequencies (the exact percentages). Internal labels can change without notice. Treat the structure as informative and the numbers as indicative.
How does ChatGPT decide whether to search the web at all?
Before anything else, ChatGPT classifies the question into a use-case bucket. Exposed internally as a turn_use_case field. The teardown identified six: instant search, shopping, text, local, thinking, and image generation. The decisive one for visibility is text: those questions are answered from the model's training data with no live web search, so no page can be cited no matter how well optimised it is.
In the author's small test, 3 of 10 deliberately current queries received no web search: the model judged it could answer from memory. The lesson is upstream of everything else: you can only be cited on questions that actually trigger retrieval, which tends to mean specific, current, or comparative phrasing rather than general-knowledge questions.
Where does ChatGPT pull its sources from?
When a question does trigger a search, the teardown found results arriving through one of four pipelines, labelled in a result_source field. Each leans toward a different kind of content:
| Pipeline | What it provides | Tends to dominate |
|---|---|---|
| SERP | Open-web baseline | News and general results |
| Labrador | Allowlisted premium publishers (e.g. Reuters, WSJ, Guardian, Wikipedia) | High-trust reference and news |
| Bright | A commercial scraper (Bright Data) | Shopping and finance queries |
| Oxylabs | A commercial scraper (Oxylabs) | Regional and local content |
Source: Suganthan Mohanadasan's network-traffic analysis (2026), single account. A weather query, for example, split across pipelines. Global sites (Met Office, AccuWeather) via one scraper and regional Gulf press (Khaleej Times, Gulf News) via another. The existence of a result_source field independently echoes an earlier point-in-time observation noted in our product-recommendations teardown, so two observers have now seen similar internal plumbing, though neither is officially confirmed by OpenAI.
What is the difference between fetched, cited, and mentioned?
They are three separate outcomes, and conflating them is the most common mistake. A page can be:
- Fetched: pulled into the model's context to inform the answer, invisible to the user.
- Cited: shown as a footnoted source the user can click.
- Mentioned: your brand name appears in the answer, but a different page is the cited source.
The gap between fetched and cited is large. The teardown counted Reddit fetched ~278 times but cited only 11, and YouTube fetched ~201 times and cited zero. The model read them for context, then footnoted something more cleanly extractable. This matches independent data: Ahrefs' analysis of 1.4 million prompts found Reddit cited in about 1.93% of answers versus YouTube's 0.51%, and the Reddit-for-AI-visibility play works precisely because Reddit is fetched constantly. The takeaway: being read is not being cited, and being mentioned is not being the source. Aim to be the clean page the model can footnote.
How does ChatGPT expand one question into many?
For complex, comparative questions, the thinking bucket spawns many sub-queries from a single prompt. The teardown saw 15-40 for hard comparison tasks, including literal site: domain probes and price-verification searches with guessed values. This is query fan-out in action: the single question you see becomes a tree of retrievals behind the scenes, each pulling its own sources. (The mechanics across engines are covered in how query fan-out works.) Practically, it means one answer can cite several different pages, so covering the branches of a question, not just the headline, gives you more chances to be the source for one of them.
What stops a page from being cited?
Content the model cannot cleanly read. The most concrete finding: ChatGPT abandoned parsing a pricing table that loaded via JavaScript and cited a third-party site (like G2) for the numbers instead. The chain-of-thought reasoning showed it giving up on the JS-rendered page and routing to whatever exposed the fact in plain text.
That single behaviour explains a category of invisibility. Facts locked in JavaScript, PDFs, or images are effectively absent at citation time. The engine cites whoever published them as readable text. This is the same lesson as whether AI assistants render JavaScript and why accessibility and AI-parseability are the same discipline: if a human screen reader or a scraper can't get the fact as text, neither can the model.
The page that gets cited isn't the most authoritative one. It's the one that states the fact in clean, server-rendered text the model can lift without a fight.
How do you become the page ChatGPT picks?
The teardown points to a short, durable checklist. None of it dependent on the exact internal labels holding:
- Be cleanly scrapable. Put every citable fact. Prices, specs, definitions, comparisons. In server-rendered plain HTML text, never only in JavaScript, PDFs, or images. Check that your CDN isn't blocking AI crawlers before anything else.
- One strong page per claim. A single, complete page on a topic outperforms several thin ones competing for the same fact.
- Own your own facts; earn the recommendations. Vendor pages get cited for their own pricing and specs; recommendations are sourced from third parties, so publish your facts cleanly and pursue third-party presence (reviews, Reddit, listicles) for the recommendation, as in how to get cited by AI.
- Answer specific, current, comparative questions. Those are the queries that trigger retrieval in the first place; general-knowledge phrasing may never leave the model's training data.
The honest frame: this is one well-documented snapshot of an opaque system that OpenAI can change at any time, so anchor on the durable mechanic. Clean, extractable, server-rendered facts get cited: and don't over-fit to the internal field names.
Knowing whether ChatGPT is actually fetching, citing, and recommending your pages. Across the prompts your buyers use. Is exactly what Buffy Intel measures, engine by engine, over time.