GA4 already has an AI Assistant channel in its default channel group. Google describes it as visits from sources like ChatGPT, Gemini, DeepSeek, Copilot or Grok, and it excludes Google’s own AI Overviews and AI Mode. If you want to decide exactly which assistants count, add a custom channel group with exact hostnames, place it above Referral, and test the regex before you save it.

Either way, you are counting visits that kept a referrer or a tag. You are not seeing what the shopper asked, visits that lost both, or orders an assistant influenced days before someone typed your URL. This guide sets up the count and writes those limits down next to it, so nobody reads more into the number than it holds.

Checked on October 27, 2026. Channel rules and assistant link behaviour change; re-check before acting.

What a visit from an assistant can carry

A shopper clicks a link in an assistant’s answer and lands on your product page. Your analytics can learn where they came from in two ways, and may get one, both or neither.

Signal Where it comes from What it tells you When it’s missing
Referrer The browser sends the site the click came from The assistant’s site, for example chatgpt.com The link or page asks for no referrer; the link was copied and pasted; some apps
UTM tag Added to the link itself Whatever the tag says, for example utm_source=chatgpt.com The assistant didn’t add one; the shopper stripped it or retyped the address
Neither Nothing The visit lands in Direct

Two documents matter here.

OpenAI’s Publishers and Developers FAQ says ChatGPT automatically includes utm_source=chatgpt.com in referral URLs from ChatGPT search, so tools like Google Analytics can track that traffic. Treat that as a statement about ChatGPT search links, and confirm it in your own landing-page URLs. On our check date, the same help URL returned this FAQ on one fetch and a different help article on another, so re-read it yourself.

The browser default. MDN documents strict-origin-when-cross-origin as the default referrer policy. Between two HTTPS sites it sends only the origin. So even a perfect referral tells you “chatgpt.com”, never the address of the conversation, and never its text.

What GA4 already does by default

Google’s default channel group page defines the AI Assistant channel this way:

What Google documents What it says
Description Users arriving from sources like ChatGPT, Gemini, Deepseek, Copilot or Grok
Exclusion Google’s AI Overviews and AI Mode are excluded
Rule Medium exactly matches “ai-assistant”
How the medium gets set Analytics sets medium “ai-assistant” and campaign “(ai-assistant)” if the referrer matches a list of AI Assistants

And what it doesn’t say:

Question Status on October 27, 2026
Which assistants are on the list Not documented. The source-category file linked from the page is dated February 2023 and has no assistant entries
When the channel started Not documented on the pages we read
What happens when an assistant visit also carries its own UTM tags, such as utm_source=chatgpt.com Not documented on the pages we read
Where AI Overviews and AI Mode visits go instead Not stated in the AI Assistant definition

The default channel is a reasonable first look. Its weakness is that you can’t inspect the list, so you can’t tell whether a small assistant is missing, or explain a sudden jump. If that matters to you, build your own group too.

Build a custom AI channel group

Google’s custom channel groups page walks through an “AI assistants” example. Here’s what it documents, in order. We haven’t verified these screens in a live property.

  1. Permissions. You need the Editor role or above on the property to create and edit channel groups.
  2. Where. In Admin, under Data display, open Channel groups. Google’s example creates a new group and a new channel named something like “AI assistants”.
  3. The condition. Add a condition that matches regex and enter a pattern for the assistant addresses you want to include. Google’s other examples on the same page use the Source dimension.
  4. Order. Reorder the list so the AI channel sits above Referral. Channels are checked in order, so a visit that matches Referral first never reaches your AI channel. You can also place it above other channels, such as Organic Search.
  5. Reports. Google says you can select the group as a primary or secondary dimension in the Traffic acquisition and User acquisition reports, and that custom channel groups apply retroactively.
  6. Upkeep. Google’s own note: update the regex when the assistants you want to measure change.

Two GA4 regex facts change everything about step 3. Google Analytics regex is full match by default: the pattern must match the whole value unless you add .*. And it’s case sensitive.

A starting pattern

This is our starting pattern for step 3. It lists exact hostnames and allows an optional www.:

(www\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|chat\.deepseek\.com|grok\.com)

The hostnames are assistant web addresses we chose, not a list Google or the assistants publish as referrers. Before you save it, open Traffic acquisition with Session source as the dimension, look at the source values your property actually records, and edit the list to match. Because utm_source=chatgpt.com sets the source to chatgpt.com, tagged visits match the same entry.

Test the regex before you trust it

Google’s example pattern is:

^.*ai|.*\.openai.*|.*chatgpt.*|.*gemini.*|.*gpt.*|.*copilot.*|.*perplexity.*|.*google.*bard.*|.*bard.*google.*|.*bard.*|.*.*gemini.*google.*$

It’s written to be generous, and that has a cost. We ran it and our starting pattern against 18 source values in Python, once with full matching (GA4’s default) and once with partial matching (what you get if you paste it into a tool that searches inside the value).

Source value Google example, full match Google example, partial match Our pattern, full match
chatgpt.com Match Match Match
chat.openai.com Match Match Match
perplexity.ai Match Match Match
claude.ai Match Match Match
gemini.google.com Match Match Match
copilot.microsoft.com Match Match Match
chat.deepseek.com Miss Miss Match
grok.com Miss Miss Match
jasper.ai False match False match No match
reviews-site.ai False match False match No match
gptzero.me False match False match No match
chatgpt-reviews.example.com False match False match No match
mail.google.com No match False match No match
gmail No match False match No match
dailymail.co.uk No match False match No match
google No match No match No match
(direct) No match No match No match
shop.app No match No match No match

What it shows:

  • The first piece, ^.*ai, is the problem. Under full matching it matches any source ending in “ai”, so every .ai website that links to you counts as an assistant. Under partial matching it matches any source containing “ai” anywhere, including Gmail.
  • Loose pieces catch lookalikes. .*gpt.* and .*chatgpt.* match any site with those letters in its name, including review and detector sites.
  • It misses two assistants Google’s own default channel names. DeepSeek and Grok aren’t in the pattern.

Exact hostnames trade the other way: they miss any assistant you didn’t list. That’s a cost you can see and fix in a minute, while false matches hide inside a total. Whatever you use, run this test with the source values from your own property before you trust the channel.

The attribution caveat checklist

This is the record to keep next to the channel. Fill it in once, date it, and put it wherever the number gets reported. The rows are our proposal, not a GA4 feature.

Check What to write down Why it matters
1. Which channel Default AI Assistant, your custom group, or both, and the date each was set up The two can disagree, and only one has a list you can read
2. The pattern The exact regex and the date you last tested it A pattern goes stale when assistants change addresses
3. Order The channel’s position, and that it sits above Referral Below Referral, it silently catches nothing
4. Retroactive or not Whether you compared periods before and after setup A retroactive group rewrites old reports; know which version you quoted
5. Missing referrers “Visits without a referrer or tag land in Direct and are not counted here” Apps, copied links and strict policies drop the referrer
6. Google’s own AI “AI Overviews and AI Mode are excluded from the default AI Assistant channel” A shopper who found you in AI Mode won’t appear here
7. Assisted orders “Orders where an assistant was used earlier and the shopper returned another way are not attributed here” A shopper who asked ChatGPT on Monday and typed your URL on Friday shows as Direct
8. The prompt “No report shows what the shopper asked” The referrer carries the assistant’s origin, not the conversation
9. The denominator Sessions, users, orders or revenue, and over which dates “AI traffic doubled” means little without it
10. What it isn’t “This counts visits, not visibility, recommendations or rank” An assistant can mention you without a click, or link you without recommending you

The one you’ll be tempted to break: never invent the prompt

Merchants want to know what people typed. One merchant on r/shopify put it plainly: orders were arriving from ChatGPT, and they wished there was a way to see what people typed to get the referral. Another said a customer mentioned finding the product through ChatGPT while Shopify showed the order as direct.

You can’t see the prompt, and it’s worth saying why. OpenAI says ChatGPT picks shopping results using the shopper’s query and context, such as Memory or Custom instructions. Even if you knew the words, you wouldn’t know the context. So don’t write “shoppers are asking ChatGPT for X” in a report because a page got AI referrals. Write what you know:

You know You don’t know
The landing page, and what it says What the shopper asked
The assistant’s site, from the referrer or tag What the assistant said about you before the click
What the visitor did next, and whether they ordered Whether you were recommended, listed or just cited
The date and device type Whether the same shopper used an assistant before an unattributed order

The landing page is the closest thing you have to the question. It’s the page the assistant linked, so check that its facts are current: price, sizes, limits, what’s in the box. The visitor arrives expecting whatever they were just told.

Read the number without overreading it

Once the channel is running, three habits keep it honest.

Watch landing pages, not just totals. A product page that suddenly gets assistant visits tells you which facts are being read. Pair that with a product-level visibility plan, which checks those products by hand under recorded conditions.

Keep commercial results in their own column. Sessions and orders from this channel belong next to, not inside, any record of what assistants returned. A SKU dashboard shows one way to keep visibility, factual fidelity and your analytics apart.

Don’t turn it into a score. It’s tempting to divide AI sessions by total sessions and call it “AI visibility.” That ratio mixes what assistants show with what shoppers click and what browsers pass on. We retired a score of our own for mixing things it couldn’t separate; the audit explains how to check any score before you quote it.

How we checked

  • Documentation. On October 27, 2026 we re-read Google Analytics Help pages 9756891 (default channel group), 13051316 (custom channel groups) and 1034324 (regular expressions), and the source-category file linked from the default page. We read OpenAI’s Shopping with ChatGPT Search and Publishers and Developers FAQ pages, and MDN’s Referrer-Policy page.
  • The FAQ. The OpenAI FAQ URL returned the Publishers and Developers FAQ on one fetch and a different help article on another the same day. We quote the FAQ text we retrieved and recommend you confirm the tag in your own landing-page URLs.
  • The regex test. We copied Google’s example pattern verbatim and tested it and our starting pattern in Python against 18 source values we wrote: full matching with re.fullmatch, and partial matching with re.search, both case sensitive as GA4 is. Python’s regex engine is not identical to GA4’s, though none of these patterns uses a feature where they differ, to our knowledge. The DeepSeek and Grok hostnames are assumptions, not documented referrers.
  • What we didn’t do. We didn’t configure or inspect a GA4 property, observe a live assistant referral, or measure how often referrers go missing.

Your next step

Open Traffic acquisition in GA4, set the dimension to Session source, and filter for the hostnames in our starting pattern. Write down which ones your property actually records. Then copy the caveat checklist above into the place where you report the number, fill in rows 1 to 4, and date it.