> ## Content Index
> Fetch the complete content index at: https://www.growthcentr.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# ChatGPT Ads Conversions API: Pixel, oppref, and oCPC for B2B Pipeline
- URL: https://www.growthcentr.com/chatgpt-ads-conversions-api/
- Published: 2026-09-07T06:00:00.000Z
- Updated: 2026-09-07T10:35:38.000Z
- Description: ChatGPT Ads Conversions API for B2B: Pixel ID, oppref click matching, event types, dedupe with event_id, and how oCPC still bills per click.
- Author: Alex H
- Tags: AI, Marketing, Guides

As of 31 August 2026, OpenAI said ChatGPT Ads had reached **$1 billion** in annualized revenue run rate and was expanding self-serve Ads Manager across India, Europe, the Middle East, and North Africa. Operators who already understand the [ChatGPT ads auction](https://www.growthcentr.com/chatgpt-ads-auction/) are now googling a different mechanism: how to send pipeline events back so conversion-optimized buying has something real to learn on.

That mechanism is the **ChatGPT Ads Conversions API** (CAPI): a server-side event endpoint that pairs with the browser pixel, carries **oppref** for click matching, and feeds the events oCPC campaigns optimize toward. This guide maps Pixel vs CAPI, the event types that matter for B2B demos and CRM stages, deduplication, attribution windows, and a 30-day setup plan.

## Key Takeaways

✅

Exactly five operator takeaways. Conversions API, oCPC, oppref, and Pixel ID are defined on first use below.

- The Conversions API is OpenAI's server-side event pipe: POST https://bzr.openai.com/v1/events?pid=<PIXEL-ID> with a Bearer API key; batches up to 1,000 events, and one failure fails the whole batch.
- Unlike the pixel, CAPI does not auto-capture oppref (OpenAI's opaque click attribution ID). Capture it on the landing click and pass it on server events for click matching.
- Deduplicate pixel + CAPI by reusing the same id / event\_id (plus the same custom\_event\_name for custom events). OpenAI keeps the first matching event.
- oCPC (conversion-optimized CPC) sets bidding\_type to conversions but still bills per valid click; max\_bid\_micros is a CPA optimization input, not a per-conversion charge.
- Built-in conversion goals lean click / sign-up / purchase. B2B demos and CRM stages usually need custom events or CRM-originated lead\_created / appointment\_scheduled / trial\_started via CAPI.

## What the ChatGPT Ads Conversions API actually does

The **Conversions API** is OpenAI's documented way to send conversion events from your server to Ads Manager. OpenAI states it is a more reliable tracking source than the pixel alone and recommends using it when possible for more accurate insights.

You provision a **Pixel ID** (the pid query parameter that identifies your measurement data source) and a Conversions API key from the conversions tab in Ads Manager. Events POST to **https://bzr.openai.com/v1/events?pid=<PIXEL-ID>** with Authorization: Bearer <API-KEY>. Optional validate\_only=true checks a payload without saving it.

Each event needs an id, a type, timestamp\_ms (Unix ms within the last 7 days and no more than 10 minutes in the future), a data object, and usually action\_source plus source\_url for web. User PII fields (email, phone, names, external IDs) must be SHA-256 hashed after normalization. Geographic fields stay raw strings.

Here's why that matters for B2B: browser pixels miss CRM-only stages, cross-device paths, and ad blockers. Server events let a demo-booked or opportunity-created signal land even when the browser never fired.

📄

Primary docs: OpenAI Conversions API at developers.openai.com/ads/conversions-api. Pair with Ads Manager conversion setup for Pixel ID and API key provisioning.

## Pixel vs Conversions API vs both

Treat the pixel as the browser observer and CAPI as the durable recorder. For serious oCPC, GrowthCentr expects both, with shared event IDs for dedupe.

| Capability           | Browser pixel    | Conversions API                                        | Both (recommended)                              |
| -------------------- | ---------------- | ------------------------------------------------------ | ----------------------------------------------- |
| Where it runs        | Client-side JS   | Your server only                                       | Browser + server                                |
| Auto-captures oppref | Yes (pixel path) | No: you must capture and pass it                       | Pixel helps; still pass oppref on server events |
| CRM / offline stages | Weak             | Strong (lead\_created, custom, appointment\_scheduled) | Best when CRM posts after sales accept          |
| Ad blockers / ITP    | Vulnerable       | More resilient                                         | Server fills gaps                               |
| Batch size           | N/A (per hit)    | Up to 1,000 events; one failure fails the batch        | Keep CAPI batches clean and small at first      |
| Dedupe key           | event\_id        | id                                                     | Reuse the same value on both                    |
| User matching extras | Limited          | Hashed email/phone/external\_id, obref, IP, UA         | Send hashed identifiers when consent allows     |

OpenAI's docs are explicit on hybrid setup: reuse the same value as the API id and the pixel event\_id, send both with the same Pixel ID, and for custom events match custom\_event\_name on both sides. Deduplication uses Pixel ID, event\_name, and id. The first event wins; later duplicates are ignored.

## oppref: the click ID that makes CAPI work

**oppref** is an opaque, OpenAI-provided attribution identifier attached to ad clicks. Pass the original string without modification on the server event when it is available. OpenAI states that, unlike the pixel, the Conversions API does **not** capture oppref for you.

Operator pattern:

- On landing, read the oppref parameter (or equivalent click token OpenAI appends) and store it in first-party storage or pass it into your CRM lead record.
- When a conversion fires (form submit, demo booked, trial started), include that same oppref on the CAPI event.
- Separately, for hybrid pixel + CAPI, forward the pixel's \_\_obref cookie value as events\[\].user.obref (inside user, not hashed) when consent allows.

Without oppref on server events, click-through matching weakens. View-through attribution does not require a separate request field, but it is a reporting metric only (see attribution section below). Bidding still leans on click-through conversions.

## Event types that matter for B2B

Documented event types include appointment\_scheduled, checkout\_started, contents\_viewed, custom, items\_added, lead\_created, order\_created, page\_viewed, registration\_completed, subscription\_created, trial\_started, plus app\_installed and app\_opened for mobile\_app action sources.

For B2B SaaS and services, the useful core is narrower:

| Event type                             | Typical B2B moment                         | Notes                                                                   |
| -------------------------------------- | ------------------------------------------ | ----------------------------------------------------------------------- |
| lead\_created                          | Form submit, content gate, chatbot handoff | First CRM-worthy contact                                                |
| appointment\_scheduled                 | Demo / discovery booked                    | High-signal for pipeline oCPC tests                                     |
| trial\_started                         | PLG workspace or product trial             | Use when trial is the true activation                                   |
| registration\_completed                | Account created without trial              | Weaker than trial for many products                                     |
| custom                                 | SQL, opportunity\_created, PQL             | Requires custom\_event\_name (1–64 chars); cannot reuse a standard name |
| subscription\_created / order\_created | Paid close                                 | Great for revenue; often too sparse for early oCPC learning             |

Built-in Ads Manager conversion goals still lean toward click, sign-up, and purchase style outcomes. Custom CRM stages are where CAPI earns its keep. One practical constraint from OpenAI's conversion-optimized campaign docs (covered in GrowthCentr's auction guide): custom events are not oCPC goals. Plan oCPC around a supported standard conversion event, and still send richer custom/CRM events for reporting and offline matching.

[How the ChatGPT Ads Auction WorksRelevance-weighted second-price auction, context hints, CPC vs CPM vs oCPC, and a 30-day test plan.![](https://www.growthcentr.com/favicon.ico)GrowthCentr](https://www.growthcentr.com/chatgpt-ads-auction/)

## How oCPC uses those events (still billed per click)

**oCPC** (optimized cost-per-click, OpenAI's conversions bidding mode) sets bidding\_type to conversions while billing\_event\_type stays click. OpenAI still charges only when a valid click occurs. The auction determines the actual CPC. The field max\_bid\_micros is a CPA optimization input, not a per-conversion invoice line.

Meaning for operators:

- A conversions campaign can still show a high average CPC if click volume is thin or relevance is weak.
- Judge success on spend ÷ attributed conversions (and sales-accepted leads), not on the bid field alone.
- You cannot flip an existing CPM/CPC campaign to oCPC in place. Create a new conversions campaign.
- One active standard conversion event per campaign. Wire that event cleanly before scaling budget.

OpenAI's public Ads Basics guidance still recommends starting maximum CPC around $3–$5 USD for clicks campaigns. Daily minimums vary by market (operator-reported US floors often cite roughly $25 USD). Do not invent category conversion rates. Instrument first, then read your own CPA.

| Buying mode        | What you optimize toward                       | How you are billed    | Measurement dependency                                   |
| ------------------ | ---------------------------------------------- | --------------------- | -------------------------------------------------------- |
| CPC (clicks)       | Likely clicks                                  | Per valid click       | UTMs + landing analytics may be enough for a smoke test  |
| CPM (reach)        | Impressions                                    | Per 1,000 impressions | Brand / category presence; weak for pipeline             |
| oCPC (conversions) | Clicks likely to convert to the selected event | Still per valid click | Pixel and/or CAPI with a clean standard conversion event |

## Deduplication rules (event\_id)

If the same conversion fires from the pixel and from CAPI, OpenAI deduplicates when:

- Both use the same Pixel ID.
- The API id matches the pixel event\_id.
- For custom events, custom\_event\_name matches on both sides.
- The first event received for that matching key is kept; later duplicates are ignored.

Generate the ID in the browser (or on form submit), stamp it into the pixel event, and pass the same string to your server for the CAPI payload. Retries should reuse the same id so a double-POST does not inflate conversions.

## Attribution windows and what bidding actually optimizes

Per OpenAI's Conversions API docs:

- Click-through attribution uses the configured click window.
- View-through conversions use a fixed one-day window after an eligible impression when that reporting is available for the account.
- If both apply, the click takes precedence.
- The Conversions metric remains click-through. View-through is reported separately at campaign level.
- CPA, post-click CVR, bidding, billing, and conversion optimization remain click-through-based.

So even when view-through numbers look interesting in Ads Manager, oCPC is still learning from click-through conversions. Do not brief leadership that "Conversions" includes 1-day view-through. It does not.

## GrowthCentr's take

💡

GrowthCentr's take: treat ChatGPT Ads CAPI as the minimum measurement layer before serious oCPC. Buy Free/Go conversational demand only when a standard conversion event (demo booked, trial started, or registration) can fire from the server within days of click, with oppref retained. Auction literacy without event plumbing is how teams burn the $3–$5 CPC learning phase.

The team at GrowthCentr sees three failure modes already repeating from Meta/Google CAPI migrations:

- Pixel-only demos that never reach CRM, so oCPC optimizes for form spam instead of sales-accepted pipeline.
- Server events without oppref, so click matching collapses and "conversions" look random.
- Custom CRM events treated as if they were oCPC goals, when OpenAI's conversions campaigns still require a supported standard event.

Run paid ChatGPT units in parallel with organic AI search visibility work. Ads sit under the answer for Free and Go users. Plus, Pro, Business, Enterprise, and Education remain ad-free. A sponsored card does not buy a citation inside the unpaid answer. See [AI search visibility for B2B SaaS](https://www.growthcentr.com/ai-search-visibility-b2b-saas/) for the organic side, and [ChatGPT statistics 2026](https://www.growthcentr.com/chatgpt-statistics-2026/) for demand context.

[Read the ChatGPT ads auction guide](https://www.growthcentr.com/chatgpt-ads-auction/)

## Named downside: who should skip

Skip or keep a token CPC-only test (no oCPC) if any of these are true:

- Engineering cannot ship a server POST to bzr.openai.com within two weeks, or legal blocks hashed email/phone matching.
- The ICP lives on Plus/Business/Enterprise seats that never see ads.
- The only conversion that matters is a sparse enterprise close with no intermediate demo/trial event dense enough for learning.
- The team cannot retain oppref from click to CRM stage.
- Customer acquisition math cannot absorb a $3–$5+ CPC learning phase. Pair this with GrowthCentr's customer acquisition cost guide before scaling.

[What is customer acquisition cost (CAC)?](https://www.growthcentr.com/customer-acquisition-cost/) remains the sanity check: if ChatGPT path CPA cannot beat non-brand Search or paid social alternatives after a clean 30-day instrumented test, starve the channel and move budget back to proven acquisition.

## 30-day CAPI + oCPC setup

### Days 1–7: Pixel ID, API key, and oppref capture

- In Ads Manager conversions tab, provision Pixel ID and Conversions API key.
- Install the pixel on the primary landing template. Confirm page\_viewed fires in a validate\_only or test workflow.
- Capture oppref on every paid landing hit. Persist it to first-party storage and into the CRM/lead payload.
- Define one standard conversion for oCPC (prefer appointment\_scheduled or trial\_started or registration\_completed) and one custom CRM event for reporting only.

### Days 8–14: Server path and dedupe

- Implement POST https://bzr.openai.com/v1/events?pid=<PIXEL-ID> with Bearer auth from your backend or CDP.
- Generate event IDs client-side; reuse as pixel event\_id and CAPI id.
- Hash emails/phones per OpenAI normalization rules before send. Keep batches small; remember one bad event fails the batch of up to 1,000.
- Send timestamp\_ms in real time (within 7 days; ≤10 minutes future).

### Days 15–21: CPC baseline, then oCPC fork

- Run a Clicks campaign first with OpenAI's $3–$5 starting max CPC guidance and tight context hints (see the auction post).
- Confirm post-click events appear in Ads Manager and match CRM counts within an acceptable lag.
- Spin a new conversions (oCPC) campaign aimed at the standard event. Do not convert the CPC campaign in place.
- Keep judging on spend per sales-accepted lead, not on bid field theater.

### Days 22–30: Kill criteria and handoff

- Keep only ad groups where delivered CPC and qualified pipeline beat alternatives (including Google non-brand; see Google Ads statistics 2026).
- Document missing oppref rates and event match rates weekly.
- If match quality is poor, fix capture before raising budget.
- Hand losing conversation themes to organic GEO workstreams instead of forever-bidding on them.

Need the auction mechanics before measurement? Start with the ChatGPT ads auction guide, then come back to wire CAPI.

[Open the auction guide ](https://www.growthcentr.com/chatgpt-ads-auction/) 

## FAQ

#### What is the ChatGPT Ads Conversions API?

The Conversions API is OpenAI's server-side endpoint for sending conversion events to Ads Manager. You POST batches to https://bzr.openai.com/v1/events?pid=<PIXEL-ID> with a Bearer API key. OpenAI describes it as a more reliable tracking source than the pixel alone.

#### Does CAPI capture oppref automatically?

No. OpenAI states that unlike the pixel, the API does not capture oppref for you. Capture the click ID yourself and pass it on the server event for click matching.

#### How do you deduplicate pixel and CAPI events?

Reuse the same value as the API id and the pixel event\_id, with the same Pixel ID. For custom events, also match custom\_event\_name. OpenAI keeps the first event for a matching key and ignores later duplicates.

#### Does oCPC bill per conversion?

No. Conversion-optimized campaigns still bill per valid click. max\_bid\_micros is a CPA optimization input. The auction sets the actual CPC.

#### Which events should B2B teams send?

Prioritize lead\_created, appointment\_scheduled, trial\_started, and registration\_completed. Use custom for CRM stages like SQL. Remember oCPC campaigns optimize on a supported standard conversion event, not arbitrary custom names.

#### What are the timestamp rules?

timestamp\_ms must be within the last 7 days and no more than 10 minutes in the future. Batches support up to 1,000 events; one failure fails the entire batch.

#### Do view-through conversions affect bidding?

View-through uses a fixed 1-day window when available and is reported separately. The Conversions metric, CPA, bidding, and billing remain click-through-based.

#### Where do ads show, and who never sees them?

Ads appear for Free and Go users. Plus, Pro, Business, Enterprise, and Education are ad-free. Measurement quality does not change who is eligible to see the unit.

---

## What to do Monday

Open Ads Manager, create or confirm the Pixel ID, and ship oppref capture on the primary ChatGPT landing URL before spending another learning-week of CPC. In the same sprint, stand up a validate\_only CAPI POST for lead\_created or appointment\_scheduled with a shared event id.

Then read the [auction mechanics](https://www.growthcentr.com/chatgpt-ads-auction/) and [Google Ads statistics 2026](https://www.growthcentr.com/google-ads-statistics-2026/) side by side: ChatGPT paid is a conversational Free/Go channel with second-price clearing; Google remains the query-string benchmark. The operators who win the next phase of ChatGPT Ads will not be the ones who only raise bids. They will be the ones who made pipeline events trustworthy enough for oCPC to have something to learn.

External references: [OpenAI Conversions API docs](https://developers.openai.com/ads/conversions-api?ref=growthcentr.com) and OpenAI's 31 August 2026 note on ChatGPT Ads reaching a $1B annualized run rate while expanding Ads Manager access ([Expanding access to AI with ChatGPT Ads](https://openai.com/index/expanding-access-to-ai-with-chatgpt-ads/?ref=growthcentr.com)).