My product was named in 1 of 50 AI answers. Its biggest competitor was named in 19.
These weren't vanity searches. They were 25 questions a real buyer types before they've heard of any brand, each asked on ChatGPT and on Gemini. Search Console doesn't show what ChatGPT or Gemini say about you, and a rank tracker can't either. So I measured it myself.
Here's what came back, what surprised me, and the code I use to turn a pile of AI answers into numbers you can track.
Disclosure: the product is DropPerch, a domain-expiry monitor I run, and I measured it with CiteGaps, which I also build. All the numbers below are from that one workspace, week of 12 October 2026.
The setup
- 25 buyer questions, written the way people search before they know any brand. For example: "What is the best domain expiry monitoring software for small businesses?"
- No brand names in the questions. "Is DropPerch good?" tells you how an AI describes you, not whether it recommends you.
- Two engines: ChatGPT and Gemini. Collected live, the way a buyer sees them, sources included. I didn't use the bare model API, because without web search it doesn't show what buyers see or which pages it cites.
- One week, 50 answers. For each answer I kept the full text, every brand named, its position, and every cited URL.
The result
| Brand | Share of the 50 answers that named it |
|---|---|
| DropCatch | 38% |
| ExpiredDomains.net | 36% |
| DomCop | 32% |
| UptimeRobot | 24% |
| Watchman Tower | 20% |
| DropPerch (mine) | 2% |
One ChatGPT answer to that small-business question listed HetrixTools, UptimeRobot and DomainMOD. DropPerch wasn't in it.
Three things I didn't expect
1. I was cited more often than I was named
DropPerch was named in 2% of answers but linked as a source in 4%. So in at least one answer, the engine used my site as a source and still recommended someone else.
A mention (your brand in the text) and a citation (your URL in the sources) are different signals, and they move separately. Track both.
2. The most-cited source was a competitor's own website
The single most-cited source across the week was domcop.com: 102 citations in 50 answers. DomCop is also on the competitor list, named in 32% of answers.
That changed how I think about the problem. The engines get their shortlist from a handful of pages, and one of those pages is a competitor explaining the category in its own words. If my site and the pages around it don't answer the same questions as clearly, I'm not on the shortlist.
3. A forum thread was doing my competitors' marketing
One answer that named DropCatch, ExpiredDomains.net and DomCop, and not DropPerch, cited a discussion thread recommending DropCatch and ExpiredDomains.net. A thread an AI engine quotes is free marketing for whoever it names. A genuine, disclosed reply there can be worth more than another blog post on my own domain.
The code: turning answers into three numbers
Once you have the answers, you only need three numbers. Here's the scoring logic, simplified from what I run in production:
type Answer = {
brands: { name: string; position: number }[]; // in the order the answer named them
citedDomains: string[]; // e.g. ["domcop.com", "reddit.com"]
};
function score(answers: Answer[], brand: string, domain: string) {
const key = brand.toLowerCase();
// Your position in each answer, or null when you weren't named.
const positions = answers
.map((a) => a.brands.find((b) => b.name.toLowerCase() === key)?.position ?? null)
.filter((p): p is number => p !== null);
const cites = (d: string) => d === domain || d.endsWith(`.${domain}`); // count subdomains too
return {
// How often you make the shortlist at all.
visibilityShare: positions.length / answers.length,
// How often the engine uses your own site as a source.
citationShare: answers.filter((a) => a.citedDomains.some(cites)).length / answers.length,
// Where you appear when you DO appear. Never average in the misses.
avgPosition: positions.length ? positions.reduce((s, p) => s + p, 0) / positions.length : null,
};
}
Run the same function for each competitor and you get the table above.
Getting brands out of free text is the fiddly part. I give each answer to an LLM with a strict JSON shape, {"brands":[{"name": string, "sentiment": "positive"|"neutral"|"negative"|"mixed"}]}, and take each brand's position from the order it returns. Sentiment comes for free, and it matters: being named often but described badly is its own problem.
Rules that keep the numbers honest
- Keep the question set fixed week to week. Change the questions and you've changed the measurement.
- Exclude failed answers instead of counting them as "not named".
- Mind the sample size. With 50 answers, one answer is 2 percentage points. A 3-point jump can be noise.
- Read the trend, not the week. AI answers change from one session to the next. One week is a sample, not a verdict.
Bonus: see ChatGPT's clicks in your analytics
When ChatGPT links to a page, it adds utm_source=chatgpt.com to the URL. That's from OpenAI's publisher FAQ. In GA4, look under Reports → Acquisition → Traffic acquisition for chatgpt.com as a source. If your visibility share rises but those visits don't, the answers mention you without linking to you.
What I'm doing about it
Nothing clever. Just the list the data gave me:
- Get onto the third-party pages the engines already cite: the directories, comparison lists and threads in the sources, before any new content of my own.
- Answer the exact questions I'm missing. A page per lost question, with the specifics a buyer needs, not a generic "features" page.
- A comparison page against the brand at 38%, because a buyer comparing tools asks exactly that question.
- Reply, with disclosure, in the threads that get cited.
- Re-run the same 50 answers every week and watch the trend.
I'll post the follow-up when there's a trend worth showing, good or bad.
Try it on your own product
You can do all of this by hand with a spreadsheet: write 25 buyer questions, ask each one in a fresh chat, and log who's named and what's cited. Reading 50 answers a week gets old fast, which is why I automated it.
If you want a quick look first, there's a free check: one question, live answers from ChatGPT and Gemini, no sign-up. I also wrote up what each of these metrics means and how to read them together.
Have you checked what ChatGPT says when someone asks for a tool like yours? I'm curious whether anyone else is getting cited without being named. Tell me in the comments.