All documentation

Citations

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

Citations screen showing share of citations, the most cited external source, and a table of cited source URLs

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.

Last verified 2026-08-11

Start monitoring your AI visibility.

See how AI search engines talk about your brand.

Free to start. No credit card required.