← Back toRankZero Blog

How to Build an AI Brand Visibility Dashboard in Looker Studio

Build an AI brand visibility dashboard in Looker Studio with GA4's AI Assistant channel, Search Console, and the pre-click data neither one holds.

AI search visibility playbooks for teams that want to win

How to Build an AI Brand Visibility Dashboard in Looker Studio

An AI brand visibility dashboard in Looker Studio needs three data sources, not one. GA4 carries the clicks AI assistants send you, Search Console carries Google's AI surfaces, and a third feed has to carry the thing neither of them sees: the answers that name your brand and send you nothing at all.

Almost every free template you can download covers the first source and calls the job finished.

Two changes in 2026 broke most of the published advice on this. In May, GA4 added a native AI Assistant channel, which makes the hand-built regex that every older guide teaches redundant. On 31 August, Search Console opened its generative AI performance report to every site in the world, and that data cannot be pulled into Looker Studio at all.

You already know how to build a report. What follows is the part that is specific to this problem: which three sources to connect, what each one is blind to, and where the numbers quietly double count.

Key Takeaways

  • GA4 now classifies AI assistant traffic natively. The rule is that session medium exactly matches ai-assistant, so you can delete your custom channel group. Keeping both double counts.
  • The AI Assistant channel explicitly excludes Google's AI Overviews and AI Mode. Those sit in Organic Search, so your AI number is split across two channels by design.
  • Search Console's generative AI report is impressions only, has no query dimension, and is absent from the Search Console API. Manual CSV export is the only way into Looker Studio.
  • Those generative AI impressions are already inside your Web search type totals. Adding them as a separate metric counts them twice.
  • Only share of voice across a fixed prompt set measures visibility rather than traffic. No Google connector carries it, because Google does not have the data.

What Belongs on an AI Brand Visibility Dashboard

Three layers, and they answer different questions.

  • Pre-click visibility: How often AI answers name your brand across a fixed set of prompts, in what company, and how that moves. This is AI search visibility in the strict sense.
  • Google's AI surfaces: Impressions where your pages appeared inside AI Overviews and AI Mode.
  • Post-click AI traffic: Sessions that AI assistants sent to your site.

Most dashboards labeled AI visibility hold only the last of those, post-click traffic. That is a traffic report wearing a different name.

The distinction matters because of how AI answers behave. A buyer asks ChatGPT which tools to shortlist, reads five names in a paragraph, and clicks nothing. You were recommended. GA4 recorded zero rows. Build a dashboard on sessions alone and your best month of AI visibility can look like your worst.

Traffic is the receipt. Visibility is the event. You want both on the same page, which is precisely why this takes three sources and a blend rather than one connector. If share of voice across a prompt set is new to you, start with how AI share of voice is measured before you build anything.

Layer 1: AI Referral Sessions From GA4

Start here, because it now takes about 20 minutes.

GA4 has a default channel called AI Assistant. Per Google's default channel group documentation, it covers users arriving "from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok". The classification rule is published: the medium exactly matches ai-assistant, and GA4 sets the medium to ai-assistant and the campaign to (ai-assistant) when the referrer matches its list of AI assistants.

Delete your custom channel group. Most guides written before mid-2026 tell you to build a regex custom channel group matching chatgpt|perplexity|claude|gemini|copilot against session source. Some of the highest-ranking ones still state plainly that GA4 has no built-in classification for AI tools. That stopped being true in May. If you run the old regex alongside the native channel, the same sessions appear in two channels and every share calculation on the dashboard is wrong.

In Looker Studio, connect the Google Analytics source and use Session default channel group, where the value reads AI Assistant.

If you want the more durable filter, use Session medium exactly matches ai-assistant instead. That is the documented rule itself rather than a label built on top of it, and the GA4 Data API schema page still enumerates a shorter legacy list of channel values that does not yet include the new one.

Two holes to name on the chart itself

AI Overviews and AI Mode are not in this channel. Google's documentation is explicit in both directions: AI Assistant "excludes Google's AI Overviews and AI Mode", and Organic Search "includes Google's AI Overviews and AI Mode". Your AI traffic is split across two channels on purpose, and a scorecard titled "AI traffic" that reads only the AI Assistant channel understates it.

Traffic without a referrer cannot match. The rule keys on the referrer, so a session arriving with none, which is what happens from some mobile apps, in-app browsers, and pasted links, falls through to Direct instead. Treat the AI Assistant number as a floor rather than a total, and say so on the dashboard.

Layer 2: Google's AI Surfaces From Search Console

Add the Search Console connector next, and expect to build two data sources rather than one.

The Search Console connector offers two aggregation tables, Site Impression and URL Impression, and a single data source can only use one. Site Impression aggregates at property level, which is what you want for the trend line. URL Impression breaks down by page, which is what you want for the table underneath it. Search type covers Web, Image, Video, and News, with Discover and Google News available on URL Impression only.

Then you hit the wall this article exists to warn you about.

Google rolled out the generative AI performance report to all websites worldwide on 31 August 2026. It reports impressions in AI Overviews and AI Mode, grouped by pages, countries, dates, or devices. It has no query dimension, it reports no clicks, and it inherits the usual 1,000-row limit.

It is not in the Search Console API. The searchAnalytics.query reference accepts exactly six search types: web, image, video, news, discover, and googleNews. There is no generative AI value. The Looker Studio connector is built on that API and offers the same list, so no connector, community or otherwise, can reach this report today.

The workaround is unglamorous and worth doing anyway. Export the report to CSV, paste it into the same Google Sheet you are about to build for layer three, and stamp the export date in a cell that renders on the chart. A monthly manual step is fine. A number that silently ages while it looks live will get someone in trouble.

One trap to avoid while you are in there. Google states that the generative AI report "includes data from the Web search type in the Performance report". Those impressions are already inside your Web totals. Chart them as a share of Web impressions, never as a figure you add on top, or you will report the same impression twice and the error will grow every month AI Overviews expand.

Layer 3: The Pre-Click Data No Google Connector Carries

This is the layer that earns the dashboard its name, and it is the one you have to feed yourself.

What belongs in it is a fixed prompt set, run on a schedule, producing four numbers per run: how often your brand is named, how often it is cited with a link, which competitors are named beside you, and your share of the total. Fixed is the operative word. Change the prompts and the trend line becomes meaningless, because you changed the instrument rather than the result.

Google has no connector for this because Google does not hold the data. Building the prompt set is its own job, and setting up AI mention tracking covers what to log per run and what to ignore.

Google Sheets is the bridge. It is the fastest Google connector Looker Studio has, defaulting to a 15-minute refresh where Analytics and Search Console are fixed at 12 hours.

Fill it with Apps Script rather than by hand. A UrlFetchApp call against your tracker's API, on a time-driven trigger, appending one row per day. Apps Script clock triggers accept everyMinutes(n) where n is 1, 5, 10, 15, or 30, and everyHours(n) for anything slower. Hourly is generous, because the data underneath refreshes daily.

If you track with RankZero, one call does it. GET /api/v1/brands/{brand}/kpis?period=7d returns visibility percent and competitive rank alongside the Search Console and GA4 figures for the same window, which collapses layers one and three into a single row. The REST API reference has the full shape.

Append, never overwrite. A dashboard is a history, and a cell that updates in place has none.

Blending the Three Sources Without Breaking the Numbers

Blend on Date. Looker Studio blends take up to five data sources, so three leaves room.

Use a full outer join if you want every date that exists in any source, which is the honest default when your three feeds have different lags. A left outer join from your date-complete Sheet works too. An inner join will quietly drop every date where one source has no row, and on a dashboard with a two-day Search Console lag that means the last two days vanish without an error.

Only equality joins are supported, so the date fields have to match as dates, not as strings you formatted differently in each source.

The failure that catches experienced people is subtler. Looker Studio groups and aggregates each table on its included dimensions before the join. Add Landing page to one table and not the others and the pre-grouping changes underneath you, so your totals move without anything visibly breaking.

The practical rule: keep one narrow blend for the date-level scorecard row, and leave the page-level and query-level tables unblended against their own sources. A blend built to answer every question answers all of them approximately.

Why a "Live" Dashboard Is 12 Hours Old

Worth knowing before you promise anyone a real-time view.

Looker Studio caches by data source, and the refresh rates are not all yours to set. Google Analytics and Search Console are fixed at every 12 hours with no option to change it. Google Sheets defaults to 15 minutes. BigQuery can go down to one minute. Manual refresh exists, with a one-minute cooldown between uses.

Stack that cache on top of the source lag underneath it. Search Console data settles over a couple of days, and the newest points in the generative AI report are preliminary by Google's own note, drawn as a dotted line because they are still being collected and may change.

So the fastest number on your AI visibility dashboard is the one you push in yourself through the Sheet, and the slowest is the one people will ask about first.

Put an as-of date on every card. A dashboard that looks live and is three days stale does more damage than one that admits its age, because someone will make a call on it in a meeting.

Frequently Asked Questions

Can Looker Studio track ChatGPT traffic? Yes, through the GA4 connector. ChatGPT sessions land in the AI Assistant default channel, so filter on Session default channel group, or on session medium exactly matching ai-assistant for a filter that will not drift. Sessions that arrive without a referrer will still land in Direct.

Does GA4 have an AI channel now? Yes. AI Assistant is a default channel group in GA4, covering sources like ChatGPT, Gemini, Deepseek, Copilot, and Grok. It excludes Google's AI Overviews and AI Mode, which stay in Organic Search.

Can I get the Search Console generative AI report into Looker Studio? Not automatically. The Search Console API accepts only web, image, video, news, discover, and googleNews as search types, and the Looker Studio connector inherits that list. Export the report to CSV and load it through a Google Sheet.

Do I still need a custom channel group for AI traffic? No, and keeping one is now actively harmful. The native AI Assistant channel does the same job, and running both means the same sessions are counted in two channels.

Why does my AI referral traffic look so low? Because it usually is, and because the channel undercounts. AI answers frequently name a brand without linking it, referrer-less sessions fall into Direct, and AI Overview clicks are counted as Organic Search. Low referral traffic tells you nothing about whether AI is recommending you.

What should I put on the dashboard for executives? Three numbers on one row: share of voice across your prompt set, generative AI impressions as a share of Web impressions, and AI Assistant sessions. The first shows whether you are in the answers, the second whether Google is showing you, and the third what reached the site.

Where to Start

Connect GA4 and filter on the AI Assistant channel this afternoon. That is 20 minutes and it gives you a real baseline for post-click AI traffic. Add both Search Console tables next, since they are the other free half.

Then make an honest decision about layer three. If nothing on your dashboard measures answers where nobody clicked, you have built a traffic report, and traffic is the last thing to move in AI search. Visibility moves first, sometimes by months.

A dashboard tells you where you stand. It does not move you. When the pre-click layer comes back thinner than expected, the work is finding which sources the answers draw on and getting your brand into them.

That is the job we do. Book an AI search audit and we will map where your category's answers are coming from and what it takes to get you named in them.

Build the dashboard first, though. You cannot argue for the work until you can show the gap.

Let ChatGPT tell everyone about your business

Get a clear plan to outrank your industry and get your brand seen on AI search platforms.