pixellint

ChatGPT Ads Manager Conversions Is Click-Through Only; View-Through Sits in a Different Column

On October 5, 2026, OpenAI published a measurement update for ChatGPT Ads: more partner integrations, visual ad tests during image generation, and reporting paths advertisers already use on other channels. Trade coverage the same week described bulk product campaigns and deeper reporting exports. Every headline lands in the same ad ops inbox as last week invalid-click study. They still describe different columns in different products.

OpenAI developer documentation is explicit about the split. Web events can receive view-through credit when the account supports it, but Ads Manager reports view-through conversions as a separate campaign-level metric. They are not included in Conversions, which remains the click-through conversion total. CPA, post_click_cvr, bidding, billing, and conversion optimization also remain click-through based.

A DSP that pipes Ads Manager Conversions into a bidder training feed without reading view_through_conversions from the conversions insights API is not simplifying reporting. It is dropping every outcome that credited an impression without a click, or it is double-counting when someone adds partner MMP totals on top of the click-through column.

What Conversions actually counts

In OpenAI reporting model, an attribution window is the period after an ad interaction during which an outcome can be credited. GET Insights endpoints and POST /v1/conversions/insights share the same reporting settings. Defaults are commonly described as a 30-day click window and a one-day view window, with attribution_time_basis defaulting to ad_event_time unless you choose conversion_time.

Goal conversions in summary rows include click-through and view-through counts within the selected windows when you request them through conversions insights. The Conversions field many buyers watch in campaign dashboards is narrower: click-through goal conversions only. post_click_cvr divides by clicks, not impressions, using that same click-through numerator.

View-through attribution does not use a separate request or event field on bzr.openai.com. You still POST order_created or lead_created with timestamp_ms and, for click credit, oppref you captured yourself. Whether view-through reporting appears is an account and product reporting feature, not a second event type you can omit from QA because the pixel already fired.

Where the October reporting expansion lands

OpenAI October 5 newsroom post names Tealium, Hightouch, LiveRamp, and a long list of MMP and measurement partners for Conversions API and reporting. Kochava and roughly ten other partners were cited for web and app outcome measurement. That expansion helps media mix modeling inside tools advertisers already reconcile against Google and Meta.

Partner dashboards optimize their own deduplicated rows. They do not replace reading OpenAI field definitions when you map API exports into a DSP warehouse. A partner can show attributed revenue while Ads Manager Conversions stays flat because the partner includes view-through under its own rules and OpenAI click-through column does not.

Bulk product campaigns and catalog-style buying, described in trade press on October 6, increase the number of SKUs and events competing for the same reporting keys. When each SKU fires order_created, the insights API can return order_created_attributed_sales as an unrounded decimal string on summary rows. That sales field spans goal and non-goal order_created events when requested in include. It is still not the same object as Conversions used for CPA.

Why DSP ad ops get blamed for empty or inflated totals

As ad ops at a DSP, you see the tag-manager fire and the vendor event count in test tools. You cannot change the ChatGPT app or the bidder feature store schema. The DSP has to match a conversion to a click or an impression before the bidder can train on it, which means your export job must know which OpenAI column is click-through-only and which API adds view_through_conversions.

A common failure mode this month: engineering maps MMP postbacks into the bidder while finance watches Ads Manager Conversions. View-through orders exist in OpenAI reporting but never enter the model because nobody requested conversions insights with view windows enabled. The opposite failure: someone sums click_through_conversions and view_through_conversions into the same key as Meta blended Purchase count and wonders why CPA looks artificially low.

Hybrid pixel plus server setups still dedupe on Pixel ID, event type, and id. That dedup is ingest hygiene. It does not tell you which reporting column the media team will paste into the DSP at month end. validate_only on bzr.openai.com proves JSON shape. It does not populate view_through_conversions in Ads Manager.

Two reporting surfaces for the same campaign week

OpenAI documents both shapes. Your ETL must not treat them as one column.

GET campaign insights (simplified):
  Conversions: click-through goal conversions only
  post_click_cvr: uses click-through conversions / clicks

POST /v1/conversions/insights (summary row):
  conversions: click + view goal conversions in selected windows
  click_through_conversions: goal count from clicks
  view_through_conversions: goal count from views (0 if view window = 0)

The block above is the reconciliation spine. If your warehouse only stores the first row Conversions field, you are optimizing reporting for click-through outcomes while the buyer brief mentions view-assisted sales from ChatGPT impressions. If you store the second row conversions total without storing click_through_conversions separately, you cannot reproduce OpenAI CPA or post_click_cvr checks.

Attribution_time_basis matters when you compare to MMPs. ad_event_time attributes outcomes to the date of the ad interaction. conversion_time attributes to the date the conversion occurred. OpenAI notes conversion-time reporting has limited coverage of non-goal events. Mixing bases within one dashboard week creates false deltas that look like CAPI breakage.

Read the sibling pixellint.org post on invalid clicks before you blame ingest for spend quality. Datacenter landings and missing oppref are real problems. They do not change the fact that Conversions in Ads Manager was never meant to equal every credited outcome.

CAPI ingest still feeds both attribution types

The Conversions API on bzr.openai.com remains the durable join for order_created with timestamp_ms in milliseconds and optional oppref for click matching. Unlike the pixel, the API does not capture oppref for you. A perfect POST does not automatically appear in view-through columns; eligibility is reporting-side.

Recent events sampling endpoints return roughly the last fifteen minutes for troubleshooting. Insights endpoints are for attributed historical totals. Teams that only poll the sample during launch and never schedule conversions insights jobs will miss view-through drift after budgets scale.

Conversion-optimized campaigns attach exactly one active standard conversion event setting at creation. Custom events cannot optimize bidding. That constraint means your reporting split is not only a finance issue. It is which event type the bidder chases when Conversions in UI is click-through based.

Checklist at the DSP

View-through conversions use a fixed one-day window after an eligible ad impression. Ads Manager reports view-through conversions as a separate, campaign-level metric. They are not included in Conversions, which remains the click-through conversion total.

OpenAI Ads Conversions API

What to do before the next budget step-up

Run one labeled purchase and one view-assist scenario if your account supports view-through reporting. Pull campaign insights and conversions insights for the same entity ids, time range, windows, and time basis. Put the three numbers side by side: Conversions, click_through_conversions, view_through_conversions.

Pixellint is not affiliated with OpenAI. Lint the events[] you POST to bzr.openai.com with the OpenAI pack. That pass does not validate insights JSON; it protects ingest while you fix reporting mapping.

October partner expansion will keep adding dashboards that can all look correct in isolation. Ad ops at the DSP owns the mapping into training and billing. Name the column, cite the API field, and stop expecting Conversions to mean all credited outcomes.

When finance asks why ChatGPT ROAS diverges from Google while spend scales, start with the export schema before you reopen hashing or consent tickets. The answer is often a column definition, not a broken pixel.

Sources

Contract pages

The dated argument is above. These pages are the field lists.

Open the OpenAI CAPI pack Docs