Log in / Create free account🌐 ES☀️

Intermediate training · Module 12 — Advertising in ChatGPT: first steps

Why your clicks and your visits never match (and when to worry)

⏱️ 6 min read · 🤖 ChatGPT Ads 📐 Measurement · updated on 2026-09-18

On any given day the platform says 120 clicks and your analytics sees 83 sessions. It isn't a bug and you aren't being overcharged: they are two counters measuring different things, at different moments, with different rules. Anyone who doesn't know how big a gap is normal does one of two things: distrusts everything and never optimises, or swallows any figure and misses the breakage the day it arrives.

Two counters that don't measure the same thing

The platform counts You count
What Valid clicks (what gets billed) Visits that get as far as running your measurement
When At the moment of the click When the page loads and, in Europe, when there is consent
On which day Its own day boundary and time zone Your analytics' boundary and time zone
Whom Everyone who taps Whoever you don't filter out as a bot

OpenAI itself says its report, your analytics and other platforms will report different totals, and lists the reasons: attribution methods and windows, event timestamps and reporting time zones, browser, consent and storage conditions, different deduplication, configuration and modelled conversions. And it finishes with a line worth framing: a difference does not necessarily indicate an error.

The six normal reasons for the gap

  1. They left before it loaded. They tap, see it's slow and close: the platform has already counted its click and your measurement never ran. With a lot of mobile traffic, this one alone explains plenty.
  2. Consent refused. In Europe, with no advertising consent nothing is measured and nothing is sent, and what was blocked is not recovered later. There will be clicks your side never sees.
  3. Redirects that drop the click identifier. OpenAI appends its click reference (oppref) to the landing page URL and explicitly asks you to preserve it through redirects and page navigation. A link shortener or an old-school redirector throws it away.
  4. Browser storage that isn't shared. If the ad lands on your website and the conversion happens on another subdomain, what one side stored the other can't see. Checked in our own account: our website and our panel weren't passing the source across.
  5. Bots and link scanners. OpenAI's crawlers visit the ad's landing page to validate it (official documentation) and email filters open links on their own. Unfiltered, your counter goes up with nobody there.
  6. The organic mention taken for the ad. When ChatGPT mentions your site inside an answer, that visit arrives with chatgpt.com as its source and it is not your ad. Mixing them inflates paid performance and will have you raising the bid on a campaign that isn't bringing that.

💡 Ninja trick: split by your URL parameter from day one, not by the referrer. A parameter of your own per ad tells the paid click from the organic mention with no ambiguity.

How much of a gap is normal

There is no official figure —OpenAI publishes no benchmarks of this kind— so be sceptical of anyone who gives you one. What can be said:

Which signal really is worrying

Signal What it usually is
Clicks for days and zero measured visits Measurement is broken or the URL doesn't arrive intact
More visits than clicks You're counting bots or the organic mention
The ratio collapses overnight Something changed on your site: new banner, new redirect, measurement down
Plenty of visits, all 1-2 seconds long Not measurement: fit (previous lesson)

On that last point, the criteria we use to score the quality of a visit in our own tools: bot from 70 out of 100 upwards, with fewer than 10 visits we don't judge, ≥ 50 % bots is an alarm and ≥ 20 %, or ≥ 60 % with no interaction at all, means keep an eye on it. These thresholds are provisional, calibrated on Google traffic and pending recalibration with ChatGPT. And bad traffic isn't the same as fraud: it's almost always a poor fit between ad, moment and device.

Our 17 September: 4,024 impressions, zero clicks and 19 people

📌 We measured this ourselves: on the first day our campaign served, the platform reported 4,024 impressions and 0 clicks (with a Clicks objective, no clicks means no spend: €0). Our analytics, on the other hand, counted 19 people arriving from the ad that day, bots already removed.

We tell it as a dated observation, not a rule: one day and figures that small prove nothing. The possible explanations —none confirmed— are the ones above: different day boundaries and time zones, clicks not counted as valid, and the lag with which data arrives. What we did get right: not touching anything because of a day like that, and spending the next one fixing measurement, which was the real problem. On 18/09 the first accepted conversion arrived.

Diagnosis tree, by elimination

  1. Does the platform report clicks? If not, you don't have a measurement problem but a delivery one: check reviews, statuses and bid.
  2. Does your analytics see visits from that source? If it sees zero, carry on.
  3. Strip out bots and scanners before drawing conclusions.
  4. Open the final URL yourself, exactly as it is in the ad, with a parameter attached, and see whether it survives the redirects.
  5. Test consent: accept and refuse, and check what gets measured in each case.
  6. Are you crossing subdomains? Check whether the source survives the jump.
  7. Separate the organic mention from the paid click using your parameter.
  8. If all of the above is fine, it's normal noise: stop chasing an exact match and decide on the trend.

What to remember

📎 Sources and further reading

⚠️ Free training with no support. Ninja Scripts support channels (email and Telegram) are only for the use of the scripts, not for Google Ads questions or questions about this training.

Pick up here

← BeforeWhere does your ad send people? The link that breaks most campaignsAdvertising in ChatGPT: first stepsRelatedTraffic quality ad by ad: bots, bounces and bad fitChatGPT Ads — measurement and traffic qualityRelatedChatGPT Ads case study: late-night mobile traffic, and how to move to office hours and desktop onlyChatGPT Ads in depth — ads, bidding and optimisationRelatedConsent and personal data in ChatGPT Ads (Spain and the EEA)ChatGPT Ads — measurement and traffic qualityRelatedDiary of our campaign, day by dayChatGPT Ads — the platform, the market and our diary

See the full syllabus

🎓
You're reading the Ninja Academy in the open

Create your free account (no card) to save your progress, take the graded quizzes, earn the Basic level certificate and unlock part of the Intermediate and Advanced training.

Create my free account →
🥷

Subscriber feature

This option is part of the Ninja Scripts Suite subscription.

See the subscription →