The convention
| Parameter | Value | Example |
|---|---|---|
| utm_source | chatgpt-ads | chatgpt-ads |
| utm_medium | cpc | cpc |
| utm_campaign | country-device-stage | us-desktop-decision |
| utm_content | the ad group's buyer question, shortened | close-software-netsuite |
| utm_term | the ad variant | v2 |
Why not chatgpt.com?
Organic ChatGPT links already use utm_source=chatgpt.com. Using the same value for ads would merge paid and organic traffic.
Carry it into the CRM
- Store first-touch UTMs on the company and contact record.
- If you use HubSpot's ChatGPT Ads integration, check how its automatic UTMs interact with yours before launch.
- Pass the click identifier oppref to server-side conversion events.
Keep a dictionary
Keep a shared sheet of every utm_content value and the full question it stands for. Six months later, nobody remembers what "csn-v2" meant.
Example URLs (fictional)
https://example.com/netsuite?utm_source=chatgpt-ads&utm_medium=cpc&utm_campaign=us-desktop-decision&utm_content=close-netsuite&utm_term=v1https://example.com/compare?utm_source=chatgpt-ads&utm_medium=cpc&utm_campaign=uk-desktop-comparison&utm_content=close-tools-vs&utm_term=v2
Questions
Lowercase or mixed case?
Lowercase always. Analytics treats "ChatGPT-Ads" and "chatgpt-ads" as different sources.
Should utm_campaign match the Ads Manager campaign name?
Yes, closely. It makes joining reports easier.
What about dynamic URL parameters?
OpenAI offers URL parameters; use them for IDs, and keep your human-readable UTMs for analysis.
Why the convention matters more for AI than for search
In search, the keyword usually travels with the click, so analysts can rebuild intent after the fact. In ChatGPT, the advertiser never sees the conversation. The only record of what the buyer was asking is the ad group they clicked, and the only place that record survives is your UTM. Lose it, and an identified company arrives in your CRM with no context: sales knows who came, but not why.
That's why utm_content carries the buyer question rather than an ad ID. A rep reading "close-netsuite" knows the opener; a rep reading "ag_4471" doesn't.
How to roll it out without breaking reports
- Write the convention down before the first campaign goes live.
- Build URLs from a template sheet, never by hand.
- Test one click end to end: ad, landing page, analytics, CRM.
- Freeze the convention for the quarter; change it only at a quarterly review.
Start here: Company identification from AI. More articles in Company signals.