Skip to content
All posts
SEOAnalyticsAI search

Does AI search send traffic? How to measure it

ChatGPT, Perplexity and Gemini referrals hide inside Direct and unclassified referrers. How to isolate the channel, why it undercounts, and what makes a page quotable.

DA Orbit

Does AI search send traffic? How to measure it

Somewhere in the last two years a share of the questions that used to start on Google started being answered directly by an assistant. The answer sometimes cites a source, the visitor sometimes clicks it, and that click lands in your analytics as an ordinary referral from a hostname you may never have thought to look for.

The interesting part is not that the traffic exists. It is that it behaves differently from search traffic, arrives in volumes small enough to hide inside "Direct", and is invisible in the tool most people use to measure acquisition unless they go looking for it deliberately.

💡

referrals crawls

Why it does not show up

Three mechanisms hide it, and they compound.

The first is referrer stripping. Assistants that render answers in a native app, or that route clicks through a redirect, often arrive with no referrer at all. That visit is indistinguishable from someone typing your URL, and lands in Direct.

The second is volume. AI referrals are still a small fraction of most sites' acquisition. A channel worth 0.8% of sessions does not appear in a top-ten referrer list, which is all most dashboards show by default.

The third is naming. There is no "AI" channel in any default channel grouping. The hostnames land as unclassified referrals, scattered across half a dozen rows that each look too small to matter, and nobody sums them.

Measuring the referrals

The mechanical part is easy: group the known assistant hostnames into one bucket and chart it as a channel. The list changes, so keep it somewhere you can edit rather than compiled into a report.

channels.js


// The referrer hostnames AI assistants send today.
// Not exhaustive, and it changes — treat it as a starting list.
const AI_SOURCES = [
  "chatgpt.com",
  "chat.openai.com",
  "perplexity.ai",
  "claude.ai",
  "copilot.microsoft.com",
  "gemini.google.com",
];

function isAiReferrer(referrer) {
  if (!referrer) return false;
  try {
    return AI_SOURCES.includes(new URL(referrer).hostname);
  } catch {
    return false;
  }
}

Two things are worth knowing before you read the resulting number.

  • It undercounts, structurally. Because of referrer stripping, the true figure is higher than what you can attribute. Read the trend, not the absolute value.
  • The sessions look unusually good. Someone who arrives from a cited answer has typically already read a summary of what you do. Higher pages per session and lower bounce than organic search is the normal pattern, and it is the reason a small channel can still be worth attention.

Checking what is hiding in Direct

You cannot recover a stripped referrer, but you can test whether Direct is growing for reasons unrelated to brand. Two signals help. If Direct rises while brand-name search impressions stay flat, something else is sending those people. And if Direct traffic concentrates on deep pages — a specific comparison, one documentation section — rather than the homepage, it is not people typing your domain from memory.

Neither is proof. Together they are decent evidence, and it is the best available given the constraint.

Tag the links you control

Assistants quote from pages they can read. Where those pages are yours — documentation, a changelog, support answers, a comparison page — the links inside them are yours to tag. When the model reproduces the link, the tag survives.

Internal link

<!-- Links you control inside your own docs, changelog or
     support answers. When a model quotes the page, the tag rides along. -->
https://example.com/pricing?utm_source=docs&utm_medium=assistant

This only covers a slice of the surface, and it is the slice you can actually attribute cleanly. Worth doing on the pages that get cited most.

Crawlers are a separate decision

The agents that fetch your pages to answer a live question are not the same as the ones that fetch pages to train a model, and you can allow one while refusing the other. Conflating them is the most common mistake in this area — blocking everything with an AI-sounding name also blocks the crawler that would have cited you.

robots.txt

# Answer engines crawl with their own agents, and they are
# separate from the agents that train models. Allowing one does not
# require allowing the other.

# Cites you in answers, sends referral traffic
User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

# Training crawler — a different decision entirely
User-agent: GPTBot
Disallow: /

Decide deliberately. Refusing the search agents removes you from answers in a channel that is growing; refusing the training agents does not.

What makes a page quotable

Ranking in an answer is not the same problem as ranking in a results page, and the practical difference is structural. A model composing an answer extracts claims. Pages that state a claim plainly, near a heading that matches the question, get extracted more readily than pages that build to a point over eight paragraphs.

  • Answer in the first sentence under the heading. The rest of the section can elaborate. The extractable claim should come first.
  • Use headings shaped like questions. They match the query directly and mark where the answer starts.
  • Keep facts near their qualifiers. A number three paragraphs from the condition it depends on gets quoted without the condition.
  • Date things. Models weight recency, and an undated page about a subject that changes yearly reads as unreliable.

None of this conflicts with writing well for people. It mostly rewards being direct, which was already good advice.

How much should you care

For most sites today: enough to measure, not enough to restructure around. The channel is small, growing, and converts well relative to its size. That combination argues for a chart you glance at monthly rather than a strategy.

The reason to start now is that the baseline is only measurable going forward. If this becomes a meaningful share of acquisition in eighteen months, the useful thing to have is eighteen months of data showing when it started.

💡

Quantalog

SEO audits

Try Quantalog on your own site

One script tag, no cookies, live numbers in about three seconds. Free forever on the Hobby plan.

Start free

Keep reading