If you want to know how to track ChatGPT referrals, the short answer is that you capture the referrer at first touch and give AI assistants their own channel. The longer answer is that most analytics setups are already receiving this traffic and filing it in the wrong drawer.
We found ours by accident. LocalLynx, a lead-data product we run ourselves, had a quiet stretch and then started producing signup notifications from real companies. The first reaction was that they had to be fake.
The short version
- Six signups carried utm_source=chatgpt.com, and our own channel classifier had filed every one of them under social.
- The referrer ChatGPT sends is the bare origin, with no path and no query string. You cannot recover the question that produced the recommendation.
- The wider problem was that referrer and landing page were captured nowhere: 30 of 36 users had no usable attribution at all.
- The fix has three parts: persist first touch, give AI assistants their own channel label, and ask the user for the part the referrer will never tell you.
The signups were real, and the attribution was empty
They were real. The domains resolved and they ran business mail. One had arrived on a specific industry page, through ordinary search, and clicked straight through to run a query on it, which is an intent-matched visitor rather than a bot wave.
So the next question was where they came from, and that is where the data ran out. The product had attribution columns for paid clicks, which meant Google Ads was measured precisely and everyone else was measured not at all.
Querying what was actually stored: only 5 of 36 users had anything usable. Three had a recorded signup intent, six had a landing path, and 30 of 36 were null because the attribution columns had been added after most of those people signed up.
Watch out
Six rows said chatgpt.com, and the classifier called it social
The signups that did carry a source were carrying utm_source=chatgpt.com. Six of them, with a seventh arriving during the same session, and three more that had come in through industry landing pages.
The channel classifier was working correctly and getting the answer wrong. It had been written with paid, organic, social, referral and direct as the options, so chatgpt.com fell through to social, the same bucket as a link someone posts on LinkedIn.
An assistant recommending your product to someone who described their problem is a different signal from a backlink. By volume it was already the second-largest source, and it was invisible because it had no name.
Signups carrying an AI-assistant source, by month
Small numbers, and that is the point. The record shows none at all in July, and the month-over-month shape is only readable because the source string survived on the rest.
Folded into social, it was four months of a channel arriving with nobody looking at it.
What the referrer gives you, and what it never will
The referrer ChatGPT sends is the bare origin. Not a conversation link, not a truncated query, just the domain with the path and query string removed before the request leaves.
That is deliberate on OpenAI's side and nothing on your side changes it. Every referral, from every user, will look identical forever, which means the channel is countable and the intent is not.
| Paid click | AI assistant referral | |
|---|---|---|
| Channel identifiable | Yes, via gclid or UTM | Yes, via the referrer origin |
| Query or prompt visible | Yes, the keyword is in the click data | No, stripped before the request leaves |
| Landing page recoverable | Yes | Only if you capture it yourself |
| Cost per acquisition | Known to the cent | Zero, and therefore unbudgeted |
Both of the AI-sourced signups that did have landing data had arrived on the homepage rather than on a deep industry page. The model was recommending the product as a thing, not citing a particular page, which is a different SEO problem from the one most teams are working on.
How to track ChatGPT referrals: the fix, in three parts
First, capture first touch and store it. The referrer and the landing path now get written at signup along with a channel label, so the classification happens once, at the moment the only evidence exists, instead of being reconstructed later from nothing.
Second, give AI assistants their own channel. Not a sub-type of social, a peer of paid and organic, because the acquisition behaviour behind it is different and you will want to report on it separately.
Third, ask. The post-signup survey offered Google, LinkedIn, Reddit and podcast as options and no AI option at all, which means all seven of those people had to choose "Other" or skip the question entirely.
The answer is stored as a second, self-reported source next to the classified one, never overwriting it. The classifier keeps the countable channel, the survey supplies the wording, and the two disagreeing is itself a useful signal about where the classifier is still wrong.
Why this kind of fix cannot be backfilled
The first-touch write is gated on the account being less than 15 minutes old, which is the correct design: you do not want a later session overwriting the original source. The consequence is that every signup between the moment you notice the gap and the moment the change ships permanently loses its first-touch data.
That gating also explains the 30 nulls. Those accounts existed before the columns did, and no amount of later analysis recovers a referrer that was never received. Attribution is one of the few things in a data pipeline that is genuinely write-once.
The survey option is worth building carefully for the same reason. Ours now stores both the chosen option and the user's own description of what they asked, in the form "ChatGPT or another AI assistant: their words". The channel stays countable and you get the closest thing to the prompt you are ever going to see.
The honest limit
Seven signups is not a trend you should reorganise a marketing budget around. It is a signal that a channel exists and is not being measured, which is a different and much cheaper claim.
The survey answer is also self-reported and optional, so it will always undercount. What it gives you is texture rather than a number: the phrasing people use when they describe their problem to an assistant is the phrasing your pages should already contain.
One more thing turned up while looking. The machine-readable copy of the site was quoting prices that had changed, and the structured data carried a review rating with no reviews behind it. If a model is reading your site to recommend it, an inaccurate machine-readable version is worse than not having one.
Key takeaways
- Check your channel classifier for chatgpt.com and similar assistant domains before assuming you have no AI referral traffic.
- AI assistants need their own channel label, not a folder inside social, because the acquisition behaviour behind them is different.
- The referrer from an AI assistant is a bare origin by design, so the channel is countable and the prompt is not recoverable from it.
- Capture the referrer and landing path at first touch: attribution is write-once and cannot be reconstructed after the fact.
- Add an AI option to your how-did-you-hear survey, and store the user's own wording alongside it.
For the wider version of this, inbound and outbound are less a choice between channels than a question about which ones you can measure, and asking an AI for its denominator is the same discipline applied to the numbers a model hands you. Finding the places where your operations already produce data nobody reads is usually the first week of work when we start inside a company.
Common questions
How do you track ChatGPT referrals?
You capture the referrer at first touch and give AI assistants their own channel label. ChatGPT sends a bare origin, https://chatgpt.com/, with no path and no query string, so the referrer tells you the channel and nothing else.
Can you see what someone asked ChatGPT before they clicked through?
No. OpenAI strips the path and query string from the referrer deliberately, and no configuration on your side changes that. The only way to learn the question is to ask the user after they arrive.
Why do AI referrals get misfiled in analytics?
Most channel classifiers were written before assistants sent traffic, so chatgpt.com falls through to social or referral. An assistant recommending you is a different signal from a backlink and needs its own bucket.