Skip to content

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.

DecisionOptionsRule of thumb
Which metric(s)The four core metrics are Citation Rate, Citation Share, Average Position, and Source DiversityStart with Citation Rate and Source Diversity; neither requires a competitor set
Mention or citationCount citations, mentions, or both, but tag them separatelyThey are different constructs and should never be added together. See Citation vs Mention and Brand Mentions
Which enginesChoose the engines your audience actually uses rather than trying to cover all of themTreat the engine set as a reported variable and name every engine included
Time window + cadenceFor example, a weekly sample with a 7-day windowAnswers 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:

  1. Set a schedule — use the same prompts, day of the week, and time window for every run. Cadence is part of the data.
  2. Use one fresh session for each prompt and engine — exclude logged-in history and personalization because personalized answers are not reproducible.
  3. Record the raw answer and its sources verbatim. Preserve the original capture unchanged and derive the metrics from it later.
  4. Tag how your domain appears as cited, mentioned, or absent, following the test in Citation vs Mention.
  5. 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:

EngineProgrammatic source list?MechanismOrder guaranteeNote
Perplexity (Sonar API)Yessearch_results[] with title, url, snippet, and date; the legacy citations[] field is deprecated and removedArray order; no documented relevance rankingProvides a direct source list; see Perplexity AI
ChatGPT (OpenAI Responses API, web_search)YesInline url_citation annotations and a more complete sources[] listNot documented as rankedReconcile the inline citations with the full source list; see ChatGPT Search
Google AI OverviewsNo official APIIncluded in Search Console “Web” totals without per-citation attributionRequires 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_verified rate 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

References

Academic:

  1. Aggarwal, P. et al. (2024). GEO: Generative Engine Optimization. KDD ‘24. arXiv:2311.09735 · ACM DL
  2. Puerto, H. et al. (2025). C-SEO Bench: Does Conversational SEO Work? NeurIPS ‘25 D&B. arXiv:2506.11097
  3. 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):

Vendor KPI methodology (for evaluating paid tools, via GEO Metrics):

Frequently asked questions

Should I start with manual tracking or an automated tool?
Start with manual tracking. Manual sampling gives you a reference point, sharpens your judgment, keeps the process independent of any vendor, and lets you validate any tool you later purchase. Automate only after you have run the process by hand and trust the results. If you cannot reproduce a dashboard's results manually, you cannot confidently defend them.
Can't I just pull citations from each engine's API?
Only partially, because the available data differs by engine. Perplexity's Sonar API returns a search_results array; the legacy citations field has been deprecated and removed. OpenAI's Responses API web_search tool returns inline url_citation annotations and a more complete sources list. Google AI Overviews has no official content API and is included in Search Console's 'Web' totals without per-citation attribution, so practitioners rely on third-party SERP scrapers. Do not assume that one engine's behavior applies to the others.
How many prompts do I need, and can I change them later?
Start with 30–50 prompts based on real user intents, then freeze and version the set. Because the prompt set defines the experiment, changing it without recording the change breaks the time series. Add prompts in a new version rather than editing the active set in place.
An AI cited a URL that doesn't exist or doesn't support the claim. Do I count it?
Log it with citation_verified = false, then report verified and unverified citations separately. A hallucinated, unsupported, or dead citation is a meaningful finding because a binary 'were we cited?' metric would hide that distinction.
Where do I find the formula for Visibility Score?
GEO Metrics contains every metric definition, including Visibility Score, and explains how each vendor calculates it. Keeping those definitions in one place prevents inconsistencies while the workflow here provides the data needed for your chosen metric.

Related playbooks & wiki

Sources

Primary

  1. GEO: Generative Engine Optimization (Aggarwal et al., KDD 2024) · arXiv / KDD '24 · 2024-08-25
  2. GEO: Generative Engine Optimization (KDD '24 Proceedings) · ACM SIGKDD · 2024-08-25
  3. Perplexity API — Chat Completions Reference · Perplexity
  4. Perplexity API — Changelog (citations field deprecation) · Perplexity
  5. OpenAI — Web Search tool (Responses API) · OpenAI
  6. Google Search Central — AI features and your site · Google
  7. Otterly.ai — Brand Report KPI Definitions · Otterly.ai
  8. Ahrefs Brand Radar Methodology · Ahrefs

Secondary

  1. C-SEO Bench: Does Conversational SEO Work? (Puerto et al. 2025) · arXiv / NeurIPS '25 D&B
  2. Evaluating Verifiability in Generative Search Engines (Liu et al. 2023) · arXiv / EMNLP '23 Findings
Last updated: 2026-05-19 Authors: Ray Yang Topic: Practice