UTM parameters work on ChatGPT Ads. OpenAI's help center confirms static tracking parameters persist on ad clicks and can be used in existing analytics tools. The canonical convention to use is utm_source=chatgpt and utm_medium=cpc, which Google Analytics 4 auto-classifies as Paid Search. Add the tagged URL to your ad's destination field in Ads Manager Beta; the parameters travel through the click to your landing page, where GA4, HubSpot, Salesforce, and any other URL-parameter-reading analytics tool can attribute the session back to a specific ChatGPT Ads campaign.
- OpenAI confirms support: UTM parameters persist on ad clicks
- Canonical convention:
utm_source=chatgpt,utm_medium=cpc,utm_campaign={campaign},utm_content={ad-variant},utm_term={context-hint} - UTM vs pixel: UTMs are platform-agnostic post-click attribution; the OpenAI pixel is in-platform optimization. Most advertisers run both.
- Where UTMs land: Google Analytics 4 (native), HubSpot (Original Source Drill-Down), Salesforce (Web-to-Lead/Pardot), AI-Advisors (via the GA4 overlay)
- Don't confuse: advertiser-side
utm_source=chatgpt(you set it) vs publisher-sideutm_source=chatgpt.com(ChatGPT auto-appends on organic citations)
ChatGPT Ads has a measurement gap. OpenAI's in-platform reporting shows impressions, clicks, spend, click-through rate, average cost-per-click, and conversions; the conversion pixel adds 10 standard event types. But neither tells your sales team which ChatGPT Ads campaign produced last week's pipeline. That answer lives in your analytics stack and your CRM, and the bridge that gets it there is the same one you have been using for 20 years: UTM parameters.
The good news is that ChatGPT Ads handles UTMs cleanly. OpenAI's help center documents it directly: "Advertisers can also track traffic from ChatGPT Ads by adding static tracking parameters (e.g. UTM parameters) to landing page URLs. These parameters persist on ad clicks and can be used in existing analytics tools to understand traffic from ChatGPT Ads." You build the tagged URL the same way you do for Google Ads or LinkedIn Ads, paste it into the destination field in Ads Manager Beta, and the parameters travel through to your landing page on every click.
This guide is the full operational walkthrough. It covers the disambiguation that trips up most teams (publisher-side vs advertiser-side UTMs), the pros and cons of UTM-based attribution versus the OpenAI conversion pixel, the canonical UTM convention to lock in across your team, how the data lands in Google Analytics 4, HubSpot, Salesforce, and AI-Advisors specifically, and the hygiene mistakes that quietly fragment attribution across half a dozen reporting buckets.
UTM parameters are the only attribution layer that works in every analytics tool you already pay for. Use them on every ChatGPT Ads creative from day one.
The quick answer: UTM parameters work on ChatGPT Ads
Adding UTM parameters to ChatGPT Ads is the same three-line task it is on any paid channel that lets you set a custom destination URL. You construct the tagged URL, paste it into the ad creative's destination field in Ads Manager Beta, and verify the tags survive the click on the other side. OpenAI's help center confirms the parameters persist; the rest is downstream tool configuration.
The full process is in the Step-by-Step sequence below. For now, the short version: tag every creative, lock your convention, and verify in analytics before you scale spend.
Two kinds of UTMs: advertiser-side vs publisher-side
The first thing that trips up teams searching for "UTM codes for ChatGPT" is that there are two completely different UTM contexts that share a name. They use the same syntax but serve different sides of the table.
Advertiser-side: UTMs you put on YOUR ad's destination URL
This is the context this guide covers. You are an advertiser running ChatGPT Ads. You construct a tagged destination URL with values you control: utm_source=chatgpt, utm_medium=cpc, utm_campaign=q2-launch. You paste it into Ads Manager Beta as the destination for your ad creative. When a user clicks the ad, the parameters travel from the ad to your landing page. Your analytics tools read them and label the session as coming from your ChatGPT Ads campaign.
Publisher-side: UTMs ChatGPT auto-appends to organic citation links
Starting in 2025, ChatGPT began auto-appending utm_source=chatgpt.com (note the .com) to outbound citation links in its organic responses. If your site gets cited in a ChatGPT answer and a user clicks through, the click arrives at your site with that parameter attached. You did not put it there; ChatGPT did. It is the AI engine's own auto-tagging on links it sends to publishers. It partially closes the dark AI traffic blind spot for sites that previously saw organic AI referrals classified as (direct) / (none) in their AI referral traffic reports.
How to tell them apart in your analytics
Both can coexist in the same analytics view. The naming convention does the work: utm_source=chatgpt.com (with the .com) is organic ChatGPT referral traffic; utm_source=chatgpt (without the .com, or whatever custom value you set) is ChatGPT Ads paid click traffic. If you want them merged into one "ChatGPT" channel for reporting, build a custom channel group keyed on a regex that matches both. If you want them separate, the default lexical split keeps them apart.
UTM codes vs the OpenAI conversion pixel: pros and cons
Most B2B teams need both UTMs and the OpenAI conversion pixel running side by side. They are not competing mechanisms; they fill different gaps in the measurement stack.
| Dimension | UTM parameters | OpenAI conversion pixel |
|---|---|---|
| What it tracks | Session source / medium / campaign on click | 10 standard events fired on the landing page |
| Where the data lives | Your analytics tool (GA4, HubSpot, Salesforce, etc.) | OpenAI Ads Manager + your pixel events tab |
| Setup time | 5 minutes per creative | 10 minutes via GTM; 2 minutes via AI-Advisors integration |
| Cross-platform reporting | Works in every analytics tool that reads URL parameters | OpenAI side only (until OpenAI ships partner-data exports) |
| Optimization side | None; pure attribution layer | Feeds OpenAI's bid-side optimization when Conversions objective activates |
| Cost | Free | Free (install only); ad spend separate |
| Ad blockers and ITP | Unaffected (URL parameters are not blocked) | Loses 5-15% of events to client-side blocking |
| B2B revenue closure | Closes loop via CRM; UTMs ride into HubSpot / Salesforce contact records | Reports site-side events; revenue closure still happens in CRM |
| Best for | Cross-platform post-click attribution and CRM reconciliation | OpenAI-side optimization signal and conversion volume reporting |
The decision is not "which one." It is "do I run both from day one, or stage them." For a B2B advertiser with a real CRM and a quarterly revenue close, the answer is both, from day one. UTMs close the post-click revenue loop through your existing analytics and CRM; the pixel feeds OpenAI's bid-side optimization once the Conversions objective activates. Skip the pixel and you are leaving in-platform optimization on the table. Skip UTMs and you have no way to attribute pipeline back to specific campaigns in the tools your finance team reports against.
UTMs and the pixel are not competing. They report to different audiences. UTMs report to your CRM and finance team. The pixel reports to OpenAI's bid optimizer.
The canonical UTM convention for ChatGPT Ads
Three different ChatGPT Ads UTM conventions are floating around the industry. The cleanest default for most B2B teams (and the one we recommend across the AI-Advisors playbook) is built around what Google Analytics 4 auto-classifies without custom channel groups.
| Parameter | Value | Why |
|---|---|---|
| utm_source | chatgpt | Channel name; consistent across team and forward-compatible with utm_source=copilot or =perplexity when those ad platforms launch |
| utm_medium | cpc | GA4 default channel grouping auto-classifies cpc as Paid Search (no custom channel group required) |
| utm_campaign | {campaign-slug} | Kebab-case-lowercase campaign identifier matching your CRM campaign record |
| utm_content | {ad-variant} | Specific creative or headline variant for A/B testing |
| utm_term | {context-hint-cluster} | Repurposed from paid-search keyword field to hold the context-hint pattern or audience segment |
A full tagged destination URL looks like this (one-click copy below):
https://yoursite.com/landing?utm_source=chatgpt&utm_medium=cpc&utm_campaign=q2-launch&utm_content=headline-a&utm_term=cluster-1If your team has a custom GA4 channel group set up that splits AI ad platforms out separately (so ChatGPT Ads, Copilot Ads, and Gemini Ads do not get lumped together with Google Ads as "Paid Search"), utm_medium=paid-ai is a defensible alternative. It carries clearer semantic intent ("this is AI advertising specifically") at the cost of needing to define a custom channel group to surface in default reports.
Google Analytics 4: how UTMs from ChatGPT Ads show up
GA4 reads UTM parameters automatically with zero configuration. On any tagged session, GA4 writes session_source, session_medium, session_campaign, session_content, and session_term fields and labels the user's acquisition channel based on the default channel grouping (or your custom override).
Three configuration tasks are worth doing on day one. First, build a custom Exploration filtered to session_source = chatgpt so you can isolate ChatGPT Ads performance at a glance. Second, define your conversion events explicitly in GA4 admin (form fills, demo requests, trial signups) so they show up in the Acquisition reports alongside source/medium. Third, if you want ChatGPT Ads broken out as its own named channel rather than lumped into Paid Search, build a custom channel group with a rule like session_source contains "chatgpt".
The AI-Advisors GA4 integration (Growth+ plans) pulls your tagged sessions back into AI-Advisors and overlays them alongside AI bot traffic and citation data, so you can see ChatGPT Ads click volume next to organic ChatGPT citation share on a single time-series chart. The UTMs themselves still live in GA4; AI-Advisors reads the tagged session data through the GA4 API.
HubSpot: how UTMs from ChatGPT Ads show up
HubSpot captures UTMs as standard contact properties when its tracking script loads on the landing page. The first-touch UTM values get written to the contact record on creation under three properties: hs_analytics_source (the channel bucket HubSpot maps utm_medium to), hs_analytics_source_drill_down_1 (typically utm_source), and hs_analytics_source_drill_down_2 (typically utm_campaign).
Build a saved contact view filtered to Original Source Drill-Down 1 = chatgpt and pin it to your marketing dashboard. That view becomes the working list of ChatGPT Ads contacts; from there you can layer in lifecycle stage, deal value, and CRM source-tracking fields. HubSpot does not overwrite first-touch UTMs by default on subsequent visits, which means the attribution sticks to the contact record permanently (useful for B2B sales cycles that span weeks).
One gotcha: the Original Source dropdown on a HubSpot contact has a set vocabulary (Paid Search, Email Marketing, Direct Traffic, etc.). It auto-maps from utm_medium, which is why utm_medium=cpc surfaces as "Paid Search" in the Original Source dropdown. If you use utm_medium=paid-ai or another non-standard value, the contact will land in "Other Campaigns" by default unless your team explicitly maps it.
Salesforce: how UTMs from ChatGPT Ads show up
Salesforce does not natively read URL parameters from a marketing site session. Getting UTMs into a Lead, Contact, or Opportunity record requires a form layer that captures them at the point of conversion. Three common patterns:
- Web-to-Lead with hidden UTM fields. The simplest setup. Add 5 hidden fields to your Web-to-Lead form (utm_source, utm_medium, utm_campaign, utm_content, utm_term), populate them via JavaScript that reads the URL query string on page load, and Salesforce stores them on the new Lead record. Map utm_source to the standard LeadSource field or a custom Campaign Source field.
- Pardot / Marketing Cloud Account Engagement tracking. Pardot's tracking script captures UTMs natively and writes them to the Prospect record under standard Source fields. When the Prospect syncs to a Salesforce Lead or Contact, the UTM data rides along. Pardot also supports first-touch and last-touch attribution models out of the box.
- Marketo / HubSpot Forms with Salesforce sync. If your form vendor captures UTMs and syncs to Salesforce (most do), the data lands on the matched Lead or Contact record through that sync. You configure the field mapping in the vendor's Salesforce integration settings.
Either way, the destination field in Salesforce is typically LeadSource (standard) or a custom Campaign_Source__c (recommended for cleaner reporting). Campaign Influence dashboards and revenue-attribution reports then pivot off that field to credit ChatGPT Ads with pipeline and closed-won revenue.
AI-Advisors's role: complementary, not a UTM ingester
It is worth being honest about what AI-Advisors does and does not do with your UTM data. AI-Advisors is not a CRM or a standalone analytics platform; it does not directly ingest UTM parameters from your landing pages. Your UTMs flow into GA4, HubSpot, and Salesforce through their native tracking, exactly as they would whether or not you use AI-Advisors.
Where AI-Advisors fits is on the upstream and downstream sides of UTM-based attribution.
- Upstream: the AI-Advisors ChatGPT Ads integration installs the OpenAI conversion pixel in your GTM container in 2 minutes (Growth+ plans), so the pixel and your UTMs can run side by side on every landing page without a developer.
- Downstream: the AI-Advisors GA4 integration (Growth+) overlays your UTM-tagged GA4 sessions alongside AI bot traffic and citation data, so you can see ChatGPT Ads click volume next to organic ChatGPT citation share on one time-series chart.
- The bigger frame: AI-Advisors tracks the AI Visibility Lift across paid (ChatGPT Ads) and organic (citations from ChatGPT, Perplexity, Gemini, Copilot, Claude). UTMs give you the click side of paid; AI bot tracking gives you the citation side of organic. Together they are the two halves of the AI marketing measurement stack.
HubSpot and Salesforce CRM integrations on the AI-Advisors side are on the roadmap (currently Coming Soon on the integrations page). Until they ship, the canonical pattern is to let HubSpot and Salesforce capture UTMs natively and pivot on those records inside their own reporting tools.
Turn your highest-spend Google Ads keywords into ChatGPT Ads briefs (with the canonical UTM convention pre-applied), ready to paste into Ads Manager Beta.
Run the free Converter →UTM hygiene: mistakes that quietly break attribution
UTM attribution fails silently. Nothing throws an error; the wrong session just lands in the wrong reporting bucket and you discover the drift three months later when the quarterly board deck does not tie. Five mistakes account for most of the failures.
Case-sensitivity drift
utm_source=Chatgpt and utm_source=chatgpt register as two different channels in Google Analytics 4 and most other analytics tools. The cure is a written convention everyone tags against (lowercase kebab-case is the safest default) and a URL builder that enforces it rather than ad-hoc typing into Ads Manager.
Inconsistent values across campaigns
One campaign tags with utm_source=chatgpt; the next uses chatgpt-ads; the third uses openai. Three campaigns report as three different channels and your "total ChatGPT Ads contribution" requires a manual union every time. Lock the convention before the first campaign ships and audit it quarterly.
Encoding issues on special characters
Spaces, ampersands, plus signs, and other special characters in UTM values break the URL or get parsed inconsistently across tools. Stick to URL-safe values (letters, numbers, hyphens, underscores). If a value has to contain a space, URL-encode it: q2%20launch, never q2 launch.
UTMs on internal site links
Tagging internal links inside your own site overwrites the original source attribution when the visitor clicks through. A visitor arrives from ChatGPT Ads with utm_source=chatgpt; they click an internal CTA tagged with utm_source=blog; the second UTM overwrites the first and ChatGPT Ads loses credit for the conversion. Reserve UTMs for external links only.
Forgetting to test the click before scaling
After publishing a campaign, click your own ad in ChatGPT (or use the preview URL OpenAI provides) and confirm the destination URL still carries all 5 UTM parameters on arrival. URL encoding issues, ad-network redirect chains, or stale form submissions can silently strip parameters. Verify before scaling spend; debugging a missing UTM after 30 days of spend is more painful than checking the URL once at launch.
UTM attribution does not fail loudly. It quietly fragments your reporting into channels you never meant to create. Lock the convention; audit it quarterly.
Frequently Asked Questions
#Does ChatGPT Ads support UTM parameters on destination URLs?
Yes. OpenAI's help center confirms: "Advertisers can also track traffic from ChatGPT Ads by adding static tracking parameters (e.g. UTM parameters) to landing page URLs. These parameters persist on ad clicks and can be used in existing analytics tools to understand traffic from ChatGPT Ads." You add them to the destination URL of your ad in Ads Manager Beta the same way you would for Google Ads or LinkedIn Ads. They flow through to your landing page on click and get parsed by Google Analytics 4, HubSpot, Salesforce, and any other analytics tool that reads URL parameters.
#What is the recommended utm_source and utm_medium for ChatGPT Ads?
The canonical default is utm_source=chatgpt and utm_medium=cpc. The chatgpt source matches the channel's natural name; the cpc medium aligns with Google Ads and Bing Ads paid-search convention, so Google Analytics 4's default channel grouping auto-classifies the traffic as Paid Search without needing a custom channel group. If you have a custom channel group set up that splits AI ad platforms out separately, utm_medium=paid-ai or utm_medium=ai_ads are defensible alternatives. The important thing is locking one convention and never letting it drift.
#How are UTM parameters different from the OpenAI conversion pixel?
Different mechanisms, complementary roles. UTM parameters travel on the URL from your ad to your landing page; analytics tools read them after the click and label the session. The OpenAI conversion pixel is a JavaScript SDK that runs on your site, captures OpenAI's privacy-preserving oppref identifier from ChatGPT ad clicks, and reports 10 standard conversion events back to OpenAI for in-platform optimization. UTMs are platform-agnostic (work in GA4, HubSpot, Salesforce, Mixpanel, Segment); the pixel reports back to OpenAI specifically. Most B2B advertisers run both.
#Will Google Analytics 4 auto-classify ChatGPT Ads as Paid Search?
Yes, if utm_medium=cpc (or other paid-search media like ppc, paidsearch). GA4's default channel grouping maps cpc to the Paid Search channel regardless of utm_source value, which means utm_source=chatgpt + utm_medium=cpc reports as Paid Search in default Acquisition reports. If you want ChatGPT Ads broken out as its own channel rather than lumped with Google Ads and Bing Ads, build a custom channel group keyed on utm_source=chatgpt.
#Does utm_source=chatgpt.com on a session mean I got a ChatGPT Ads click?
No. utm_source=chatgpt.com (with the .com) is a publisher-side parameter that ChatGPT auto-appends to outbound citation links on organic responses, so publishers can identify organic ChatGPT referrals. Advertiser-side ChatGPT Ads clicks carry whatever utm_source value you set yourself (typically utm_source=chatgpt without the .com). Both can show up in the same analytics view; the difference between them is whether you are looking at organic ChatGPT traffic (chatgpt.com) or paid ChatGPT Ads traffic (chatgpt or your custom value).
#Do UTM parameters work alongside the OpenAI oppref click identifier?
Yes. The oppref parameter is OpenAI's own privacy-preserving click identifier appended to outbound ad clicks; it is read by the OpenAI conversion pixel SDK on the landing page and stored in a first-party __oppref cookie. UTM parameters live on the same URL alongside oppref and do not interfere with each other. Your landing page can have all of: utm_source=chatgpt, utm_medium=cpc, utm_campaign=q2-launch, utm_content=ad-variant-a, AND oppref=abc123. Each downstream tool reads the parameters it cares about.
#How do UTM parameters get into HubSpot, Salesforce, and the AI-Advisors stack?
Each platform reads them differently. HubSpot captures UTMs as standard contact properties (hs_analytics_source, Original Source Drill-Down 1 / 2) when its tracking script loads on the landing page. Salesforce ingests UTMs through Web-to-Lead form mapping or Pardot/Marketing Cloud Account Engagement tracking; the destination field depends on which form layer captures the lead. AI-Advisors does not directly ingest UTM parameters; instead, the AI-Advisors ChatGPT Ads integration installs the OpenAI conversion pixel in your GTM container and the GA4 integration overlays your existing UTM-tagged GA4 sessions alongside AI bot traffic and citation data. UTMs flow into GA4 and your CRM through each platform's native tracking; AI-Advisors complements that with AI-side signals.
Related Reading
- How to Optimize Landing Pages for ChatGPT Ads (the landing-page side of the post-click conversion stack, paired with UTM tagging)
- How to install the ChatGPT Ads Measurement Pixel via Google Tag Manager
- ChatGPT Ads Conversion Tracking Is Real: What OpenAI's April 30 Privacy Policy Update Tells You About the Roadmap
- How to Measure ROI for ChatGPT Ads: The 2026 ROAS Framework for B2B Marketers
- How to Report on ChatGPT Ad Campaigns
- The Conversational Conversion Stack: How to Measure ChatGPT Ads (the measurement model where UTM and CRM are Layer 2)
- How to Set Up a ChatGPT Ad Campaign in 8 Steps (May 2026)
