ChatGPT Ads Tracking: See Which Visitors You Paid For

Two weeks into your first ChatGPT ads test, Ads Manager shows 455 clicks. Your analytics shows 750 visitors from ChatGPT. Some came from your ad. The rest came from ChatGPT answers that link to your site for free, and the report doesn't say which is which.
That's the catch in ChatGPT ads tracking. Kyle Poyar describes the usual start with a new ad channel in Growth Unhinged: put in a small budget, measure the return, then go big once there's proof. With Google or Meta ads, the measuring part is routine. With ChatGPT, the same name already stands for free visitors, so you first have to separate the two.
Below I show how to set up the ad links, where ad clicks end up in GA4 and in Clickport, and what four example businesses would read in their reports after two weeks. The businesses are made up. The dashboard panels are real Clickport reports, filled with the example numbers.
- Tag every ChatGPT ad link with a paid medium, a campaign and an ad name.
- Without tags, GA4 can file ad clicks as free AI visits or as Direct.
- Clickport reads OpenAI's click code and files ad clicks under Paid Search, source ChatGPT.
- Ads Manager counts clicks and last-touch conversions, so its totals differ from analytics.
- You need OpenAI's pixel only to send conversions back into Ads Manager.
How do you track ChatGPT ads?
Add tags to every ad link, so each click arrives with a paid medium and a campaign name. Then check where those clicks land in your analytics and compare them with the free visits ChatGPT already sends. Use Ads Manager for clicks and cost, and your analytics for what the visitors did next.
As checked on 8 October 2026, OpenAI shows ads to ChatGPT Free and Go users, below the end of an answer. The self-serve Ads Manager is in beta and open in 63 countries.
Which tags should an ad link carry?
OpenAI keeps your tags on every click and fills in placeholders such as {campaign_id}, {ad_group_id}, {ad_id} and {ad_account_id} (Measure results). OpenAI's own example uses openai as the source and paid as the medium. I'd use chatgpt as the source, so ad visits sit next to the ChatGPT visits you already get:
https://yoursite.com/pricing?utm_source=chatgpt&utm_medium=cpc&utm_campaign=spring-trial&utm_content={ad_id}
Write the campaign name by hand. Ad IDs are fine for utm_content when you only compare ads within one campaign; when a report goes to someone else, a name such as titan-stove reads better than a number.
Where do ChatGPT ad clicks end up?
Free ChatGPT links carry a tag of their own: ChatGPT adds utm_source=chatgpt.com to most links in its answers. OpenAI doesn't document any tag on ad clicks. So an ad click arrives with your tags, or with only a click code that OpenAI adds to the landing page address, called oppref. A redirect can remove that code.
Here is what that means in GA4 and in Clickport:
| ChatGPT click | GA4 default channel | Clickport |
|---|---|---|
Ad link tagged chatgpt / cpc |
Paid Other | Paid Search, source ChatGPT |
| Ad link without tags, on a computer | AI Assistant, if ChatGPT shows as the sending page | Paid Search, source ChatGPT |
| Ad link without tags, in the ChatGPT app | Direct, if no sending page arrives | Paid Search, source ChatGPT |
| Link in a ChatGPT answer | AI Assistant, Referral or Unassigned | AI Search, source ChatGPT |
The GA4 column follows Google's default channel rules as published on 8 October 2026. It is a reading of those rules, not a live test. Paid Other is GA4's group for paid traffic from sources Google doesn't list, so ChatGPT ads share it with every other ad network Google doesn't know. Untagged ad clicks go to AI Assistant (the free channel) or to Direct, depending on whether a sending page arrives. The ChatGPT app opens links in its own browser, and that can remove it.
You can fix part of this in GA4 with a custom channel group that sends chatgpt plus a paid medium into a channel of its own. That covers tagged clicks. It can't cover untagged ones, because GA4 doesn't read OpenAI's click code.
Clickport reads it. A visit that starts with oppref on the link counts as Paid Search with ChatGPT as the source, with or without a sending page, and with or without tags, unless a tag sets a display medium such as cpm. The ChatGPT ads guide in our docs has the details. Free ChatGPT visits stay in AI Search, so the two never mix.
Why does Ads Manager show other numbers?
Ads Manager counts clicks on the ad. Your analytics counts visits that loaded the page, after removing bots. OpenAI's own help page lists the usual reasons for the gap: "Analytics sessions depend on page load, redirects, consent settings, browser blocking, UTM handling, attribution windows, and time zone settings."
Conversions differ for two more reasons. OpenAI credits a conversion to the last ad click within its click window, 30 days by default, and by default also to an ad seen in the last day. Its conversion numbers arrive 24 to 48 hours late. Expect two totals. Pick one for each decision and say which one you used.
Rotawell: do ad visitors start trials like the free ones?
Rotawell sells rota software to clinics. ChatGPT already recommends it in answers about clinic scheduling, and those answers sent 340 free visitors in the last two weeks. In the same two weeks, Rotawell ran its first ChatGPT ads test for €1,350.
| ChatGPT visits | Visitors | Trials | Rate |
|---|---|---|---|
| Free (AI Search) | 340 | 21 | 6.18% |
| Ads (Paid Search) | 410 | 9 | 2.20% |
Rotawell's ChatGPT visits over 14 days, as in the figure. Ads Manager counted 455 clicks.
The ad brought more visitors than the free answers, and fewer trials: 9, which works out at €150 per trial. Free ChatGPT visitors started trials almost three times as often.
I'd look at where each group lands before judging the ad. Rotawell knows which page ChatGPT cites in its answers: the comparison of a rota spreadsheet with Rotawell. The free visitors arrive there, while the ad sends everyone to the home page. I'd point the ad at the comparison page, keep the tags, and run it for two more weeks.
A trial isn't a customer. Rotawell's trials end after 30 days, so the real verdict comes from the billing system then. The trial count is enough to decide whether the ad deserves those two weeks.
Trailkettle: which ad pays for its products?
Trailkettle sells camping stoves and cookware. It runs two ChatGPT ads: one for the Titan stove at €145 and one for the trail cookset at €48. Each ad link carries its own name in utm_content, and sales reach Clickport from the shop's Stripe account.
| Ad | Visitors | Revenue | Spend |
|---|---|---|---|
| titan-stove | 620 | €1,740 | €700 |
| trail-cookset | 480 | €384 | €520 |
Trailkettle's two ads over 14 days: 12 stove orders and 8 cookset orders. Revenue from Clickport, spend from Ads Manager.
Clickport has no ad cost data, so the owner copies the spend from Ads Manager and divides by hand. The stove ad returns €2.49 for every euro. The cookset ad returns 74 cents. A €48 order leaves little room to pay for the clicks that lead to it.
I'd move the cookset budget to the stove ad and show the cookset on the stove's product page as a second item. I'd rarely pay for clicks on a cheap product alone.
The two tools won't agree on revenue. Clickport credits a sale to the visit that came from the ad. With OpenAI's pixel in place, Ads Manager also counts a sale up to 30 days after the click, so its total is usually higher. For moving budget between two ads, either source works, as long as both ads are read from the same one.
Slatewell Roofing: the calls come from phones
Slatewell Roofing repairs roofs in one city. Most of its ChatGPT ad clicks come from phones, where the ChatGPT app opens the page in its own browser. Those visits often arrive without the page that sent them.
Slatewell's ad links carry tags, so the visits still count as paid. Without tags, GA4 would file most of them as Direct.
| Source | Visitors | Call clicks | Rate |
|---|---|---|---|
| 1,150 | 38 | 3.30% | |
| ChatGPT | 260 | 14 | 5.38% |
Slatewell's paid visits on phones over 14 days, as in the figure. Call clicks are taps on the call link.
ChatGPT sends far fewer phone visitors than Google Ads, and a bigger share of them tap the call button. That's worth keeping. Before each new ad goes live, I'd tap it in the ChatGPT app and open Clickport's Sessions panel. The newest visit should read "ChatGPT Ads", the label Clickport gives a paid ChatGPT visit. It takes a minute and catches a broken link before it costs money.
The goal is called "Call link clicked" for a reason: a tap on the number isn't a booked job. Slatewell compares the 14 taps with its call log for the same two weeks before deciding on a bigger budget.
Loftline Media: what to tell the client after two weeks
Loftline Media is an agency. It runs ChatGPT ads for Parlavia, a language school, with one ad for evening Italian classes and one for business English. After two weeks, the client asks whether ChatGPT is worth it.
| Campaign | Visitors | Enquiries | Rate |
|---|---|---|---|
| evening-italian | 290 | 11 | 3.79% |
| business-english | 310 | 4 | 1.29% |
Parlavia's ChatGPT ad campaigns over 14 days, as in the figure.
Parlavia doesn't run OpenAI's pixel, so Ads Manager shows clicks and spend and no conversions. The enquiries come from Clickport. Loftline's note to the client puts both in one paragraph:
ChatGPT ads, first two weeks. Ads Manager counted 640 clicks for €1,100. Our analytics recorded 600 visitors from the ads; clicks and visitors never match exactly, because some people leave before the page loads. 15 visitors sent an enquiry, 11 of them from the Evening Italian ad. That's €73 per enquiry overall. For the next two weeks we move the Business English budget to Evening Italian and test a second Italian ad.
For an agency, the bigger win is a naming rule. Use the same utm_source=chatgpt and utm_medium=cpc for every client, and campaign names a client can read. Then every client report shows ChatGPT ads in the same row.
Do you need OpenAI's pixel?
Only if you want conversions inside Ads Manager, for example to let it bid on them. For measuring what ad visitors do on your site, analytics is enough.
According to OpenAI's pixel documentation, the pixel sets a click cookie for 30 days and a browser ID cookie for 365 days, and it starts with consent switched on. Where the law requires consent for cookies, the pixel needs your consent banner, and OpenAI's conversion measurement guide says to send conversion data only after the necessary consent.
Clickport measures the ad visits, goals and revenue without cookies. It doesn't send conversions to OpenAI. If bidding on conversions inside Ads Manager matters to you, you need the pixel or OpenAI's Conversions API next to your analytics.
Start with one tagged ad link
Work back from the decision you want to make in two weeks:
- Tag one ad link with
utm_source=chatgpt,utm_medium=cpcand a campaign name. Point it at the final page, not a redirect, so OpenAI's click code arrives. - Tap the ad on a phone and on a computer, and check that both visits arrive as paid ChatGPT visits. In Clickport's Sessions panel they read "ChatGPT Ads".
- Set one goal for the action that matters: a trial, a call link, an enquiry or an order.
- After two weeks, compare paid and free ChatGPT visitors on that goal, and divide by the spend in Ads Manager.
In Clickport, that's one dashboard: set the source to ChatGPT, open the Channels tab and pick your goal. OpenAI's click code also catches the ad clicks a missing tag would otherwise hide. If your current analytics already keeps paid and free ChatGPT visits apart for you, keep using it.
You can try Clickport free for 30 days, no credit card required. If you're moving from GA4, the switching guide shows how to set it up. For the free side of ChatGPT traffic, How to Track AI Search Traffic and Why ChatGPT Traffic Shows as Direct in GA4 go deeper.
Frequently asked questions
Is there an Ads Manager for ChatGPT ads?
Yes. OpenAI runs a self-serve Ads Manager, in beta, available in 63 countries as of 8 October 2026. Advertisers can also buy through OpenAI's sales team and partners. Ads show to ChatGPT Free and Go users, not to Plus, Pro, Business, Enterprise or Edu users.
What UTM parameters should I use for ChatGPT ads?
Use utm_source=chatgpt, utm_medium=cpc, a readable utm_campaign and utm_content={ad_id} or an ad name. OpenAI keeps the tags on every click. A paid medium keeps ad visits apart from the free ChatGPT visits, which usually carry utm_source=chatgpt.com and no medium.
Does GA4 track ChatGPT ads?
GA4 records the visits, but its default channels don't group them. By Google's published rules, clicks tagged with a paid medium such as cpc land in Paid Other. Untagged clicks land in AI Assistant or Direct, depending on whether the sending page arrives. GA4 has no OpenAI connector for ad cost, so spend has to be imported by hand.
What is oppref?
oppref is the click reference OpenAI adds to the landing page address of a ChatGPT ad. OpenAI's pixel and Conversions API use it to match a conversion to the ad click. Clickport reads it to count the visit as a paid ChatGPT click, with or without tags.
Why does Ads Manager show more clicks than my analytics?
Ads Manager counts clicks. Analytics counts visits that loaded your page. Some people leave before the page loads, analytics removes bots, and redirects, consent settings and browser blocking can lose visits in tools that depend on them. A small gap is normal. If only half the clicks become visits, check the landing page for a broken redirect.

Comments
Loading comments...
Leave a comment