If someone has asked whether your brand shows up in ChatGPT, the honest first answer is that a blank result and a real zero look identical until you check one thing. This guide is for anyone who has to produce that answer without a monitoring platform, using nothing more than a chat window, a spreadsheet, and about thirty minutes.
By the end you will have a verdict per prompt, a repeatable record you can defend in a meeting, and a scheduled job that keeps it current. The completion condition is simple: for every prompt you can state whether the answer was grounded, whether it named the brand, and whether it linked to the site.
What you will have when you finish
Output | Where it lives |
|---|---|
A prompt list of 8 to 12 questions, written from real conversations | The first tab of your sheet |
One row per prompt with four fields and the model version | The same tab |
One of four verdicts per prompt, with the action attached | The verdict column |
A repeat run for at least two prompts | Rows 2 and 3 of the same sheet |
A scheduled check with a fixed rubric | Your agent's project folder |
Prerequisites: access to ChatGPT with web search, a spreadsheet, and the ability to spend about $0.29 on a ten prompt run if you automate it.
Step 1: write the prompts from conversations, not from keywords
Pull the last twenty questions your sales team answered, then group them. In our 20 prompt study the widest source list came from a question about getting cited at all, and the narrowest came from a head to head tool comparison, so the shape of the question decides how much data you get back.
Write 8 to 12 prompts across four shapes: category ("best X for Y"), comparison ("A vs B"), problem ("how do I find out whether AI knows my company"), and proof ("who recommends X in 2026"). Add two prompts that name your brand directly, because those behave differently from category prompts. If you want cross-surface evidence for the same list, the AI visibility checker analysis shows what changes when the same prompt goes to three surfaces.
Output: a final list of 8 to 12 prompts, each tagged with its shape. Quality check: every prompt must be one a customer would actually type. If a prompt exists only because it contains a keyword, cut it.
Step 2: run the validity gate before you read anything else
This is the step that most checks skip, and it is the reason blanks get reported as zeros. In our run, ChatGPT issued search queries on 8 of 20 prompts and answered the other 12 from memory.
What we observed | Grounded answers (8 prompts) | Ungrounded answers (12 prompts) |
|---|---|---|
Search queries issued | 4 to 8 per prompt | 0 |
Source annotations returned | 6 to 18, median 12 | 0 |
Distinct domains cited | 4 to 10, median 7 | 0 |
Brands still named in the text | yes | yes, in 13 of 20 prompts overall |
Before you record anything about your brand, run each prompt and answer one question: did the model look anything up? In the ChatGPT interface the tell is the source list under the answer. If there is no source list, the answer was produced from memory and its silence about your brand means nothing yet.
Output: a yes or no per prompt in the grounded column. Quality check: an answer with no source list is never recorded as a visibility signal, only as a memory signal. Our ungrounded answers were not shorter either, 1,730 median output tokens against 1,645 for grounded ones, so length is not a usable tell.
Step 3: record four fields, not one
One number per prompt is the reason reports disagree. Keep these four.
Field | Value | Why it matters |
|---|---|---|
Grounded | yes or no | Decides whether the prompt can produce a link at all |
Brand named | yes or no | The signal that survives an ungrounded answer |
Domain linked | yes or no | The signal most tools report alone |
Model version | e.g. gpt-5-2025-08-07 | Behaviour moved between versions in our runs |
That last field is not housekeeping. The same 20 prompts run through an older model on the same endpoint returned sources on 2 prompts, against 8 for the current one. A report without a model version cannot be compared to next month's.
Output: four filled fields per prompt. Quality check: if any cell is empty, the row cannot be reported. Collect the raw answer text and the raw source list alongside the fields so a reviewer can re-check a verdict without rerunning the prompt.

Step 4: classify each answer into one of four verdicts
Verdict | What it means | What to do next |
|---|---|---|
Grounded and linked | ChatGPT looked something up and cited your domain | Protect the page that was cited and check which prompt shape produced it |
Grounded, not linked | It searched, read the web, and recommended someone else | The gap is content and source coverage, not model knowledge |
Ungrounded and named | It answered from memory and still named you | Nothing to fix. Rerun later with the same prompt to see whether it starts searching |
Ungrounded and unnamed | It answered from memory and did not name you | Not a signal yet. Fix the prompt or wait for a grounded run |
The fourth row is where most false alarms come from. In our data 13 of 20 ChatGPT answers named at least one vendor while only 8 of 20 cited anything, which means a chunk of answers will look empty to a link-only check while the same text is naming brands.

Output: one verdict per prompt, plus the action. Quality check: any verdict of "invisible" must be tied to a grounded answer. If the reasoning behind a verdict cannot survive being written out in one sentence, rerun the prompt.
Step 5: repeat two prompts before you trust a change
Run at least two prompts a second time, in a fresh conversation, and compare the verdict rather than the count.
Prompt | First run | Second run | Stable |
|---|---|---|---|
Best AI visibility tools | grounded, 13 sources, 6 domains | grounded, 14 sources, 4 domains | verdict yes, count no |
Best tool to track brand mentions | grounded, 8 sources, 8 domains | grounded, 9 sources, 5 domains | verdict yes, count no |
Audit my brand in AI answers | ungrounded, 0 sources | ungrounded, 0 sources | yes |
How often do AI answers change | ungrounded, 0 sources | ungrounded, 0 sources | yes |
Across the five prompts we repeated, the decision to search agreed with itself every time, while the domain count moved by two or three. That is the right calibration: treat the verdict as the signal and the count as an estimate with a range.
Output: a repeat row for at least two prompts. Quality check: if the verdict flips between runs on an unchanged prompt, mark the prompt unstable and exclude it from month over month reporting until it repeats.
Step 6: put the check on a schedule
A ten prompt check costs about $0.29 on the current ChatGPT model, roughly $1.27 a month if you run it weekly. At that price the work is not the API call, it is the rubric, so give the job to an agent with explicit collection rules rather than a summarisation request.
Hand the agent these constraints:
- Capture the answer text verbatim and the source list verbatim. No summary of either.
- Record the grounded flag, the model version, and the timestamp on every row.
- Compute counts in code after collection, never inside the prompt.
- Write to a dated file so a rerun cannot overwrite last month's evidence.
If you already run an agent for search reporting, the collection pattern is the same one used in daily SEO and GEO monitoring with Codex, and the terminal version of the same loop is in Claude Code daily monitoring. The only new requirement here is the grounded flag, because a chat surface that did not search must not be read as a citation result.
Output: a scheduled job that writes dated rows. Quality check: open last week's file and confirm you can rebuild the verdict from the stored evidence alone.
Verification: a valid check looks like this
- Every row has a grounded flag, a model version, and a date.
- Every "invisible" verdict belongs to a grounded answer.
- At least two prompts were run twice and their verdicts compared.
- The raw answer text and raw source list are stored next to the counts.
- The prompt list is tagged by shape, and the report groups results by shape rather than by total.
Limits
- One model version, one location, English, one day of runs. ChatGPT behaviour differs between versions.
- Web search was enabled through an API. The consumer app may search on a different set of prompts.
- Brand naming was measured by string matching, so a product name without the company name can be missed.
- This check measures answers, not traffic. Referral behaviour is a separate measurement.
FAQ
Why does ChatGPT say nothing about my brand?
Check whether it searched first. In our run it answered 12 of 20 prompts from memory with no sources, and those answers can name a vendor from stale training data or name nobody at all. An ungrounded answer is not evidence about your visibility.
How many prompts should I check in ChatGPT?
Eight to twelve per cycle is enough to see the pattern, provided they cover category, comparison, problem, and proof shapes. Running a hundred prompts gives you a bigger sample of the same four shapes, not new information.
Can I check this without an API?
Yes. The grounded flag and the brand naming are both visible in the interface, and the source list under an answer gives you the citation half. The API only matters when you want dated rows and repeat runs without manual copying.
How do I know whether a change is real?
Repeat the prompt before you report a change. In our five repeat pairs the search decision never flipped, while source counts moved by two or three. A verdict change on a grounded prompt is worth investigating. A count change is not.
Auspia view: run the validity gate before you read any number, and report the verdict rather than a count. The most common error we found is not a missed citation, it is a blank ChatGPT answer being reported as invisibility when the model never looked anything up. Fix the flag first, and the rest of the report becomes comparable month over month.
Victor Lane




