Question and status
The question is: which part of the path from a web request to an AI answer can a site owner observe? We use page request → index signal → source selection → mention → source link → referral. This is a measurement framework, not a claim about private operator architecture. The study synthesizes public OpenAI, Perplexity, and Google documents. There is no matched answer sample across systems, so it provides no ranking, share, or causal effect. Its purpose is to show which artifact is required before making each stronger claim.
The practical meaning of the boundary is that a visit log cannot answer why a page was cited or not cited. Each stage therefore needs its own artifact and confidence level. We record access rules where an operator publishes them and a displayed link where a user can see one. We do not turn private stages into a page-quality score. This helps both editors and analysts: it identifies the next check to run instead of hiding uncertainty behind one composite number.
Section sources:[1] OpenAI Developers
What each event means
A page request is a web request and the server response to it. An index signal is an observable sign that a search system discovered or could use a page, such as a Search Console record; a server log cannot create that sign. source selection is the private act of selecting a document for an answer and is usually not visible to outsiders. A mention means a saved answer names a page, brand, or named subject. A source link means the answer shows a verifiable link or source naming to that source. A referral means a person arrived through that link. Events may happen close together, but they do not prove one another: a crawler visit does not become a source link.
Treat these events as independent observation interfaces and modes rather than a linear funnel. A page request may precede an index update; a source link may appear without a fresh visible page request; a referral depends on human behavior after the answer. This does not mean there is no relationship, but it forbids a causal claim without a matched test. Every number should name the operator, URL, period, collection method, and event definition. Otherwise the single word “visibility” mixes technical access with a user outcome.
Section sources:[2] Perplexity Docs
Evidence matrix
A page request needs an access-log event with time, URL, status, and response size. A verified bot needs a matching User-Agent, official IP range, and saved list version. Perplexity publishes separate PerplexityBot and Perplexity-User roles and endpoints; OpenAI points to an official JSON range list. A source link needs a full-answer archive or screenshot with visible link, URL, and time. A referral needs an independent analytics or server visit. Suitable public proof of source selection is usually absent: record unknown rather than deriving it from a graph.
The matrix works only when original materials are preserved. A log needs the request line, status, and classifier version; a console needs a dated capture or export; a source link needs the full answer and exact URL; a referral needs an independent visit record. Link every file to a claim_id and page version. If an artifact cannot be reopened, its strength falls. This matters during corrections: new copy must not silently rewrite the meaning of an earlier observation.
Section sources:[3] Google Search Central
Verifying the bot label and network address
Start by treating the User-Agent label as untrusted because it is easy to copy. Preserve the original label, extract the network address, and check it against the operator’s current official list. If reverse DNS is used, check both directions: the hostname should point to the expected domain, and the domain lookup should return the original address. Record the time, list version, and result. Do not merge address ranges for different roles: a user-triggered page page request and a search crawl are different signals. If anything does not match, classify the request as claimed or unknown.
The verification result should be repeatable, not just a label in an analytics dashboard. Preserve the original request, the time of the DNS check, the official list used, and the final status. Sample several requests from one crawler and several URLs; one match does not establish a stable pattern. When records disagree, do not raise confidence by hand. Unknown is more honest than calling something a bot from one User-Agent line, and it avoids falsely linking a technical visit to a later answer.
Section sources:[1] OpenAI Developers
Example and false positives
Example: `2026-09-11T10:14:02Z | /en/research/crawler-access-vs-citation/ | 200 | UA=PerplexityBot/1.0 | IP=verified | list=perplexitybot.json@2026-09-11 | event=fetch`. It supports only “PerplexityBot requested the HTML.” False positives include a script copying the UA, a CDN request mistaken for a visitor, a cached repeat, or an answer linking to the domain but not this page. OAI-SearchBot, GPTBot, and Perplexity-User must not be treated as interchangeable.
Build the permitted conclusion step by step. First verify request identity; then confirm that the server returned the intended URL and HTML; then independently find a matching interface answer and check whether its link points to this page. Without the second artifact, the result is page request only. Even temporal alignment remains correlation: a crawler may page request the page while the answer comes from another index or previously stored context.
Section sources:[1] OpenAI Developers
Replication checklist
Define the page addresses and observation period in advance. Use structured server logs in JSON format, and save the provider's official crawler IP-address lists each day together with a file checksum. Give each request a clear status: unknown, self-identified crawler, or verified crawler; then inspect a random sample manually. Fix the prompt set before the test and save the complete answer, mode, region, and displayed links for every run. Count four events separately: the crawler received the page, the answer mentioned the brand, the answer showed a source link, and a person visited the site. Show the underlying count beside every percentage. The next test uses ten matched prompts, three runs in each interface, and 30 days of observation. If a crawler request and a displayed source link occur together, report an association rather than a proven cause.
For a working team, create a table in advance: interface or mode, URL, exact prompt, language and region, region, mode, date and time, HTTP event, answer, displayed source, and evidence level. repeat the fixed test under the same conditions and publish absolute values beside rates. If conditions change, start a new slice instead of merging it with the old one. The method then becomes portable: another editor can repeat the procedure and see which conclusions are facts and which remain hypotheses.
Section sources:[1] OpenAI Developers
How to read the result without overgeneralizing
Record a result as a combination of interface or mode, query, time, and artifact. Then ask separately whether there was a request, HTML access, a page in the answer, and a link supporting the claim. If the last answer is unknown, do not use “source link.”
Keep three report layers separate: observed is a preserved fact; inference interprets several facts; hypothesis is an explanation requiring a test. This allows updates without losing history.
Section sources:[1] OpenAI Developers[2] Perplexity Docs
Minimum audit fields
For each run preserve its run ID, preferred page address, page fingerprint, search interface or mode, exact prompt, language, region, mode, time, original response, extracted links, bot identity, web response status, source match, and decision. An empty decision means unknown, not zero.
Store the decision snapshot with its inputs: when a source changes, the earlier result remains available for comparison. This turns the audit into a versioned procedure rather than a one-off number.
Section sources:[1] OpenAI Developers[2] Perplexity Docs
What this does not prove
- Public documents do not expose internal source selection or the full candidate set; proxies, caches, and spoofed UAs distort the picture.
Sources
- 1Overview of OpenAI crawlersOpenAI Developers · official · 11 Sept 2026
- 2Perplexity crawlersPerplexity Docs · official · 11 Sept 2026
- 3Top ways to ensure your content performs well in Google's AI experiencesGoogle Search Central · official · 11 Sept 2026
Correction history
No material corrections have been published.