Key takeaways
- A fan-out is what happens when ChatGPT splits one prompt into several web searches. Mapping those searches to a client's pages gives you a gap list that is concrete, not abstract.
- Fan-out behavior changes fast. Report the date range and say which ChatGPT regime the data covers, or the report goes stale.
- Clients do not want a list of queries. They want a table: the query, whether a page covers it, why it matters, and what to build.
- Report fixes and outcomes in the same document so the next report can show whether the gap closed.
- Tools like Promptwatch can pull fan-outs per prompt, but the method works with any source of fan-out data.
Why fan-out data belongs in client reports
Most AI visibility reports I see show a score, a share of voice chart, and a list of prompts where the client was or wasn't mentioned. That tells the client what happened. It doesn't tell them why, and it doesn't tell them what to do on Monday.
The ZoomSphere team makes a similar argument about social reporting: clients ask why, not just what. A report that only shows outputs generates the same follow-up email every month. AI visibility reports have the same problem, and fan-out data is one of the best ways to fix it.

The reason is simple. A fan-out query is the actual search the AI ran to build its answer. If the client has no page that answers that search, you have found a specific, explainable gap. You don't need to speculate about why the brand wasn't cited.
AgencyAnalytics put the broader principle well in one of its videos: "Trust isn't built by showing more data, it's built by making the right data mean something." Fan-out gaps are data that means something because each one points to a page.
What a fan-out actually is
When someone asks ChatGPT "what's the best CRM for a small agency?", the model may not answer from memory. It can break the prompt into one or more web searches, read the results, and write the answer from those sources. Each of those searches is a fan-out query.
Promptwatch Data's ChatGPT query fanouts report describes a single prompt as capable of triggering 3 to 8 or more searches. Its own tracked averages are lower, and that matters for how you frame things to clients. Average fanouts per response fell from 2.15 in early December 2025 to about 1.84 by early March 2026, and returned in April at 1.0 per response. Average query length dropped from about 117 characters to roughly 53, which is six to eight words.
So don't tell a client "ChatGPT runs eight searches per question." Say what your data shows for their prompts, over a named period. Short queries, one or two per answer, mean each retrieval carries more weight. If the client's page doesn't match that one query, it doesn't get a second chance.
Why you must stamp every report with a date range
Fan-out behavior is controlled by the platform and it moves without warning. Two examples from Promptwatch's data:
- Average query length fell by more than half between December 2025 and April 2026.
- On August 8, 2026, ChatGPT started using the site: operator at scale. The share of fanout queries using it went from 0.37% to 16.8% in a day, roughly 1 in 6. Average fanout queries per response rose from about 1.08 to about 1.83 and stayed there. The site:-scoped searches were added on top of the generic ones.
If your keyword-to-page mapping was built before August 8, it is stale. That is the practical argument against a one-off gap audit. A quarterly PDF can describe a world that no longer exists by the time the client reads it.
Put a short block at the top of every fan-out section:
- Date range of the data
- Models and surfaces covered (for example, ChatGPT Search only)
- Number of prompts analyzed
- Any known platform changes inside that window
It takes a minute and it protects you when the numbers shift.
Step 1: choose the prompts worth reporting on
Don't dump every tracked prompt into the client report. Pick 5 to 10 that tie to revenue or to a conversation the client already cares about. A Reddit thread in r/DigitalMarketing gives the same advice for reporting in general: focus on 3-5 main things and use a graph to show impact.
Good candidates:
- Commercial prompts with a buying intent ("best X for Y")
- Prompts where a named competitor is cited and the client isn't
- Prompts the client's sales team hears from prospects
- Prompts where the client is mentioned but never cited as a source
Step 2: pull the fan-outs for each prompt
For each chosen prompt, collect the web searches the AI ran. You can get this a few ways. The free GEO Inspector Chrome extension from Promptwatch shows fan-outs for a ChatGPT conversation, and some AI visibility platforms store fan-outs per tracked prompt over time. Promptwatch includes prompt volumes, difficulty, and query fan-outs in its prompt intelligence, so you can see them next to citation data.

Other trackers in the category also surface the underlying queries or cited pages to varying degrees. Check each one's docs before you promise a client a specific view. A few worth a look:
If you are comparing options for agency use, the directories at bestgeosoftware.com and ai-rank-tools.com list many more.
Step 3: map each fan-out to the client's pages
This is the core of the method. For every fan-out query, ask three things:
- Does the client have a page that answers this query?
- Is that page indexed and crawlable?
- Does the page's title and H2 read like the query?
The site: finding makes the second question more important. Promptwatch's report says that thin category pages, broken internal search, and unindexed content now cost you answers as well as rankings. A page that exists but isn't indexed counts as a gap.
An on-site crawler helps with checks 2 and 3 at scale. Screaming Frog and Sitebulb are common choices for agencies.

For check 3, Promptwatch's recommendation is to write headings that read like search queries, such as "Best CRM for small agencies 2026", and to put the entity and category at the front of titles and H2s.
Sort each query into one of four buckets:
| Status | Meaning | Typical action |
|---|---|---|
| Covered | Indexed page matches the query well | Monitor |
| Weak | Page exists but heading, depth, or freshness is off | Refresh |
| Missing | No page answers the query | Create |
| Blocked | Page exists but is not crawlable or indexed | Fix technical issue |
Step 4: group the gaps by query type
Fan-out queries tend to cluster around a few patterns. Promptwatch's recommendations name comparisons (X vs Y), pricing, alternatives, and how-tos. Add site:-scoped lookups for the post-August regime. Grouping gaps this way makes the report shorter and the fix clearer. Instead of 40 individual queries you show five themes.
It also supports the advice to build clusters of focused pages instead of one mega-page. If six fan-outs across three prompts all ask about pricing, that is a pricing page problem, and the client can see it at a glance.
Step 5: build the gap table clients can act on
This is the table that goes in the report. Keep it to one page. Every row needs an owner and a next step, otherwise it is just another list.
| Prompt | Fan-out query | Client coverage | Gap type | Recommended action | Owner | Target date |
|---|---|---|---|---|---|---|
| Best CRM for small agencies | CRM for small agencies 2026 | Weak: page is 2023, generic title | Refresh | Update page, retitle to match query | Content team | Nov 14 |
| Best CRM for small agencies | Brand X vs Brand Y | Missing | Comparison | New comparison page | Agency | Nov 21 |
| Best CRM for small agencies | Brand X pricing | Blocked: page noindexed | Technical | Remove noindex, resubmit | Dev | Nov 7 |
| CRM alternatives | Brand X alternatives | Missing | Alternatives | New alternatives page | Agency | Dec 5 |
The example data above is illustrative. Replace it with the client's real queries and dates.
A few rules for this table:
- One action per row. If a row needs two actions, split it.
- Name a real owner, even if it is "agency".
- Include the reason in plain language. "Query asks for 2026, page is dated 2023" beats "freshness issue".
- Cap it at 10 to 15 rows. Put the rest in an appendix.
Step 6: report the why in a sentence
Under the table, write two or three sentences of commentary. Improvado's guidance on client reporting calls this contextual commentary: the number plus what drove it. For fan-outs, that sounds like this:
"Across the 8 prompts we tracked between Oct 1 and Oct 21, ChatGPT ran an average of 1.9 searches per response. The client had indexed pages for 11 of 17 distinct queries. The six gaps are mostly comparison and pricing queries, which is where competitors are currently being cited."
That is something a client can forward to their boss.
Step 7: close the loop in the next report
A gap report without a follow-up is a to-do list. The next report should show:
- Which gaps were closed and when
- Whether the new or refreshed pages were crawled
- Whether they started to be cited
- Whether any AI-referred traffic followed
This is where monitoring-only tools run out. Verifying the loop needs crawler logs, citation tracking per page, and traffic data in the same place. Promptwatch has IP-verified AI crawler logs, page-level citation tracking, and visitor analytics, so you can say "GPTBot fetched the page on Nov 18 and it was first cited on Nov 25." If your stack can't do that, at least use Search Console and server logs to confirm the page was fetched.
AI content tools can help you ship the fixes faster, but ground them in the gap list. Generating pages without knowing which fan-out they answer is how you end up with content that doesn't get cited.
Reporting tools for the delivery layer
The fan-out analysis is the hard part. Getting it into a client-friendly format is a separate job. Agencies already using a reporting platform can add a custom section or a slide for the gap table.
| Tool | Role in the workflow | Notes |
|---|---|---|
| Promptwatch | Fan-outs, citations, crawler logs, white-label PDF reports | Covers analysis and delivery |
| Whatagraph | Client dashboards and scheduled reports | Good for combining AI data with other channels |
| Agorapulse | Social-focused reporting | Less relevant to fan-outs |
| Airtable | Gap tracker with owners and dates | Easy to share with clients |

An Airtable or Notion base works well as the living gap tracker, with the PDF report as a snapshot of it. Clients can check status any time, a point the Zendo guide makes about client portals in general.
Common mistakes to avoid
Presenting fan-out averages as universal
The average changes by prompt type, model version, and date. Report your own tracked numbers and the period.
Listing queries without a decision
A raw list of 60 queries invites the question "so what?" Always tie them to a page and an action.
Rewriting strategy after a single day of data
Promptwatch's own advice is to watch for platform-wide shifts before rewriting content strategy. If every client's fan-outs change on the same day, that is the platform, not your content. Tell clients that before they ask.
Hiding the bad news
Improvado's reporting guidance says clients can tell when data is cherry-picked. If coverage is 6 of 17, say 6 of 17. A gap report that shows a lot of gaps is doing its job.
Ignoring other surfaces
ChatGPT is one source. Google AI Overviews and AI Mode also run their own query expansions. Keep the report scoped and say which surfaces it covers. For wider context on how AI platforms cite sources, see Promptwatch Data.
A simple monthly cadence
- Week 1: refresh fan-out pulls for the chosen prompts and check for platform changes.
- Week 2: re-map gaps, update the tracker, ship fixes.
- Week 3: check crawl and citation status for pages shipped last cycle.
- Week 4: write the report, with the date range, gap table, commentary, and outcomes.
If you are an agency that wants help running this kind of program, 1001 SEO Media works on GEO and content strategy for clients, and uses Promptwatch for AI visibility tracking.
Bottom line
Fan-out data turns a vague "you're not showing up" into a list of specific searches the client has no page for. Date-stamp it, map it to pages, put it in a table with owners, and come back next month to show which rows turned green.





