AI Citation Tracking
Quick facts
- Difficulty
- Intermediate
- Time
- Half a day for setup, then about 30 minutes per week
- Prerequisites
- GEO Metrics, Citation vs Mention vs Link
- What this is
- A practical workflow for collecting citation data; GEO Metrics explains how to interpret the results
- Tracking sequence
- Begin with manual tracking to establish a reference, then automate the validated process at scale
- Core metrics
- Four metrics: Citation Rate, Citation Share, Average Position, and Source Diversity
- Metric definitions
- GEO Metrics defines every metric used in this tracking workflow
- Estimated effort
- About half a day to set up, followed by roughly 30 minutes each week
1. What AI citation tracking is
A repeatable AI citation-tracking system uses a frozen prompt set, queries a defined set of engines on a fixed schedule, and collects, verifies, and records each answer in a consistent schema. The result is a time series showing how often your content appears, how prominent it is, and which engines cite it.
GEO Metrics provides the definition and formula for every metric named here. Using the same source for every definition prevents inconsistencies when the data is collected and reported.
Citation tracking focuses on linked citations. Monitoring unlinked mentions requires detecting them in answer text, removing duplicates, and normalizing results across engines; Brand Mention Tracking explains that process. In this workflow, a mention is still recorded as an appearance value (§4) so the log remains complete.
The workflow follows this sequence:
Frozen prompt set → selected engines → sampled answers → verified and normalized log → change report
There are two modes, which should be used in sequence: begin with manual tracking to establish a reference, then use automated tracking to work at scale. Section 4 explains why the manual process comes first.
Reliable citation tracking matters because a biased prompt set or mixed metric definitions can produce a confident but misleading answer to the question, “Are we being cited?” The academic work that introduced GEO treats prominence as a continuous measure rather than reducing citation to a yes-or-no result. Aggarwal et al. 2024 describes the position-adjusted “impression” concept used in this workflow, while Generative Engine Optimization explains why ranked-link metrics do not transfer directly.
2. Decide before you measure
Four decisions determine what every subsequent number means. If any of them are left unclear, the results cannot be interpreted reliably.
| Decision | Options | Rule of thumb |
|---|---|---|
| Which metric(s) | The four core metrics are Citation Rate, Citation Share, Average Position, and Source Diversity | Start with Citation Rate and Source Diversity; neither requires a competitor set |
| Mention or citation | Count citations, mentions, or both, but tag them separately | They are different constructs and should never be added together. See Citation vs Mention and Brand Mentions |
| Which engines | Choose the engines your audience actually uses rather than trying to cover all of them | Treat the engine set as a reported variable and name every engine included |
| Time window + cadence | For example, a weekly sample with a 7-day window | Answers change quickly, so treat the window as part of the metric rather than a footnote |
The four core metrics are Citation Rate, Citation Share, Average Position (definition A, citation order), and Source Diversity. GEO Metrics defines them in §3.2, §3.3, §3.5, and §3.10, respectively. Use the same reference for the formula for any other metric named in this playbook.
3. Step 1 — Build the prompt set (your measurement instrument)
The prompt set is a major source of bias in AI citation tracking; prompt-set bias appears as pitfall #3 in GEO Metrics §7. Because the prompt set defines the experiment, manage it with the rigor required for a survey instrument.
Rules:
- Base prompts on real user intents, not on your own keyword list. Ask what a buyer would actually type into ChatGPT.
- Start with 30–50 prompts. Below roughly 30, sampling noise can overwhelm the signal. You can expand the set later.
- Balance the categories (commercial / informational / comparison) so that one intent class does not dominate the average.
- Freeze and version the set. Unrecorded prompt changes make a time series meaningless. Add prompts under a new version tag instead of editing the active set in place.
- Store the set in version control so every change remains traceable.
Do not hand-pick prompts for which your content already performs well. That creates a biased baseline with little room to improve and encourages decisions based on an artificially favorable sample.
The deliverable is a versioned prompts.csv file:
id,query,intent,category,locale,prompt_set_v,added_date,retired_date
q001,"best crm for startups",commercial,software,en,v3,2026-05-19,
q002,"how does retrieval augmented generation work",informational,technical,en,v3,2026-05-19,
4. Step 2 — Start with manual tracking
Run the process by hand before automating it. Manual sampling provides a reference for what “cited” looks like on each engine, develops your judgment, keeps the process independent of any vendor, and is the only way to validate any tool you later purchase.
Procedure:
- Set a schedule — use the same prompts, day of the week, and time window for every run. Cadence is part of the data.
- Use one fresh session for each prompt and engine — exclude logged-in history and personalization because personalized answers are not reproducible.
- Record the raw answer and its sources verbatim. Preserve the original capture unchanged and derive the metrics from it later.
- Tag how your domain appears as
cited,mentioned, orabsent, following the test in Citation vs Mention. - Record the citation rank — the position of your domain in the engine’s source list, which is used for Average Position, definition A.
The deliverable is a single citation-log row schema. The automated method in §5 uses the same schema:
run_date date when the sample was taken (UTC)
prompt_id foreign key for prompts.csv
prompt_set_v version of the frozen prompt set
engine perplexity | chatgpt | google-aio | ...
appearance cited | mentioned | absent
citation_rank integer position in the source list (null unless cited)
source_url URL attributed by the engine (null unless cited)
citation_verified true | false (see §4.1)
snippet sentence or section that the engine used
4.1 Verify every citation (the step everyone skips)
Treat an AI-attributed URL as a claim until you verify it. The URL may return a 404 error or lead to a page that does not support the sentence associated with the citation. This requirement is specific to AI citation tracking and is essential to reliable results.
For each cited URL, record citation_verified = true only if both conditions are met:
- The URL resolves and does not redirect to an unrelated page.
- The page supports the claim associated with the citation.
Report verified and unverified citations separately. A hallucinated or unsupported citation is a meaningful finding. Liu et al. 2023, Evaluating Verifiability in Generative Search Engines explains why this failure mode is common enough to measure deliberately.
5. Step 3 — Automate the validated process
Automate only after you have validated the manual process. Only then should you decide whether to build or buy the automation.
API capabilities by engine (verified 2026-05). There is no uniform API for retrieving citations across engines, so evaluate each engine separately:
| Engine | Programmatic source list? | Mechanism | Order guarantee | Note |
|---|---|---|---|---|
| Perplexity (Sonar API) | Yes | search_results[] with title, url, snippet, and date; the legacy citations[] field is deprecated and removed | Array order; no documented relevance ranking | Provides a direct source list; see Perplexity AI |
ChatGPT (OpenAI Responses API, web_search) | Yes | Inline url_citation annotations and a more complete sources[] list | Not documented as ranked | Reconcile the inline citations with the full source list; see ChatGPT Search |
| Google AI Overviews | No official API | Included in Search Console “Web” totals without per-citation attribution | — | Requires third-party SERP scrapers; see Google AI Overviews |
Sources: Perplexity Chat Completions reference and changelog; OpenAI web search tool; Google Search Central — AI features.
The automation normalizes every engine’s output into the engine-independent schema from §4:
for engine in engines:
for prompt in prompt_set_v: # frozen, versioned
answer, sources = engine.ask(prompt) # fresh session, no history
appearance = classify(answer, sources, my_domain) # cited|mentioned|absent
rank = citation_rank(sources, my_domain) # null if not cited
verified = url_resolves(src) and supports_claim(src, answer) # §4.1
log.append(run_date, engine, prompt.id, prompt_set_v,
appearance, rank, source_url, verified, snippet)
# The log now uses the same schema as the manual method
Buying a tool. If you purchase a tool instead of building one, start by comparing metric definitions. The vendor matrix in GEO Metrics §4 covers Profound, Otterly, Ahrefs, BrightEdge, and Similarweb and explains how each defines its KPIs. Choose a definition you trust, then evaluate the tools that use it.
6. Step 4 — Normalize, store, and compute deltas
Because the manual and automated methods use the same schema, their data is comparable. Follow two storage rules:
- Keep raw answers unchanged. Store each captured answer and its source list exactly as received.
- Derive metrics instead of editing them by hand. If a number looks wrong, correct the query rather than the resulting cell.
Compute the four core metrics from the log. GEO Metrics provides the formulas; the following examples show the query structure:
-- Citation Rate (definition: GEO Metrics §3.2)
SELECT engine,
COUNT(*) FILTER (WHERE appearance = 'cited') AS cited,
COUNT(*) AS answers
FROM citation_log WHERE prompt_set_v = 'v3' GROUP BY engine;
-- Average Position, definition A / citation order (GEO Metrics §3.5)
SELECT engine, AVG(citation_rank)
FROM citation_log WHERE appearance = 'cited' GROUP BY engine;
-- Source Diversity (GEO Metrics §3.10)
SELECT COUNT(DISTINCT engine)
FROM citation_log WHERE appearance = 'cited';
Is the change meaningful? A week-over-week difference does not necessarily indicate a real change. Before reporting it, check the following:
- Was the prompt-set version identical across both samples?
- Is the underlying citation count large enough? Treat a change based on five citations as noise, following the same small-sample caution that GEO Metrics applies to First-Cite Rate.
- Did an engine change behavior between runs because of a model or retrieval update?
- Did the
citation_verifiedrate change? More unverified citations do not represent an improvement.
7. Step 5 — Report results with enough context
Every reported number must include enough context to make it comparable:
- Prompt-set version (e.g.,
v3) - Engine set (name the exact engines instead of saying only “AI”)
- Time window (e.g., a 7-day window, sampled weekly)
- Mention or citation (which you counted)
- Position definition (A / B / C — see GEO Metrics §3.5)
A reported “Citation Rate of 18%” without this context cannot be interpreted or compared reliably.
Connect changes in the metrics to business outcomes cautiously. Tracking shows that visibility changed; it does not prove that revenue changed. GEO ROI Models explains how to evaluate that relationship.
This tracking process produces recurring snapshots. A GEO Audit uses those snapshots during a periodic review of the site’s overall readiness and results.
8. Validity threats and common pitfalls
Before publishing a report, review every item below. The linked sources explain each issue in more detail:
- Prompt-set bias — using a favorable or unversioned prompt set (§3; GEO Metrics §7)
- Time-window bias — treating windows of different lengths as the same metric
- Multilingual slicing — adding Chinese and English answer pools together (GEO Metrics §7)
- Mention / citation mixing — combining them into one count and inflating the results (Citation vs Mention)
- Position-definition mixing — comparing definitions A, B, and C as though they were equivalent (GEO Metrics §3.5)
- Personalization leakage — using logged-in sessions or sessions with history, which are not reproducible
- Hallucinated or dead citations — reporting unverified citations as successful results (§4.1)
- Over-extrapolating an isolated gain — assuming that an improvement measured for one participant will persist after competitors optimize for the same engine; see the C-SEO Bench caveat in Aggarwal et al. 2024 §6
9. Further reading
- Metric definitions: GEO Metrics · Citation vs Mention · Brand Mentions
- Business context: GEO ROI Models
- Related process: GEO Audit
- Details for each engine: Perplexity AI · ChatGPT Search · Google AI Overviews
- Academic foundation: Aggarwal et al. 2024 — GEO: Generative Engine Optimization
References
Academic:
- Aggarwal, P. et al. (2024). GEO: Generative Engine Optimization. KDD ‘24. arXiv:2311.09735 · ACM DL
- Puerto, H. et al. (2025). C-SEO Bench: Does Conversational SEO Work? NeurIPS ‘25 D&B. arXiv:2506.11097
- Liu, N., Zhang, T., Liang, P. (2023). Evaluating Verifiability in Generative Search Engines. Findings of EMNLP ‘23. arXiv:2304.09848
API & platform documentation (verified 2026-05):
- Perplexity — Chat Completions API Reference · Changelog
- OpenAI — Web Search tool (Responses API)
- Google Search Central — AI features and your site
Vendor KPI methodology (for evaluating paid tools, via GEO Metrics):
- Otterly.ai — Brand Report KPI Definitions
- Ahrefs — Brand Radar Methodology
Frequently asked questions
Should I start with manual tracking or an automated tool?
Can't I just pull citations from each engine's API?
How many prompts do I need, and can I change them later?
An AI cited a URL that doesn't exist or doesn't support the claim. Do I count it?
Where do I find the formula for Visibility Score?
Related playbooks & wiki
Sources
Primary
- GEO: Generative Engine Optimization (Aggarwal et al., KDD 2024) · arXiv / KDD '24 · 2024-08-25
- GEO: Generative Engine Optimization (KDD '24 Proceedings) · ACM SIGKDD · 2024-08-25
- Perplexity API — Chat Completions Reference · Perplexity
- Perplexity API — Changelog (citations field deprecation) · Perplexity
- OpenAI — Web Search tool (Responses API) · OpenAI
- Google Search Central — AI features and your site · Google
- Otterly.ai — Brand Report KPI Definitions · Otterly.ai
- Ahrefs Brand Radar Methodology · Ahrefs
Secondary
- C-SEO Bench: Does Conversational SEO Work? (Puerto et al. 2025) · arXiv / NeurIPS '25 D&B
- Evaluating Verifiability in Generative Search Engines (Liu et al. 2023) · arXiv / EMNLP '23 Findings