The right KPI on ChatGPT Ads depends on the campaign objective, not on the native report. The report offers six columns, and none of them measures a business result. What follows covers what those columns really say, why CTR cannot serve as a goal, which metric to follow in each case, and how to read a number when OpenAI publishes no benchmarks, as of 25 October 2026.
What does the native report contain?
Six columns per day: impressions, clicks, spend, CTR, average CPC, average CPM. That is all.
Each one says something specific and keeps quiet about something else. Impressions tell you how many times the ad was shown, but not in which conversations or where. Clicks count clicks, not whether the session lasted or bounced. Spend shows what the campaign cost and never what it brought back. CTR gives the share of impressions that produced a click without promising that the click was qualified. Average CPC ignores the cost of a lead or a customer. As for average CPM, it says nothing about how much of your audience you actually reached. Put differently, everything that matters to the business sits outside it.
The report contains no triggering queries. No placement data either, and no demographic breakdown. Conversions are missing too: they come from the OpenAI Pixel, the Conversions API, UTMs and your CRM. A ChatGPT Ads dashboard is therefore built by joining two sources, the native report on one side and advertiser-side measurement on the other.
CTR, a cost lever
CTR measures the fit between the ad and the conversation. It says nothing about what a click is worth.
A high CTR with short sessions costs money. A modest CTR with qualified demos earns it, and no amount of clicking will tell you which of the two you have. Because the auction is a relevance-weighted second price, a well-aligned ad costs less, which makes CTR a relevance signal and a cost lever but never a goal in itself.
OpenAI publishes no reference CTR. An advertiser who sets “a good CTR” as the target is choosing a number whose distribution they do not know, and will end up optimising clicks rather than pipeline.
Which KPI should you follow for each objective?
Each objective has one primary KPI, paired with a control KPI so that nothing hides in a blind spot.
| Campaign objective | Primary KPI | Control KPI | Source |
|---|---|---|---|
| Views | Average CPM | Coverage: impressions on priority ad groups | Native report |
| Clicks | Average CPC | Session quality: pages per session, duration, bounce by UTM | Native report + analytics |
| Conversions, lead gen | CPL, then CAC per qualified opportunity | Lead to opportunity conversion rate | Pixel or Conversions API + CRM |
| Conversions, e-commerce | CPA, ROAS when revenue is passed back | Average order value per campaign | Pixel or Conversions API |
With Views you pay for exposure: CPM is the price, and coverage of the ad groups that matter is the quality. With Clicks you pay for traffic, with CPC as the price and the session as the quality. With Conversions you pay for a result, and this is where the trap sits, because cost per lead is only an intermediate step while cost per qualified opportunity tells the truth.
ROAS only makes sense if revenue reaches your measurement. Without an order value sent through the Pixel or the Conversions API, you stay at CPA. The setup is detailed in our article on measuring conversions.
Reading results by dimension
Start with the ad group, then the ad, then the landing page, and never stop at account level.
An ad group maps to an intent family: problem, comparison, alternative, purchase, pricing. Reading CPL by ad group means reading it by intent, the only reading that tells you where to put budget, since it is the only one where each euro spent stays tied to a precise situation instead of an account-wide average.
At ad level you compare angles at equal intent. Two ads in the same ad group with different CPCs tell you about the message, not about the audience. Useful, and cheap to learn.
The landing page can be isolated from the ad through the UTM. An ad group that clicks well without converting usually points to the page rather than to the hint. All of this assumes a clean account structure, which we describe in our guide to structuring an account.
From signal to action: the diagnosis table
Every anomaly in the report has a small number of causes. Each cause calls for an action, and the table is there so that you do not touch the budget before you have a diagnosis.
| Signal | Likely diagnosis | Action |
|---|---|---|
| Low impressions | Hints too narrow, quiet market, review pending, budget capped | Broaden hints, check review status, add ad groups |
| Low CTR | Title or body not useful, mismatch between hint and ad | Rewrite title and body, test another angle |
| Clicks without conversions | Weak landing page, broken promise, broken tracking | Align the page with the intent, create one page per ad group |
| High CPC | Bid too high, competition, low relevance | Improve hint-ad-page relevance, compare CPC and CPM |
| Conversions not reported | Pixel, Conversions API or UTMs incomplete | QA the tracking before any decision |
| Ad rejected | Ad policy or landing page | Fix assets and destination, resubmit |
Order matters. Check tracking and review status first, because those causes produce wrong numbers, not just bad ones.
How do you read a number without benchmarks?
Against yourself over time, against your other channels and, when one exists, against an external base: a number on its own says nothing.
OpenAI states in its documentation that no benchmarks are published, whether by advertiser, industry or campaign type. A first-week CPL is therefore neither good nor bad. It is isolated. It becomes readable once it sits next to the following week’s CPL, the Google Ads CPL for the same offer in the same month, and the company’s target CAC.
Almost everyone lacks that third reference. It is precisely why the Hiints Index exists: a base of sector reference points (CPC, CPM, CTR, cost per opportunity) built on the accounts we operate, whose values are not published. It does not replace your numbers. What it can do is tell you whether they fall inside the observed distribution or outside it, which is the one judgement a single account can never make about itself.
On our side, we set the primary KPI before launch, according to the campaign objective, so that no number gets promoted to a goal after the fact once the first results are in.