Guide

How to track AI citations

How to turn “we appeared in ChatGPT once” into a number you can repeat next month.

Tracking AI citations means running a frozen set of buyer questions through each assistant several times under fixed conditions, then recording how often you were cited rather than whether you appeared once.

Nearly everyone’s first attempt is the same. Open ChatGPT, ask the question, screenshot the answer, paste it into Slack. It feels like evidence. It is not, because the same question asked an hour later can return a different set of sources while nothing on your site has changed — and if you do not know that, you will spend the next quarter reacting to noise.

what a measurement actually isFreezethe same buyerquestions every timeRepeatseveral runs perprompt, not oneRecordhow often, not whetherRe-runsame protocol, comparethe spreadWHAT A MEASUREMENT ACTUALLY IS
A measurement is a protocol you can repeat next month. Anything you cannot repeat is a screenshot.

Why is a single AI answer not a measurement?

Because assistant output is non-deterministic. Ask the same question twice and you can get different wording, a different ordering of vendors and, most importantly for this purpose, a different set of cited sources. That variation exists even when the question, the model and the account are identical.

There are several reasons stacked on top of each other. The model samples from a distribution rather than replaying a fixed answer. The retrieval step that precedes the answer can return different pages depending on timing and load. Assistants personalise on account history, memory and location. And the index behind the search agent is being updated continuously, so a page that was retrievable this morning may not be in the result set this afternoon.

The practical consequence: one run tells you a citation is possible. It cannot tell you it is likely. Those are different business facts. Being named in one run out of five is a real result and a weak one, and you cannot distinguish it from three out of five without running the question more than once.

This is also why nobody should promise you citations. Nobody controls the sampling, and any vendor who guarantees placement in an AI answer is either misunderstanding the mechanism or hoping you do.

What do I need in place before I can track AI citations?

Five things, and the first one is not about measurement at all.

  1. Confirmed crawler access. If the retrieval agents cannot fetch your pages, you are not measuring your visibility — you are measuring a block, repeatedly, and getting a very consistent zero. Settle access before you build any of this. Which agents matter and how to test them →
  2. A frozen prompt set. A written list of the questions you will ask, unchanged between runs.
  3. Fixed conditions. Logged out, market pinned, no memory, and the model version written down.
  4. A run count. Decided in advance, applied to every prompt, not varied because a result was disappointing.
  5. A place to record per-run outcomes. A spreadsheet is entirely sufficient. One row per prompt per run, with the date, the assistant, the model, whether you were named, whether you were linked, and who else was.

That last column is the one people leave out and later wish they had. Knowing who is cited instead of you is more actionable than knowing you were absent, because it tells you which pages are winning the answer and therefore what you are competing against.

How do I build a prompt set from real buyer questions?

Not by brainstorming. The prompt set has to come from language your buyers actually use, or you will end up tracking a vocabulary nobody types.

Places to get real wording, in rough order of usefulness: the first two minutes of discovery calls, where a prospect explains their problem before adopting your terminology; support tickets and pre-sales emails; the questions asked in demos; your Search Console queries; and the phrasing competitors use in their comparison pages, because that is the phrasing their buyers brought them.

Then sort what you collect into types, because the types behave differently and mixing them produces an average that means nothing.

Prompt typeExample shapeWhat a result tells you
Category“What tools do X for Y?”Whether a stranger can discover you. The hardest and most valuable.
Comparison“Competitor A versus Competitor B”Whether you are in the consideration set at all.
Problem“How do I solve Z?”Whether your content is retrievable before anyone knows a category exists.
Branded“What does YourCompany do?”Whether your identity resolves, and whether the description is yours.

Weight the set towards category and comparison prompts. Branded prompts are reassuring and cheap to win, and they tell you almost nothing about whether anyone new will ever find you. A set that is mostly branded questions is how a company convinces itself it is visible.

Then freeze it. Write the date on it. The rule that makes the whole exercise work is that you do not edit the prompt set because a result was unflattering — the moment prompts change with the results, you have lost the ability to compare anything to anything.

How many runs per prompt do I need?

Three is the working floor: enough to expose obvious variation, cheap enough to sustain every month across a couple of dozen prompts and several assistants. More runs give you a finer picture and cost proportionally more time. Fewer than three gives you a coin toss you will mistake for a trend.

What you record matters as much as how many times you run. Record the per-run outcome, then report the spread.

What you reportExampleWhat it hides
Whether you appeared“We’re in ChatGPT”Everything. One run in five looks identical to five in five.
An average score“Visibility: 42”Whether that came from consistent mid-table citation or wild swings.
The spread“Cited in 2 of 3 runs, 3 of 3 the previous month”Little. You can see both the level and its stability.

A hypothetical, to show the arithmetic rather than a result. Say you track twelve prompts across two assistants at three runs each: seventy-two runs, an afternoon’s work. If you were cited in nineteen of them last month and twenty-six this month, that is a number you can defend, repeat and explain, and it is worth more than any dashboard that cannot tell you how it was produced.

What is the difference between citation share and mention share?

They are separate results and conflating them flatters the weaker one.

A mention is the assistant naming you in the body of its answer. A citation is the assistant attributing part of the answer to a specific page of yours, usually as a linked source. You can be mentioned without being cited — the model repeating something it holds about you, with no page retrieved — and you can be cited without being prominently mentioned, where your page supports a claim in a paragraph about somebody else.

Mention share is how often you are named across your prompt set. Citation share is how often one of your pages is the attributed source. Track both, in separate columns, because the gap between them is diagnostic. High mentions and low citations usually means the model knows of you but your pages are not being retrieved or are not quotable once retrieved. Low mentions and any citations at all usually means your content is doing work that your brand is not getting credit for — an entity problem rather than a content problem.

Citation share is the number that leads anywhere, because a citation is normally a link, and a link is the only part of this that a buyer can click.

What conditions do I have to hold constant?

All of these, every run, or the comparison between months is worthless:

  • Logged out, or in a fresh session with memory and personalisation off.
  • Market pinned. If you sell to the UK, measure as a UK user. Answers differ by market, and measuring your UK visibility from a US address produces a number about somebody else’s buyers.
  • No custom instructions and no prior turns in the conversation. One prompt, one fresh thread.
  • Model and mode written down. Which assistant, which model, and whether web search was on. A model update between runs is the single most common explanation for a change you cannot otherwise account for.
  • Date and time recorded on every row.

Measuring while logged in is the most expensive mistake here. Your own account has visited your own site, asked about your own company and carries memory of both. It is the single account in the world most likely to name you, and it will cheerfully report a visibility you do not have. Everything reported to a client or a board should come from a clean, logged-out, market-pinned session.

What should I re-measure after making a change?

The whole frozen set, not the prompts you think you influenced. Retrieval is not scoped to the page you edited: rewriting a pricing page can change which of your pages is pulled for a comparison prompt, and picking only the prompts you expected to move is how you convince yourself of an effect that is not there.

  1. Ship the change and wait. Access fixes take effect as soon as an agent next fetches the page; content and schema changes need re-crawling and re-indexing, which takes longer than most people assume. Measuring the next morning tells you nothing.
  2. Change one class of thing at a time. Crawler access, then page structure, then entity and schema. Ship all three in a week and you will never know which one moved the number.
  3. Re-run every prompt at the agreed run count, under the same conditions, and record the new spread beside the old one.
  4. Compare ranges, not single readings. Two of three going to three of three is a signal worth noting. One run changing is not.
  5. Log the model version. If it changed between measurements, say so in the report rather than claiming the credit.

Monthly is the right cadence for most companies. Weekly measurement produces noise and an urge to act on it; quarterly is too slow to catch a crawler block that appeared after a CDN configuration change.

Why are vendor visibility scores without run counts noise?

Plenty of tools will sell you a single number for your AI visibility. Some are built on a real protocol. Many are one run per prompt, dressed up.

A composite score is only as good as the method behind it, and the method is what these tools rarely publish. Ask any vendor five questions before you believe a number:

  • How many runs per prompt, and is it the same for every prompt?
  • Are the runs logged out, and which market are they pinned to?
  • Which assistants and which model versions, and what happens to the history when a model updates?
  • Where did the prompts come from, and can I see and freeze the list?
  • Does the score separate mentions from citations?

If those answers are not available, the number is not comparable to anything — not to last month, and certainly not to a competitor. That does not make the tools useless; it makes the score a rough indicator rather than a measurement, and it should be labelled as such in anything you send a client. We publish our own protocol for exactly this reason. The tapFunnel measurement protocol, in full →

What does a tracking cycle look like in practice?

  1. Week one, once: confirm crawler access, write twenty prompts from real buyer language, freeze the list, decide the run count and build the sheet.
  2. Baseline: run the full set, three runs per prompt, logged out and market-pinned, before you change anything. A baseline taken after the fixes is not a baseline.
  3. Ship one class of change and note the date it went live.
  4. Month two: re-run the identical set under identical conditions. Record citation share and mention share separately.
  5. Report the spread and the competitors named instead of you, not a single score.
  6. Repeat monthly. The prompt set only changes when the business changes, and when it does, note the change and treat the history as a new series.

Referral data sits alongside this rather than replacing it. A meaningful share of assistant traffic arrives without a usable referrer, so analytics undercounts it by an amount you cannot determine from inside analytics. Use it the right way round: citation tracking tells you whether you are in the answers, referral data tells you whether anything downstream happens when you are. The GA4 method, and its limits →

If you would rather see the baseline before committing to the process, that is what the free AI visibility check produces: a measured starting point with run counts attached, and the names of whoever is currently being cited in your place. The method is the one described on this page, and there is no call attached to it.

FAQ

Related questions

Monthly suits most companies. Weekly produces noise you will be tempted to act on, because run-to-run variation is normal and not a trend. Quarterly is too slow to catch a crawler block introduced by a configuration change.

Enough to cover your buyer's real questions without becoming unsustainable to re-run. Ten to twenty is workable for most B2B companies, weighted towards category and comparison questions rather than branded ones. The set matters less than freezing it.

Partly. Scripted runs against APIs make the repetition cheap, but API output can differ from what a user sees in the assistant interface, so record which route you used and never mix the two in one series. Whatever you automate, keep the run count and conditions explicit.

There is no universal benchmark, and any figure quoted as one should be treated with suspicion. What matters is your own direction of travel on a frozen prompt set, and who is being cited instead of you on the prompts where you are absent.

Check three things in order: crawler access, in case a CDN or robots rule changed; the model version, in case the assistant updated between measurements; and the pages themselves, in case a redesign removed the self-contained sentences that were being quoted.

It is worth something and it is not a citation. A mention reflects what the model holds about you; a citation means a page of yours was retrieved and attributed, and usually carries a link a buyer can click. Track them in separate columns or you will overstate your position.

Get a measured baseline, not a screenshot.

The free check runs a real prompt set with run counts recorded, and names who is cited instead of you. 48 hours, no call.