ChatGPT Ads UTM Tracking: 7 Setups and Mistakes to Get Right

Tag ChatGPT ads so GA4 separates paid clicks from organic ChatGPT referrals. Covers source and medium values, OpenAI macros, redirects and reconciliation.

Browser showing ChatGPT with a UTM-tagged URL next to a GA4 traffic acquisition report and a checklist of UTM setup, campaign structure, common mistakes and GA4 tracking

Dashboard figures and interface elements are illustrative examples, not measured results.

Table of Contents
  1. Recommended ChatGPT ads UTM template
  2. 1. Don't reuse chatgpt.com as the paid source
  3. 2. Use a paid medium, not ai-assistant or cpm
  4. 3. Keep channel trigger words out of campaign names
  5. 4. Use only the macros OpenAI documents
  6. 5. Know which level's parameters win
  7. 6. Protect UTMs and oppref through redirects
  8. 7. Don't expect Ads Manager and GA4 to match
  9. QA a ChatGPT ad click before you scale spend
  10. Quick answers

Tag ChatGPT ad clicks with a source value that organic ChatGPT traffic does not use, a paid medium such as cpc, and OpenAI's ID macros in the Landing page query parameters field. Then confirm a test click arrives in GA4 with those values intact. Without this, paid ChatGPT clicks can blend into the organic ChatGPT referrals you already receive.

OpenAI says advertisers can add static UTM parameters to landing page URLs and that those parameters persist on ad clicks (Ads in ChatGPT: The Basics). OpenAI handles the ad side. Your naming choices decide whether the clicks are reported usefully.

Documentation checked: October 14, 2026. ChatGPT Ads and Ads Manager are labeled beta by OpenAI, so field names and features may change. Examples below are illustrative, not results from a live account.

utm_source=chatgpt&utm_medium=cpc&utm_campaign=fall_demo_us&utm_id={campaign_id}&utm_content={ad_id}
ParameterSuggested valueWhy
utm_sourcechatgptDistinct from the chatgpt.com value ChatGPT adds to organic citation links
utm_mediumcpcMatches GA4's paid medium pattern
utm_campaignReadable static name, e.g. fall_demo_usOpenAI's documented macros are IDs, not names
utm_id{campaign_id}Ties the session to the Ads Manager campaign
utm_content{ad_id}Separates ads within a campaign

This is our recommendation, not an OpenAI default. If your organization already has a paid-media convention, keep it and adapt only the source value. Use the UTMCraft builder to generate the static parts consistently.

1. Don't reuse chatgpt.com as the paid source

OpenAI's publisher FAQ states: "ChatGPT automatically includes the UTM parameter utm_source=chatgpt.com in referral URLs, enabling clear tracking and analysis of inbound traffic from ChatGPT search results" (archived copy, October 4, 2026).

That means chatgpt.com is likely to appear as a session source in your GA4 property already. If you also use utm_source=chatgpt.com for ads, paid and organic visits share one source value. Only the medium would separate them, and organic visits from ChatGPT may arrive with a missing or different medium. Every source-based filter, custom channel rule and dashboard would then need extra conditions.

Our recommendation: use utm_source=chatgpt (or chatgpt_ads, if your team prefers explicit names) for ads. Organic ChatGPT traffic keeps its own value, and the existing AI assistant traffic guide covers that side. Pick one spelling and document it in your UTM naming convention. GA4 values are case sensitive, so ChatGPT and chatgpt will report as separate sources (Google).

2. Use a paid medium, not ai-assistant or cpm

GA4's default channel group rules decide where a session lands, so the medium matters more than it seems (Google's channel rules):

  • ai-assistant is the documented medium for the AI Assistant channel. Tagging ads with it would mix paid clicks into the channel meant for organic assistant referrals.
  • cpm appears in Google's list of Display medium values. Tagging Views (impression-billed) campaigns cpm and Clicks campaigns cpc can split one platform across two channels. The medium should describe the channel, not the billing model.
  • No medium at all leaves GA4 without a channel signal. Visits with an unclassifiable source/medium are a common cause of Unassigned traffic.

GA4's paid rules match a medium against ^(.*cp.*|ppc|retargeting|paid.*)$. Paid Search and Paid Social also require the source to appear on Google's list of search or social sites. We checked Google's downloadable source-category list on October 14, 2026; it contained no chatgpt, chatgpt.com or openai entry. So we expect chatgpt / cpc to fall into Paid Other, Google's catch-all for paid traffic. That is acceptable. It is visibly paid, and it is not mixed with organic AI traffic.

If you want ChatGPT ads as a named channel, create a custom channel group with a rule such as Source exactly matches chatgpt AND Medium exactly matches cpc. Place it above Paid Other: Google says traffic goes into the first channel it matches. Custom groups apply retroactively, so you can add one after launch. See the utm_medium guide for the wider rules.

3. Keep channel trigger words out of campaign names

Two GA4 default rules look at the campaign name, not the medium:

  • A campaign name containing shop or shopping can send paid traffic to Paid Shopping.
  • A campaign name containing cross-network sends it to Cross-network.

This matters for product-feed campaigns, which teams often name chatgpt_shopping_fall. If you want that traffic in Paid Shopping, the name does the job. If you want all ChatGPT ads in one channel, write chatgpt_products_fall instead. Either choice is defensible. Mixing both across campaigns is the mistake.

Keep names lowercase, readable and free of personal data. utm_campaign is static here because OpenAI's documented macros return IDs, so the readable name is your job.

4. Use only the macros OpenAI documents

OpenAI's Measure Results article says dynamic URL parameters are available in Ads Manager Beta. You can add "custom landing page query parameters using your own text or supported macros, including {campaign_id}, {ad_group_id}, {ad_id}, and {ad_account_id}." It also says Ads Manager fills them in at delivery time (Measure Results).

Set them through the three-dot menu on the Campaigns, Ad groups or Ads page: choose Edit campaign, Edit ad group or Edit ad, then use the Landing page query parameters field.

A practical mapping:

MacroSuggested parameter
{campaign_id}utm_id
{ad_id}utm_content
{ad_group_id}A custom parameter, such as oai_adgroup, if you capture it
{ad_account_id}Usually unnecessary unless you run several accounts

Watch for two mistakes:

  • Invented tokens. Syntax from other platforms, such as Meta's {{campaign.name}}, will not work. OpenAI does not document a campaign-name or ad-name macro, so don't assume {campaign_name} exists. An unsupported token can reach your site as literal text.
  • utm_term for context hints. OpenAI says ad-group context hints "are not exact-match keywords" (OpenAI). Putting them in utm_term, which Google describes as the paid keyword, would suggest a search query that never existed. Leave utm_term empty, or define it clearly.

If you later import ChatGPT ad costs into GA4, the utm_id value must match the campaign ID in your upload. See the GA4 cost data import guide.

5. Know which level's parameters win

OpenAI documents a precedence order: "Ad URL, then Ad, then Ad Group, then Campaign. If a parameter is already set at the Ad URL level, campaign, ad group, or ad-level settings will not overwrite it" (Measure Results).

The common failure: someone pastes a URL already containing utm_content=banner_a into the ad. A colleague then adds utm_content={ad_id} at campaign level. The ad URL wins, so every ad reports banner_a.

Our recommendation: keep the ad's destination URL clean. Put shared values (source, medium, utm_id) at campaign level. Add ad-level parameters only for intentional exceptions. If you inherit a messy account, check for duplicate UTM keys on the delivered URL.

6. Protect UTMs and oppref through redirects

OpenAI appends its own click reference, oppref, to the end of the landing page URL. The OpenAI Pixel stores it in a first-party cookie so later conversions can be matched to the click (Conversion Measurement). OpenAI explicitly tells advertisers to "preserve the OpenAI click reference (oppref) through redirects and landing-page navigation."

A landing URL that redirects, such as http to https, a geo-redirect, a vanity URL or a consent gate, can drop the query string. That can remove your UTMs and oppref together. GA4 then loses the campaign, and Ads Manager loses the direct click match. Check the final address bar after every redirect. The redirect troubleshooting guide shows how to fix server rules that drop query strings.

If you send conversions server-side through OpenAI's Conversions API, capture oppref on landing and pass it through. OpenAI's developer docs say the Conversions API does not capture this value automatically. If you also store UTMs on leads, the same capture step applies; see capturing UTMs in form fields.

7. Don't expect Ads Manager and GA4 to match

OpenAI says its numbers and third-party analytics "may report different conversion totals" and that "a difference does not necessarily indicate an error" (Conversion Measurement). The documented reasons are specific:

Ads Manager (per OpenAI)GA4
Conversions default to a 30-day click window plus a 1-day view-through windowHas no record of an ad impression that did not produce a visit
Dated by ad event time (the click or impression), unless you choose conversion timeDates conversions when the event occurs
May include modeled conversions where availableCounts key events from collected data, under its own attribution settings
Counts ad clicksCounts sessions, which depend on page load, redirects, consent and blocking

Sources: Measure Results, Ads API reporting, Conversion Measurement.

To compare fairly, OpenAI recommends using the same date range and time zone, then checking CSV exports at campaign and ad level. You can also set the view-through window to 0 days in Ads Manager's Edit columns, which reports click-through conversions only. That makes a closer comparison with GA4's click-based sessions. Treat GA4 as your cross-channel view and Ads Manager as the platform's view; don't force them to agree.

Expect timing gaps too. OpenAI says spend can lag about 7–8 hours and attributed conversions can take 24–48 hours to appear. Google notes that GA4 processing can take 24–48 hours as well (GA4 data freshness).

QA a ChatGPT ad click before you scale spend

  1. Preview the delivered URL. Confirm the macros resolved to numbers. Literal {ad_id} text means the field or syntax is wrong.
  2. Follow every redirect. The final URL should still contain all UTMs and, on real ad clicks, oppref.
  3. Check one parameter per key. No repeated utm_content or utm_source.
  4. Confirm collection. In DebugView or your tag debugger, the first page event's page_location should include the UTMs.
  5. Confirm the channel after processing. In Traffic acquisition, the session should show chatgpt / cpc under Paid Other (or your custom channel), not AI Assistant, Referral or Unassigned. Google doesn't document how a manually tagged paid click from an AI-assistant referrer is resolved, so verify this once in your own property rather than assuming.
  6. Confirm the Pixel. OpenAI recommends debug mode while testing the OpenAI Pixel.

The UTM QA checklist and how to test UTMs cover the general workflow.

Quick answers

Should utm_source be chatgpt, chatgpt.com or openai?

Any can work if applied consistently. We recommend chatgpt because chatgpt.com is the value OpenAI documents for organic ChatGPT search referrals. openai describes the company rather than where the ad appeared, and it would also cover any future OpenAI placements.

Does ChatGPT Ads support dynamic URL parameters?

Yes, in Ads Manager Beta. OpenAI documents {campaign_id}, {ad_group_id}, {ad_id} and {ad_account_id}, added in the Landing page query parameters field at campaign, ad group or ad level. OpenAI says that list is not exhaustive ("including"), but don't rely on any macro it hasn't documented.

Do UTMs replace the OpenAI Pixel?

No. UTMs label the visit in your analytics. The Pixel and Conversions API send conversion events to OpenAI for Ads Manager reporting and conversion-optimized bidding. Most advertisers need both.

For the broader setup, read 15 UTM Tracking Mistakes That Ruin Your GA4 Data (and How to Fix Them). Browse the UTM Mistakes & Tracking Audits guides to choose another troubleshooting task.

References