How TriRank Measures AI Citations (Our Rules, Written Down)
Aug 10, 2026

How TriRank Measures AI Citations (Our Rules, Written Down)

The judgement calls behind every number we publish: what counts as a citation, what we do with failed calls, and the four things we refuse to report.

Most measurement in this category is unfalsifiable. A dashboard shows you a score; you cannot see what it counted, when it counted it, or what it did when the measurement failed. You are asked to trust the number.

We publish our data openly, which means the rules behind it have to be public too — otherwise "open data" is just a chart. This is those rules.

Rule 1 — A citation is a domain in the citation list, nothing else

The engine either returns your domain in its structured citation list, or it does not. If your brand is named in the prose of an answer and no link points at you, that is a mention, and we do not count it as a citation.

This is the strictest reading available, and it costs us numbers. It means our published rates are lower than they would be under a looser definition. We keep it because a mention we cannot verify is not a measurement — anyone can claim a higher number by counting prose, and nobody can check them.

If you want the distinction spelled out, AI citations and brand mentions in AI are separate glossary entries for exactly this reason.

Rule 2 — A failed call is unknown, never "not cited"

Engine calls fail. Rate limits, timeouts, malformed responses. When one does, we record the result as unknown and drop it from every denominator.

We never fold it into the "not cited" bucket. That distinction sounds pedantic and is not: if a run has 100 brands and 12 calls fail, counting those twelve as failures-to-cite quietly deflates the published rate by 12 percentage points and attributes our infrastructure problem to somebody's marketing.

This is the same principle we apply to our DR leaderboard: when a lookup returns nothing, the row shows an honest dash rather than a zero. A blank and a zero mean different things and we will not let one wear the other's clothes.

Rule 3 — Small samples get held back, not published thin

Our category breakdown shows 13 categories. The dataset has 23.

The other ten fell below four sampled brands and were aggregated away. The same threshold applies to citation sources: a domain has to appear across at least five different brands before it gets a row, so that one brand's unusual footprint cannot become a published trend.

We say "13 of 23" on the page rather than just "13", because the difference between these are the categories and these are the categories that cleared the bar is the whole of whether you can trust the table.

Rule 4 — Every number carries its date, and different dates stay different

Two of our datasets get crossed against each other: citation data collected in July 2026, Domain Rating snapshots dated 2026-08-05. They are a month apart.

We do not merge them into one date. Wherever those numbers appear together — on the page, in the DR-versus-citations analysis, in this post — both dates travel with them.

The same applies to attribution. Domain Rating is Ahrefs' number, not ours, and it is labelled that way everywhere it appears. Their own definition is the authority on what it means; we only publish snapshots of it.

Rule 5 — We publish the limits at the same weight as the finding

Our most-quoted result is that Domain Rating shows no detectable relationship with AI citation rate — Pearson r = 0.025 across 101 brands. That result ships with three limits printed next to it, not beneath it:

  • the sample runs DR 59–95, so it says nothing about weak domains
  • three prompts per brand means citation rate has only four possible values, which blunts any correlation
  • at n = 101 the smallest detectable correlation is |r| = 0.276, so we can rule out a moderate relationship and not a weak one

We also publish the binning method, and the fact that a different, equally defensible binning moves the headline figure from 0.600 to 0.641. That is the kind of detail a vendor normally leaves out. Leaving it out is how a number becomes unfalsifiable.

What we measure, and what we admit we cannot

We run four public datasets. Each has a boundary we state on its own page:

DatasetWhat it isThe boundary
AI visibility benchmark101 SaaS brands, 3 prompts each, 2,469 citationsOne engine (Perplexity sonar), July 2026
AI citation sourcesWhich domains those citations pointed atShare only, no absolute counts; ≥5-brand threshold
SaaS DR leaderboardAhrefs Domain Rating for the same 101 domainsAhrefs' number, snapshot dated, rebuilt on demand
AI crawler stats8,672 AI crawler hits over 41 daysOne site — ours. Not a web-wide share

That last row is the one we are most careful about. It logs crawler traffic to trirankai.com and nothing else, over 2026-06-26 to 2026-08-05, counting HTML routes only. It is not a measurement of what crawlers do across the web, and one crawler — Meta-ExternalAgent — accounts for 79.2% of it, with its last visit on 2026-07-31. Any share figure from that dataset is dominated by a single actor that has since stopped.

Crawler identity is not something we get to define either. The user agents come from the vendors: OpenAI documents its crawlers as three separate tokens with three different purposes, Anthropic documents its own, and Google publishes a full crawler list. We report against their definitions and do not collapse tokens that the vendor keeps separate.

Four things we will not report

AI referral traffic. ChatGPT and Perplexity mobile apps strip the referrer. Any number we produced would be a lower bound of unknown depth, presented as a measurement. We do not publish it.

Crawler traffic to your site. Our edge only sees requests to our own domain. We can tell you what hits us; we cannot tell you what hits you, and we will not present the first as the second.

Estimated prompt volume. Nobody publishes how often a question is asked inside an AI assistant. Numbers that claim to are models, not measurements.

Anything without a date. If we cannot say when a figure was measured, it does not go on a page.

Why write this down

Two reasons, and only one of them is principled.

The principled one: a number you cannot check is a claim, not data. Publishing the rules is what makes the difference.

The practical one: rules that are not written down drift. We have found our own stale claims — a page promising a refresh cadence nothing scheduled, a check quoting a policy sentence that had changed underneath it. Writing the rule down is the first half; the second half is having something that fails when the rule stops being true.

If you want to see the rules applied rather than described, start with the benchmark or the data hub. If you want to check your own domain against them, the free audit runs the same measurement, and our MCP server exposes the same numbers to Claude if you would rather ask in plain English — the tutorial is here.

For the manual version of the same checks, how to check AI search visibility and how to check if ChatGPT cites your website walk through doing it by hand. Citation tracking in Perplexity and ChatGPT covers the per-engine differences, and why ranking on Google doesn't get you cited by AI is the finding that started us measuring this way.

Related terms: AI search monitoring, AI search visibility, llms.txt, robots.txt. Our editorial policy and methodology pages carry the rest.

Newsletter

Join the community

Subscribe to our newsletter for the latest news and updates