// tracking

Measuring ChatGPT Ads Conversions: Pixel, API, UTM and CRM

The native report has six columns and no conversions. OpenAI Pixel, Conversions API, a UTM convention, events by business model and CRM reconciliation.

Hiints team · Published 25 October 2026

Updated 25 October 2026.

The native report in OpenAI’s Ads Manager gives you six columns a day (impressions, clicks, spend, CTR, average CPC, average CPM) and no conversions at all. Measuring ChatGPT Ads conversions therefore means adding three layers: the OpenAI Pixel or the Conversions API to send events, a UTM convention so every click can be found in your analytics tool, and CRM reconciliation to carry a click all the way to an opportunity.

What the native report leaves out

The native report delivers six delivery metrics, per day, per campaign, ad group and ad, and nothing about what happens after the click. It says nothing either about what triggered the impression.

Impressions, clicks, spend, CTR, average CPC and average CPM are all there. Conversions are not: they come from the OpenAI Pixel and the Conversions API. As for the triggering queries or conversations, placement data and demographic breakdown, they exist nowhere on the advertiser side, because OpenAI shares none of it. The same goes for industry benchmarks, which OpenAI does not publish.

Two things follow. First, your account structure becomes your only analysis tool: one ad group per family of intent, or the six columns cannot be interpreted. Second, conversion is measured on your side and never on OpenAI’s, which is what the rest of this guide is about.

Pixel or Conversions API: where to start?

Start with the Pixel, then make it reliable with the Conversions API. The Pixel goes in within an afternoon on the browser side; the Conversions API sends events from your server and survives ad blockers as well as lost cookies.

OpenAI Pixel Conversions API
Where it runs The user’s browser Your server or CRM
Setup One script on the pages, one call per event Server-side development
Fragility Blockers, refused consent, cleared cookies Low, the event leaves from your system
What it enables Conversions objective, fast first numbers Late events: qualified opportunity, closed deal
Recommended order First Next, without removing the Pixel

The procedure comes down to five steps.

  1. Install the Pixel on every page of the site, not only on the landing page.
  2. Fire the main event on the conversion page or action, never when the landing page merely loads.
  3. Test with a real click from an approved ad and check that the event shows up.
  4. Connect the Conversions API for everything that happens outside the browser: qualified opportunity, server-validated order, attended appointment.
  5. Deduplicate, because the same event sent by both the Pixel and the API must carry the same identifier.

Until the Pixel reports something, the Conversions objective has nothing to optimise on. Launch on Clicks, and switch to Conversions once the events are verified.

One UTM convention, and only one

Use a single convention on every ad from day one: it gives you, in your analytics tool, what the native report does not, namely post-click behaviour by ad and by family of intent.

Parameter Value Example
utm_source chatgpt utm_source=chatgpt
utm_medium cpc or cpm depending on the objective utm_medium=cpc
utm_campaign Exact campaign name utm_campaign=leadgen-uk-q4
utm_content Ad identifier or angle utm_content=title-pricing-v2
utm_term The ad group’s family of intent utm_term=compare-tools

Write everything in lowercase with no spaces. Have utm_campaign repeat the exact campaign name from Ads Manager, otherwise reconciliation turns into manual work. And treat utm_term as the carrier of intent rather than a keyword: it is the most useful dimension of the channel, and the only one you can create yourself.

Which events should you track for your model?

One main event, which defines success, and secondary events, which show where the journey breaks. The main one depends on the business model.

Model Main event Secondary events
Lead gen lead_created page_viewed, appointment_scheduled
SaaS trial_started or subscription_created registration_completed, lead_created
E-commerce order_created checkout_started, items_added, contents_viewed
Local service appointment_scheduled lead_created, page_viewed

The classic trap is to optimise on an event that sits too early in the journey. page_viewed comes in quickly and in volume, but it cannot tell a visitor from a buyer. If the main event is rare at launch, keep it as the main event and read the secondary ones to diagnose; redefining success to get more comfortable numbers is the worst way out.

From click to opportunity through the CRM

To tie a click to an opportunity, store the UTMs on the contact when the form is submitted, then follow them through the CRM. Without that, you are measuring leads, not value.

  1. Capture the five UTM parameters in hidden form fields and write them to the CRM contact record at creation, never overwriting them.
  2. Link the contact to the opportunity, then to its stage: qualified, demo done, won, lost.
  3. Send the late stages back to Ads Manager through the Conversions API, with the click identifier if you kept it.
  4. Read a five-column table every week: family of intent, clicks, leads, opportunities, cost per opportunity.

That reading is what settles things. One ad group can show the best CTR in the account and produce no opportunity at all, while another costs more per click and closes; the native report cannot see the difference, the CRM can.

The HR SaaS case published in Leverage’s September 2026 white paper reads exactly this way: over 30 qualified demos a month, 12 SQLs, a CPL of around €250, a demo-to-SQL conversion rate above 70% and a final customer CAC 22% below Google Ads. It must not be taken as a promise of generalisable results. What it shows is what CRM reconciliation lets you say, and what a six-column report never will.

How do you read the first numbers?

With six signals, each tied to a diagnosis and an action; most first-week problems are in this table.

Signal Likely diagnosis Action
Low impressions Intent too narrow, small market, review or policy pending, budget Widen hints, check status, add ad groups
Low CTR Unhelpful copy, poor alignment with intent Rewrite title and body, test other angles
Clicks without conversions Weak page, broken promise, broken tracking Align the page, build one page per intent, retest the Pixel
High CPC Bid, competition or insufficient relevance Improve relevance, compare CPM and CPC
Conversions not reported Incomplete tracking QA Pixel, Conversions API and UTM
Rejection Ad policy or landing page Fix assets and destination

Read these signals in journey order: delivery, click, conversion. A campaign with no impressions does not have a landing page problem. One that has clicks and zero conversions has a tracking problem to rule out first, and only then a page problem.

That leaves the question of what a “normal” CPC is. Since OpenAI publishes no benchmarks, we compare a CPC against the Hiints Index, our base of sector benchmarks built on our own accounts.

The landing page is the second suspect after tracking: ChatGPT Ads landing pages. If the campaign is not live yet, start with creating your first campaign. Throughout all of this the CRM stays yours: we do not replace it, we wire it into the channel.

// shall we talk?

Want to see these numbers on your own account?

Free setup, done in under 48h. We read your first results against the Hiints Index.

Book a call

30 minutes · no commitment · zero pitch