Log in / Create free account🌐 ES☀️

Advanced training · Module 17 — ChatGPT Ads in depth — context hints, measurement, bidding and automation

Reporting and diagnostics in ChatGPT Ads: what you can measure, when the data arrives and why your ad isn't showing

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

In Google Ads, when a campaign goes wrong, you open the search terms report and see what people typed. In ChatGPT Ads that report doesn't exist: OpenAI doesn't share conversations with advertisers. What you get is aggregated figures, each with its own delay, and a handful of statuses that explain why an ad isn't serving.

Reading those figures properly, and understanding that an empty report is information too, is half the job on such a young platform.

What you can see

The main metrics are impressions, clicks, spend, CTR, average CPC, average CPM and conversions. The API also separates conversions after a click (click_through_conversions) from those after seeing the ad (view_through_conversions); the latter are for information only (lesson 4 of this module). Every query combines three axes:

Axis Options
Level Account, campaign, ad group or ad
Granularity Hour, day, month or period total
Breakdown Country, device, platform or product: one per query

In the API, platform takes the values android_app, android_web, desktop_web, ios_app, ios_web and web.

The single breakdown has a catch: you can see spend by country and, in another query, by platform, but not platform within each country. If you need to cross two axes, cross them in your structure, with one campaign per platform or per country (lesson 7 of this module).

When the data arrives

Metric When it appears How to read it
Impressions, clicks and CTR Within minutes They tell you whether delivery is starting
Spend Later Zero spend doesn't mean there are no charges
Conversions With daily processing: at least a day Don't judge today's

Practical rule: decide on closed days; today's figures are provisional.

⚠️ Pitfall: seeing clicks with zero spend and thinking that traffic is free or that billing has failed. Spend arrives after clicks.

What you won't find

There is no conversation or query report, so there are no "search terms" either. It's a privacy decision: advertisers receive aggregated data (views, clicks) and never conversations, chat history, memories, names, emails, precise locations or IP addresses.

So how do you know which context works? Through structure: one ad group per intent, each with its own context hints (lesson 1 of this module), and by comparing groups against each other. Your structure is your search terms report.

Cross-checking with your analytics

Add UTM parameters to each ad's URL (a different utm_content per ad, for example): they're static, persist through the click and any analytics tool can read them. Even so, OpenAI's clicks and your visits won't match, for several reasons:

Don't chase a click-perfect match: watch that the gap stays stable. If it suddenly widens, something has changed.

💡 Ninja trick: filter your own checks and known bots out of your analytics before launching. Otherwise, in the first week, right when the review happens, you'll see visits "from the ad" that belong to nobody.

Diagnosis: everything active and not a single impression

It happened to us at launch: 8 approved ads, a bid that wasn't low and zero impressions. The API gave the reason: "account brand review in progress". Until the brand was approved, on 16 September, nothing was delivered. The empty report wasn't a reporting failure: it was the signal that something was blocking delivery. Check in this order:

What to check Why it blocks What to do
Account review (brand or integrity) With an account review pending, nothing is delivered Wait; changing the brand can trigger another review
Ad status In review or rejected, it doesn't serve Edit the rejected ad and it goes back to review
Campaign and ad group An active ad needs an active campaign and ad group Activate them, although activating isn't enough if another condition fails
Budget and spend cap When they run out, delivery stops Check both: they apply separately
Bid A low bid loses auctions The low-bid warning is guidance, not a block

With invoice billing, also check the account's daily limit. And remember that editing an approved ad creates a new version that goes through another review.

Via the API, request include[]=serving_issues on the campaign, ad group or ad record to see the reason, and watch for bid_too_low on ad groups. But an empty list doesn't promise impressions: even with everything green, you need conversations in which your ad is relevant.

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

← BeforeAdvanced measurement in ChatGPT Ads: Conversions API, deduplication and the data type of each eventChatGPT Ads in depth — context hints, measurement, bidding and automationAfter →Custom audiences in ChatGPT Ads: include, exclude and adjust bids with your own dataChatGPT Ads in depth — context hints, measurement, bidding and automationRelatedMeasuring ChatGPT Ads from day one: pixel, conversions and how to read the reportAdvertising in ChatGPT: first stepsRelatedBefore the first euro: the checklist for launching an app campaignAdvertising an app: first stepsRelatedAdvertising an app is not advertising a website: the six differences that catch people outAdvertising an app: first stepsRelatedAdvanced attribution: what data-driven attribution really measures and which decisions it supportsMeasurement II — offline conversions, values, GA4, attribution and lead quality

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 →