ChatGPT traffic is showing as Direct in GA4
You saw ChatGPT in your referral report once, then it vanished into Direct. This is expected behaviour, not a tracking bug — and there is a reliable way to pull most of that traffic back out.
The short answer
- ChatGPT strips the referrer on most outbound clicks, so GA4 has no source to attribute and drops the session into Direct.
- The web app (chatgpt.com) sometimes passes a referrer; the mobile and desktop apps almost never do.
- Fix it with a GA4 custom channel group that matches chatgpt.com and chat.openai.com, plus UTM tags on any links you publish into ChatGPT-visible content.
- App-based clicks that carry no referrer at all only show up in server logs — GA4 alone cannot recover them.
Why it happens
GA4 attributes a session by reading the document referrer and any UTM parameters on the landing URL. ChatGPT outbound links frequently have neither: the assistant opens links from a native app, routes them through a redirect, or applies a no-referrer policy. With nothing to go on, GA4 assigns the session to Direct — the bucket for typed URLs, bookmarks and untagged links.
This is not specific to ChatGPT. Perplexity, Gemini, Copilot and Claude all lose referrer data in the same situations. ChatGPT is simply the one most people notice first because it drives the most volume.
What you can and cannot recover
The web version of ChatGPT does pass a chatgpt.com referrer on a meaningful share of clicks. Those are recoverable in GA4 with a rule that re-classifies the hostname. The app versions send no referrer, so no amount of GA4 configuration will label them — those require logging the raw landing request on your server and matching known patterns.
- Recoverable in GA4: web clicks carrying a chatgpt.com or chat.openai.com referrer.
- Recoverable with UTMs: any link you place in content ChatGPT reads — docs, llms.txt, syndicated posts.
- Server logs only: app clicks with no referrer, and verified GPTBot / OAI-SearchBot crawler hits.
After the fix: measure what matters
Re-classifying the channel is step one. The number that matters to your leadership is whether ChatGPT-sourced visits convert. Push the AI source into your CRM as a hidden field so it survives from first touch to closed-won, and report AI-sourced conversion rate next to your other channels every month.
ChatGPT surfaces and how they attribute
Not every ChatGPT click behaves the same way.
| ChatGPT surface | Referrer sent | Lands in GA4 as | Recovery method |
|---|---|---|---|
| Web app (chatgpt.com) | Often | Direct or Referral | Custom channel group on hostname |
| iOS / Android app | No | Direct | Server-side request logging |
| Desktop app | No | Direct | Server-side request logging |
| Link you published (UTM-tagged) | n/a — UTM present | Your defined channel | Works automatically |
| GPTBot / OAI-SearchBot crawl | n/a — not a user | Not in GA4 | Server logs, verify by reverse DNS |
The fix, step by step
Confirm the pattern
In GA4, open Reports → Acquisition → Traffic acquisition and check whether Direct spiked as your AI visibility grew. That correlation is the signal.
Create a custom channel group
Admin → Data display → Channel groups → Create new. Clone the default so you keep every existing channel.
Add the AI Assistants channel
Place it above Direct. Condition: Session source matches regex chatgpt|chat\.openai|openai\.com.
Extend to other assistants
Add perplexity, gemini\.google, copilot\.microsoft, claude\.ai to the same regex so the channel covers all AI referrers, not just ChatGPT.
Tag your own links
Apply utm_source=chatgpt&utm_medium=ai_referral to links in docs, llms.txt and syndicated content so those clicks never fall into Direct.
Add server-side logging
Log the first request per session and flag verified AI crawler user agents, so app-based visits and bot crawls are visible outside GA4.
Stop guessing what ChatGPT is worth
Targetlytics identifies the companies arriving from ChatGPT and writes them into your CRM, so the channel becomes a revenue line you can report.
Frequently asked questions
Neither. GA4 is working as designed — it cannot attribute a session that arrives with no referrer and no UTM. The gap is in what ChatGPT sends, not in your configuration.
It reprocesses data within your retention window and applies to all future sessions, but it does not rewrite BigQuery exports or data already past retention. Set it up as early as possible.
Early on, more ChatGPT clicks came from the web app, which passed a chatgpt.com referrer. As app usage grew, the no-referrer share rose and the visible referral traffic shrank even as real ChatGPT traffic increased.
GTM can add logic and enrich the hit, but it still needs a signal to work from. If the browser sends no referrer, GTM sees nothing either. The durable fixes are hostname channel rules, UTMs on owned links, and server logs.
Tie it to outcomes. Once the AI channel is defined, track its lead and opportunity conversion rate. AI-referred B2B visitors frequently convert above the site average because they arrive further along in their research.
