Magnifying glass over a chat bubble with a broken chain link

ChatGPT's UTM Tags Disappeared With GPT-6

With GPT-6, utm_source=chatgpt.com stopped arriving, so ChatGPT clicks land in Direct. The data, and a 4-step protocol to recover the signal.

By Dalin de Graff

If your GA4 AI Assistant channel fell off a cliff this week, I have bad news and worse news. The bad news: ChatGPT stopped sending the tag that let you measure its traffic. The worse news: most people will read their dashboard this week and conclude ChatGPT stopped sending them traffic.

It did not. It stopped signing the receipts.

What changed with GPT-6

In June, OpenAI started appending ?utm_source=chatgpt.com to the links in ChatGPT's answers. That tag was the cleanest way any of us could see ChatGPT traffic in GA4. OpenAI documented it in its publisher FAQ, and within weeks every "how to track AI traffic" guide, including the good ones, was built on it.

Then GPT-6 rolled out. Paid tiers got it on October 7, Free and Go on October 8, and sometime in the days after, the tags started disappearing. Cedric Huesler of Adobe found the mechanism. GPT-6 opens links with window.open(url, "_blank", "noopener,noreferrer"). That drops the ?utm_source=chatgpt.com tag and kills the referrer header, leaving GA4 nothing to attach the session to, so it files the visit under Direct.

Search Engine Roundtable reported it this week after Huesler posted the finding on LinkedIn, and today's search forum recap carries it alongside the GPT-6 rollout coverage. OpenAI has not confirmed whether this is deliberate or a side effect of the new link-opening behavior. Whether it is deliberate or a side effect is OpenAI's problem. The signal is gone either way.

The numbers prove the signal moved

Huesler did not just notice the tag was gone. He ran the numbers across roughly 500 Adobe pages where ChatGPT drove 5% or more of visits, comparing October 9 to 13 against the week before.

ChatGPT-attributed visits: down 31,000 a day. Direct: up 26,000 a day, on those same pages. Organic search moved down 7%, but it moved down 7% everywhere, so that is background noise, not the story.

Direct rose on 2 in 3 of the pages that lost ChatGPT traffic. The week before, that relationship was a coin flip. Search rose on those same pages only 45% of the time. If ChatGPT had actually stopped sending people, the lost visits would have scattered across channels or vanished. Instead they moved, most of them, into Direct.

And the new "direct" visitors behave like ChatGPT visitors. On mobile, the share of Direct visitors seeing the consent banner, which means new to the site, jumped from 36% to 44%. For known ChatGPT visitors it sits at 55%. These are strangers arriving from somewhere the browser refused to name.

Other practitioners are seeing the same cliff. Sébastien Billard reported today a sharp drop in ChatGPT human traffic since October 9, plus a drop in ChatGPT-User bot traffic, while OAI-SearchBot fetching actually increased since October 7. The combination tells its own story. OpenAI is crawling more and sending a measurable tag less.

Analytics chart showing ChatGPT-attributed traffic falling and Direct traffic rising after GPT-6 removed UTM tags

That tag was polluting your data in the other direction before it disappeared

On October 1, Aashish Kasma showed that Google's top organic result for "disney login" pointed to disneyplus.com/identity/login?utm_source=chatgpt.com. Nobody had clicked anything in ChatGPT. The tag travels inside the URL, so anyone who copied a ChatGPT answer link anywhere, including into a page Google later crawled, carried the tag with it. Google indexed the tagged URLs. Disney's analytics was being told ChatGPT sent visitors who never touched ChatGPT.

So in the span of two weeks, the same parameter went from corrupting your data coming in to corrupting your data going out. Now it is gone. If your whole AI measurement stack was one UTM tag, you never had a measurement stack. You had a rented one.

Tracking tags peeling off a link ribbon

The 4-step protocol to recover the signal

I run GEO measurement for clients at First Rank, and the campaign that gained 98% more LLM search traffic in 30 days taught me the answer is a stack where every layer survives the others breaking. The same thinking applies to dalindegraff.com, where I publish these breakdowns.

Step 1: Run the Adobe signature check on your own site. Take the pages ChatGPT has been citing, compare October 9 to 13 against the prior week, and look for the swap: ChatGPT source down, Direct up, on the same landing pages. If you see it, you have a measurement break, and you should tell your client that before anyone rewrites a content strategy over a dashboard artifact. Keep the window tight. Organic search moved for everyone this month, so a loose window will smear the signal.

Step 2: Fix the plumbing that still works. GA4's default AI Assistant channel, added in May, only matches referrers against Google's own list, so keep your custom channel regex with an anchored host list for the engines that still pass a referrer. Gemini is still tagging its referral links with UTMs, which Google documented in late September, so your Gemini numbers stay honest while ChatGPT's do not. Treat every engine's tagging as temporary now.

Step 3: Add the signal that survives tag death. Self-reported attribution. A "how did you hear about us" field with AI options catches the visits UTMs never could, including unlinked mentions. I have written before that AI visibility scores lie to you precisely because one-shot dashboards miss what happens after the click. Reconcile the CRM's AI-source contacts against GA4 monthly. The gap between them is the traffic your tags cannot see.

Step 4: Measure the answer, not the click. Citations that earn no click never appeared in GA4 in the first place. The fix is the panel I run every week, a fixed set of money questions run across the engines, scored for recurrence. If your citation presence holds steady while your GA4 channel drops, your traffic is fine and your dashboard is the casualty. I break down the per-engine method here. The engines disagree with each other constantly, which is exactly why the panel has to be fixed. You cannot detect a drift with a moving ruler.

The lesson is about rented measurement

GA4's AI Assistant channel exists because Google decided, in May, to bless a list of referrers. ChatGPT's UTM tag existed because OpenAI decided, in June, to append it. Gemini's tags exist because Google decided, in September, to add them. Every layer of your AI measurement is a platform feature someone else can pull in a Tuesday deploy.

Placement and measurement are different games now. Citation means getting named in the answer. Clicks are a platform permission. The engine decides whether to send a visitor and whether you see them come. When the GPT-6 rollout changed how links open, the placement did not change. The permission did.

One UTM tag is a dependency. Measurement is a signature check, a fixed prompt panel, self-reported attribution, and a regex that assumes every tag is temporary. The next time a platform quietly rewrites how its links behave, and it will, you will be the person in the room who says "the signal moved" instead of the person who says "the traffic died."

When did you last check whether your AI traffic number measures AI traffic, or just the tags the platforms felt like leaving on this week?


Dalin de Graff

About the author

Dalin de Graff is an SEO and GEO Strategist at First Rank, where he built the agency's GEO practice. He writes about search, AI, and marketing at dalindegraff.com.