Connect crawl evidence, search demand, referral traffic, crawler policy, and controlled answer observations without pretending they measure the same thing.
Start with evidence boundaries
An AEO data stack is useful only when every signal keeps its meaning. A crawl describes what your site exposed at a moment in time. Search Console describes Google search performance. Analytics describes visits that reached your site. Controlled answer observations describe what a chosen model returned under recorded conditions.
Observed is not inferred
Observed evidence is captured directly: a page response, a referral click, a reported impression, or a saved answer. Inferred evidence is an interpretation, such as why a page was cited or whether a change caused a result. Store and label both, but never merge them.
The five evidence layers
URLs, status codes, canonical signals, headings, structured data, internal links, and extractable page text captured during an explicit crawl.
Queries, pages, clicks, impressions, and positions reported by Search Console, with the dimensions and date range retained.
Sessions and engagement from attributable sources in GA4, including the native AI Assistant channel when available.
The robots.txt rules and page directives that govern whether named crawlers are allowed to fetch content.
Saved prompts, model and locale conditions, raw responses, observed mentions, and observed citations.
Google now provides a native AI Assistant default channel in Analytics, so use that classification before maintaining a custom regex as the primary workflow. [1]
Search Console can report Google generative-AI search appearances, but the report remains a Google-owned view with its own eligibility, dimensions, and aggregation. It is not a universal AI citation ledger. [2]
Crawler policy is configuration, not proof of a visit
OpenAI distinguishes OAI-SearchBot, which supports search discovery, from GPTBot, which is used for training controls. A robots rule can allow or disallow access, but it does not prove that a crawler visited a page. CiteLadder evaluates public crawler policy; it does not ingest or monitor server or CDN logs. [3]
Join evidence without flattening it
- Normalize URLs while retaining the exact source URL and capture time.
- Keep provider rows append-only and attach the provider, dimensions, and observation window.
- Separate unavailable and failed observations from valid zero values.
- Compare like-for-like windows and prompt conditions before describing movement.
- Link every recommendation back to the crawl, report row, or answer observation that supports it.
Once the foundation is connected, use the content audit guide to find page-level gaps, the tracking guide to keep channel metrics distinct, or explore CiteLadder solutions.
Sources
- Analytics release notes: AI Assistant channel — Google Analytics Help
- Generative AI in Search Console performance reporting — Google Search Console Help
- Publishers and developers FAQ — OpenAI Help Center