Research

ChatGPT's API Tags Every Link It Cites With utm_source=openai: 35,357 of 35,357. Claude, Gemini and Perplexity Almost Never Tag Theirs

All 35,357 URLs the ChatGPT API cited carried utm_source=openai; Claude, Gemini and Perplexity tagged 0.003 to 0.13%. What it means for analytics.

Published Machine Relations Research
Index Analysis
TopicsCitation BehaviorUrl StructureAnalytics AttributionMachine Relations Index

Every link the ChatGPT API cited carried a tracking tag. In the Machine Relations Index answer ledger, 35,357 of 35,357 ChatGPT cited-URL events (100 percent) ended in utm_source=openai. The tag was on every one of 7,174 answer runs, on 9,515 root domains, in every month from July to November 2026, on both ChatGPT models the Index calls, and on all six question shapes. The value was always openai. It was never chatgpt.com.

The other engines almost never tag. Of 33,192 Claude cited URLs, one carried any tracking-style parameter (0.003 percent). Of 105,295 Perplexity URLs, 45 did (0.04 percent). Of 17,416 Gemini URLs, 23 did (0.13 percent). Google AI Mode is the exception at 5.5 percent, and nearly all of that is one Google shopping parameter, srsltid, not a source tag. Across all four, utm_source=openai appeared zero times.

This is a finding about the API route the Index collects through, not about the ChatGPT app. The ledger does not test what the app appends, and no visit was measured. What it does show is that a cited address from this route is a different string from the address the publisher wrote, and that analytics and link-counting rules built on the bare address or on a chatgpt.com source will not match it.

What was counted #

  • Population. Successful runs in the Index's "mri_v2" panel, 2026-07-06 to 2026-11-07, on its 1,008 buying questions (168 in each of six question shapes). Runs flagged as naming a brand in the prompt are excluded. The ledger export is dated 2026-11-07 08:10 UTC. It is the same population as the URL slug study, the year-in-the-URL study and the site-sections study.
  • Engines and routes. ChatGPT, Claude, Gemini, Google AI Mode and Perplexity; Google AI Overviews are left out. The ChatGPT rows come from two OpenAI API models, gpt-4.1-mini-2025-04-14 (28,162 events) and gpt-4o-mini-search-preview-2025-03-11 (7,195). Claude is Haiku 4.5 with web search, Perplexity is Sonar, Gemini is the Flash family, and Google AI Mode is recorded without a model name. These are API answers. They are not the consumer apps.
  • Unit. One cited URL in one answer run, counted once however often the run repeated it: 197,384 events from 23,183 runs and 29,282 root domains.
  • Addresses as returned. The ledger stores each address as the engine returned it. Its redirect-resolution flag is false on all 197,384 events, so no address was rewritten by a resolving step before storage.
  • A tag. utm_source=openai anywhere in the query string. A tracking-style parameter is any utm_* parameter, or srsltid, gclid, fbclid, msclkid, ref, ref_src, source, mc_cid, mc_eid, cmpid, ved, usg, campaign or cid.
  • No page was fetched to build the counts. The tag is a fact about the address the engine returned.

Cited-URL events carrying a tracking-style parameter, by engine (events matching, out of events):

Engine Cited URLs utm_source=openai Any utm_* Any tracking-style parameter
ChatGPT (API) 35,357 35,357 (100%) 35,357 35,357 (100%)
Google AI Mode 6,124 0 3 335 (5.47%)
Gemini 17,416 0 2 23 (0.13%)
Perplexity 105,295 0 4 45 (0.04%)
Claude 33,192 0 0 1 (0.003%)

ChatGPT is not a high rate; it is the whole population. With 35,357 events and no exception, the 95 percent lower bound on the share (the rule of three) is above 99.99 percent. The tag does not depend on the question: every one of the six shapes is 100 percent tagged (best X 9,245 events, top lists 8,564, problem first 5,108, how to choose 4,700, is it worth it 4,092, X vs Y 3,648). It does not depend on the month (July 4,737 events, August 3,460, September 5,568, October 18,349, November to the 7th 3,243) or the model (28,162 and 7,195).

On Google AI Mode, 332 of the 335 events with a parameter are srsltid on 161 domains. That is a Google shopping identifier, not a source tag. Excluding it, AI Mode carries three utm_* events in 6,124.

The three other API routes add almost nothing. Most of what they carry is a plain ref or source parameter: 27 of Perplexity's 45 are ref and 14 of Gemini's 23 are source. The ledger cannot show whether the engine or the publisher put them there.

What the tag looks like #

  • Only query. On 33,973 ChatGPT events (96.1 percent) the whole query string is ?utm_source=openai.
  • After the page's own parameters. On 1,384 events (3.9 percent, 282 domains) the address already had a query string and the tag follows it with &. In none of the 35,357 events does utm_source appear twice.
  • After the publisher's own UTM. 54 events carry the publisher's own utm_medium, utm_campaign, utm_content or utm_term as well (for example ?utm_medium=organic&utm_campaign=gmb&utm_content=scottsdale&utm_source=openai, where the campaign value gmb suggests a Google Business Profile link). The ledger cannot show whether the engine replaced an original utm_source or added one to a link that had none.
  • Other identifiers. 133 ChatGPT events also carry srsltid and 13 a ref, source, cid or similar parameter, kept from the source address.
  • No fragment. None of the 35,357 addresses carries a # fragment.

Everyone else's query strings are content, not tracking #

Query strings on the other four engines are mostly part of the page. Of the 4,272 events with a query string on Claude, Gemini, Perplexity and AI Mode combined, 2,297 (54 percent) are youtube.com/watch?v= links (Claude 1, Gemini 550, AI Mode 400, Perplexity 1,346). Without YouTube the share of cited URLs with any query string is 0.37 percent on Claude, 1.11 percent on Gemini, 1.19 percent on Perplexity and 6.61 percent on Google AI Mode. On ChatGPT it is 100 percent, because of the tag.

What this changes #

  • Analytics rules need the tag as well as the domain. A traffic-source rule written as chatgpt.com does not match a visit whose link said utm_source=openai. If you build a channel rule for AI referrals, add openai as a possible utm_source and look at your own reports for the value, as with any other source. The ledger measures what the API returned in a link, not what a visitor's browser sent, so the value your analytics receives is for you to check.
  • Do not read the absence of a tag as the absence of AI traffic. Four of five routes in this ledger add no tag. A tag-only count sees one engine.
  • Dedupe links before counting them. ChatGPT cited 15,137 distinct addresses. After removing the tag, 2,693 of them (17.8 percent) were also cited by at least one other engine as the same address. Matching raw strings finds none of those 2,693, because every ChatGPT address has the suffix. Any citation counter that keeps query strings splits a page into two.
  • Check that the tagged address resolves. On 2026-11-08 the tagged form of this site's pages and of an authoritytech.io article returned a 200 page whose canonical link names the bare address. A page that errors on unknown parameters, or whose canonical keeps the query string, is exposed on the one route where every link is tagged.
  • Do not read openai as ChatGPT's consumer traffic. The ledger does not hold the app's behavior. The ledger cannot say which products or tools use the same API behavior.

What this page does not show #

  • The ChatGPT app. The Index collects through the API. What the consumer app appends, and when, is a separate measurement.
  • Visits or clicks. Nothing here counts a person following a link, or what an analytics tool then records.
  • Why. The tag is the API's behavior. The page does not show OpenAI's reason or whether it is documented for every tool.
  • Other engines' apps. A route that adds no tag in the API may add one in its product.
  • Stability. All five months show the same behavior, but a provider can change it at any time. Re-run before building on it.
  • Google AI Overviews. Not included.
  • Preference or citation causes. A tagged or untagged address says nothing about why a page was cited.

Method note #

Source: the Index answer ledger's citation-events table, daily export of 2026-11-07 08:10 UTC, read with DuckDB, joined to the run table for the model name. Filters: panel "mri_v2", runs not flagged as brand-prompted, a cited URL beginning with http, engines ChatGPT, Claude, Gemini, Google AI Mode and Perplexity, run dates 2026-07-06 to 2026-11-07. Unit: distinct (answer run, cited URL) pairs on the cited URL as recorded (197,384). The tag is tested with a regular expression for utm_source=openai bounded by ? or & before and &, # or the end after. Tracking-style parameters are tested by name in the query string. Counts of duplicated utm_source and of fragments use the recorded string. The overlap count removes a trailing utm_source=openai from each ChatGPT address and joins on the exact remaining string to every other engine's recorded address; raw-string matching joins on the recorded string. Shares are pooled event counts; no question-level interval is given because the ChatGPT cell has no exceptions and the other cells are counts of single events.

Frequently asked questions #

In the Machine Relations Index, which collects ChatGPT answers through the OpenAI API, it did on every one: 35,357 of 35,357 cited URLs, across 7,174 runs and 9,515 root domains from July to November 2026. The Index does not test the ChatGPT app.

Is it utm_source=openai or utm_source=chatgpt.com? #

The API route in this ledger always used utm_source=openai; it never used chatgpt.com. A guide that lists utm_source=chatgpt.com describes something this ledger did not observe. Check the value your own analytics reports.

Almost never in this ledger. Any UTM parameter appeared on 0 of 33,192 Claude URLs, 2 of 17,416 Gemini URLs, 4 of 105,295 Perplexity URLs and 3 of 6,124 Google AI Mode URLs. The ledger cannot show whether the engine or the publisher added them.

Why do my ChatGPT-cited pages show up as two addresses? #

Because the cited address ends in ?utm_source=openai. A page cited bare by Perplexity and tagged by ChatGPT is two strings. In this ledger 2,693 of 15,137 ChatGPT addresses were also cited bare by another engine, and none matched as raw strings.