AI citation tracking records which web pages an AI answer used when it answered a question about your market: your own pages, pages published for you, and the competitors’, publishers’ and directories’ pages it chose instead. It is for SEO and content teams, and the agencies working for them, who need more than “you were mentioned”: which address was cited, by which engine, for which question, whether the answer named you, and whether the citation held the next time. The Ranking Factory keeps every cited address from every answer it reads, and keeps its history.
A citation is the most checkable thing an AI answer gives you, because it points at a page. It is also easy to count badly. The sections below say how one is counted here.
Every answer a run, a tracked prompt or a Google AI Overview reading brings back is read for its sources, and each source is kept as an address, not just a domain.
Declared: the engine returned the page in its own list of sources, the only one of the three that is the engine’s own account. Address in the text: the answer wrote out an address on the site. Name in the text: the domain appears in the prose and nothing more. They are kept apart; where they are combined into a score they count 1, 0.6 and 0.25, a judgement stated rather than buried.
A source listed without its address is read beside the answer text. A cited Google Doc, Sheet or deck is matched on its file id however the link was written. Gemini’s temporary grounding links are followed once to the page they name. When matching improves, a nightly catch-up re-reads the answers already stored and credits what they always held, counting nothing twice.
Every cited source is classed as owned (your domain), controlled (published on your behalf: a Google Doc, a Blogger post, a video on your own channel) or independent. A page this product published for you is never counted as independent, and an uncertain source counts as controlled, so doubt never flatters the result.
On Sites AI cites, across all your projects, you label the sites that come up: stockist, competitor, neighbouring field, directory, publisher, community, reference, ours, or not related. Each kind gets its own naming rate with its denominator, because an answer citing your stockist usually names you and one citing a competitor’s guide rarely does. A rule’s guess is shown as a guess.
When an answer first cites a page published for you, the page is dated by that answer, with the engine and, where it was kept, the question. What’s working charts those first citations by day or week. If the engine that cited a page later asks about its subject and does not cite it, the page shows “Not seen in the latest check”; after two such checks in a row, “Was cited, now isn’t”, or “Cited another of your pages instead”.
Each watched search keeps the sites its overview drew on, in how many readings out of how many, which of them are yours and what kind of page each was. Nothing is called a site the overview keeps returning to on fewer than three readings.
When OpenAI or Claude are asked directly on your own key, the run also keeps what their web search returned that the answer did not cite, shown as “Looked at, not cited” and never counted as a citation. Where Claude, asked directly on your Anthropic key, quotes a sentence from a cited page, the sentence is kept under that page with its date.
The outreach list ranks other people’s cited pages by how many of the answers citing them recommended someone, you or a competitor you track, with your own and your competitors’ sites left out. It downloads as a spreadsheet. Placements you then earn, such as a review or a listing, can be recorded and watched from that day on a line of their own.
Worked example: an illustration
The columns are the product’s: the cited address, the engine, the strength of the citation, the kind of site and whether the answer named the business. The business is made up (a payroll app for restaurants) and so is every address, on the reserved .example domain.
| Cited address | Engine | How it was cited | Whose page | Kind of site | Answer named the business |
|---|---|---|---|---|---|
| payroll-app.example/guides/restaurant-tips | Perplexity | Declared | Owned | Ours | Yes |
| docs.google.com/document/d/… (published for the business) | Gemini | Declared | Controlled | — | Yes |
| rival.example/blog/restaurant-payroll | ChatGPT | Declared | Independent | Competitor (labelled) | No |
| trade-magazine.example/best-restaurant-payroll | ChatGPT, Perplexity | Declared | Independent | Publisher (labelled) | 1 of 2 |
| forum.example/threads/payroll-for-a-small-cafe | Gemini | Address in the text | Independent | Community (a rule’s guess) | No |
Five pages were cited. The business’s own two were cited in answers that named it, as its own pages always are. Of the three independent pages, only the trade magazine sat in an answer that named the business, once in two. Pages like it are what the outreach list ranks, by how many of the answers citing them recommended somebody: the business or a competitor it tracks.
A rival’s page cited for your subject is a citation too. That is why a rising citation count can describe a business becoming less visible, and why the count of citations is always shown beside how many of them sat in an answer that named you.
A citation says an engine used a page. Everything else is a separate fact, and is counted separately.
Most third-party pages cited in answers about a business appear in answers that do not name it. The naming count sits beside every citation count, with what it was counted out of, and per topic the counts fall to single figures quickly, so they are shown as counts rather than percentages.
Counting only declared citations would report engines that publish no source list as having ignored you. Counting the weakest tier as if it were the strongest would overstate. That is why the three tiers are kept apart.
With your Cloudflare zone or our WordPress plugin, the product sees which crawlers fetched a page. That shows the page was read, not that an answer used it, and a fetch is never shown as a citation.
Runs read what the engines’ APIs return. The ChatGPT and Gemini apps can cite differently; their answers are counted on their own lines and never recorded as citations of your published pages. Google AI Mode citations of your pages are recorded under “Google AI Mode”, apart from AI Overviews.
Only Claude asked directly on your own Anthropic key returns the sentence it quoted. Every other route gives the address alone, so most cited pages carry no quote.
A page cited after it was published can be checked, because it did not exist before. That publishing it caused the citation cannot, and it is never reported as cause.
[SCREENSHOT: /reports/recipe-outcomes, showing What’s working opened on its timeline of pages first cited, by week, with one point opened to name its engines and pages]
Citation tracking comes with every visibility run, tracked prompt and AI Overview reading, on every plan. Growth monthly starts with a 14-day free trial; annual billing is ten months for twelve.
$49 a month
Cited sources, citation history and the outreach list; crawler hits from our WordPress plugin.
$129 a month
Everything in Starter, plus crawler hits from your Cloudflare zone and a $40 AI Overview default budget. 14-day free trial.
$249 a month
Everything in Growth for many clients, with white-label reports.
$499 a month
Everything in Agency, with an AI Overview budget you set.
Citations are read from answers you are already paying your engines for, so tracking them adds no AI calls. On our own account in September 2026 a weekly run of 10 questions on two or three engines cost $0.55 on average.
AI Overview readings run on your own DataForSEO credit, inside a monthly budget: $10 by default on Starter, $40 on Growth and Agency, your own figure on Enterprise.
The same product, from another task
Yours, the ones published for you, and everyone else’s: each address with its engine, its strength and its history.
Start your 14-day free trial