Visibility
Citations
What counts as a citation, how one is attributed to you, and what the screen shows.

What counts as a citation
A citation is one link an AI engine puts in its own answer, pointing at a
specific URL as the source for what it just said. DiscoveredBy stores one row
per link, Citation, with its rank in the answer, sentiment and framing when
the model captured them, and which prompt and run it came from
(api/models/citation.py). See Key terms for how
a citation differs from a mention (your brand named without a source link) and
a retrieval (a page the engine read but never linked), and
Metrics defined for how citation rate
is counted from these rows.
What a cited URL is
Every citation points at a CitedUrl row: the exact link, the title the
engine gave it, and when it was first and most recently seen
(api/models/cited_url.py). A CitedUrl is deduplicated by a hash of the URL
itself and is not scoped to one project, so the same page cited by five
different engines, or cited again next week, is one CitedUrl row with
several citations pointing at it, not five separate URLs. Which domain a
cited URL belongs to is decided once, when the URL is first stored, from that
URL alone.
How a citation is attributed to you
When an engine cites a URL, DiscoveredBy reduces it to its registrable
domain, the part a public suffix list says is actually registered
("example.com" from "https://blog.example.com/post" or
"https://www.example.com/post", "example.co.uk" from a UK subdomain), and
lowercases it (api/services/urls.py#extract_domain). That domain becomes (or
already is) a Domain row, and the citation is marked as yours when that
row's id matches the one Domain your project was set up against: the
registrable domain of the URL you gave it at project creation
(api/services/execution.py#_store_citation,
api/routers/projects.py#create_project).
That is the whole check: one domain string compared to another, done once
when the citation is stored. A subdomain of yours counts as you, because the
registrable domain is the same either way, "docs.yoursite.com" and
"www.yoursite.com" both reduce to "yoursite.com". Past that, the match does
not try to be clever. For four of the five engines, the URL used for this
comparison is exactly the URL the engine returned, so a link that has since
started redirecting elsewhere is still matched by the domain the engine gave,
not by wherever it now points. Gemini is the one exception: its grounding
links are opaque Google redirect URLs with no real domain of their own, so
DiscoveredBy follows that redirect chain first
(api/services/llm.py#resolve_redirect) and attributes the citation to the
domain the chain actually lands on. Nothing here looks at the page's content,
so a syndicated copy of your article, republished verbatim on someone else's
domain, is attributed to that other domain, never to you.
What the screen shows
Citations opens on one hero number: what share of the citations currently in view point at your domain, out of everything shown here, not out of every collected answer. That makes it a different question from citation rate, which divides by collected answers rather than by citations, so the two percentages are not meant to match. Beside it: the domain cited most often that is not yours, and a count of distinct pages cited at all.
Filters narrow the view by owner (yours, a named competitor's, or everyone
else's), date range, country, tracked prompt, and engine, and every number on
the page recomputes against whatever is left. Below the filters, two tabs
cover the same underlying citations two ways: Sources groups them by URL,
with which engines cited it and how many times each; Every citation lists one
row per citation, with its rank in that answer and a link to the source
(api/routers/pages.py#citations_page).
Both tabs are built from the project's most recent 500 citations; a citation older than that cutoff will not appear in either tab even though the row still exists. A cited page's title can also fall back to a separate ranking of the 50 most-cited URLs when the citation row itself carries no title, so a URL outside that ranking still appears in both tabs, just without one.
Related
- Key terms: what separates a citation from a mention and a retrieval
- Metrics defined: the citation rate formula, and how domain coverage differs
- Troubleshooting: No citations yet: what a zero here does and does not mean
Last verified 2026-08-11