DarlingtonChatGPT AdsGuidesConversions API
Technical

ChatGPT Ads Conversions API: Setup and Verification

The pixel alone isn't enough. Here's how to implement the ChatGPT Ads Conversions API so your server-side events reach OpenAI accurately — and how to verify it's working before you scale spend.

Alex Darling
Darlington
·Last updated May 22, 2026 ·10 min read
What you'll learn
  • Why the pixel alone loses 20–35% of conversion events
  • The three CAPI implementation methods and when to use each
  • Required customer data parameters for high match rates
  • How to verify your CAPI is working correctly before scaling

Why CAPI is non-negotiable

Browser-based pixels fire from the user's browser. That means they're subject to ad blockers, iOS Intelligent Tracking Prevention, cookie consent rejections, and browser crashes. The result: a meaningful percentage of your real conversions never get reported to ChatGPT Ads — and the algorithm optimises toward incomplete data.

The Conversions API bypasses all of this by sending event data directly from your server to OpenAI's endpoint. The user's browser doesn't need to do anything. The event fires reliably, every time.

What changed

OpenAI's CAPI architecture closely mirrors Meta's Conversions API — same hashing requirements (SHA-256), similar event schema, similar deduplication logic using event_id. If your dev team has implemented Meta CAPI before, the adaptation is straightforward.

Three implementation methods

Method 1: Direct API integration (recommended for developers)

Your backend sends a POST request to OpenAI's CAPI endpoint every time a conversion event fires. This is the most reliable implementation — no third-party dependencies.

POST https://ads-api.openai.com/v1/events { "pixel_id": "YOUR_PIXEL_ID", "access_token": "YOUR_ACCESS_TOKEN", "data": [{ "event_name": "Purchase", "event_time": 1716393600, "event_id": "unique-event-id-123", "user_data": { "em": ["hashed_email"], "ph": ["hashed_phone"], "client_ip_address": "123.45.67.89" }, "custom_data": { "value": 149.00, "currency": "USD" } }] }

Method 2: GTM server-side container

If your team uses Google Tag Manager, a server-side GTM container can route events to OpenAI's endpoint without custom dev work. This is the fastest path to CAPI for non-technical teams.

  1. Set up a GTM server-side container (requires a server endpoint — use Google Cloud Run or a similar host)
  2. Install the OpenAI CAPI tag template from the GTM Template Gallery
  3. Configure triggers to fire on your key conversion events
  4. Map user data parameters (email, phone, IP) to the tag

Method 3: Platform native integration

Shopify, WooCommerce, and major CRMs have native integrations that connect directly to OpenAI's CAPI endpoint. Install the app/plugin, connect your ChatGPT Ads pixel ID, and events fire automatically on purchase and lead events.

Need help implementing CAPI correctly?
Get a free account audit — we'll check your current tracking setup and identify what's being missed.
Get a free audit →

Customer data parameters

CAPI's match rate depends on how much user data you send with each event. OpenAI hashes all customer data before it reaches their systems — you're sending SHA-256 hashed values, never raw PII.

Priority order for match rate:

  1. Email (em): Highest match rate. Lowercase and trim before hashing.
  2. Phone (ph): Include country code, digits only, before hashing.
  3. Client IP address: Available on all server-side requests — always include.
  4. User agent: Pass the original browser user agent string from the request headers.
  5. External ID: Your internal user ID — helps with repeat visitor matching.
Common mistake

Sending CAPI events without customer data parameters. An event with no user data signals has a near-zero match rate — OpenAI can't connect the server event to an ad impression without at least one user identifier. Always pass at minimum email or IP + user agent.

Deduplication

Running both pixel and CAPI means you're sending the same event twice. Without deduplication, ChatGPT Ads counts both — inflating your conversion numbers by up to 2x.

The fix: use a unique event_id on every event, in both the pixel and the CAPI call. The value must be identical for the same event. OpenAI will match and deduplicate them automatically.

Verifying your CAPI setup

In ChatGPT Ads Manager → Events Manager, you'll see:

  • Event status: Active, Inactive, or Warning
  • Match quality score: How well your user data is being matched (aim for 7+/10)
  • Deduplication rate: Percentage of events being deduplicated (confirms dual-layer is working)
  • Event breakdown: Browser vs server events, by event type
CAPI Implementation Checklist
Implementation method chosen (direct API, GTM server, or platform native)
Pixel ID and access token configured in CAPI endpoint
Customer data parameters included (email, phone, IP, user agent)
SHA-256 hashing applied to all PII before sending
Unique event_id parameter on both pixel and CAPI events
Events firing verified in Events Manager
Match quality score above 7/10
Deduplication rate confirmed in reporting
Darlington recommendation

Before scaling any ChatGPT Ads spend, run a 7-day CAPI validation period. Compare CAPI-reported conversions against your backend order/lead data. They should match within 5–10%. Any larger discrepancy means events are either not firing, not being matched, or being double-counted.

Frequently asked questions
Is CAPI required to run ChatGPT Ads?
No — you can run ads with pixel-only tracking. But your optimisation data will be incomplete, and smart bidding will learn from inaccurate signals. We strongly recommend CAPI before meaningful spend.
How long does it take to see CAPI data in the platform?
Events typically appear in Events Manager within 1–2 hours of firing. Allow 24–48 hours for attribution to update in campaign reporting, as conversion windows can delay when conversions are assigned to campaigns.
Does CAPI work for lead generation (not just ecommerce)?
Yes. Send a Lead event from your server when a form is submitted (ideally from your CRM webhook, not just the thank-you page) to capture leads even if the user navigates away before the pixel fires. Pass email as the user data parameter for highest match rates.
D
Darlington
Paid Media Agency · $50M+ Annual Ad Spend Managed
Darlington manages Google Ads, Meta Ads, ChatGPT Ads, and Vibe CTV for revenue-focused businesses. Founded by Alexander Darling.
Know your account could perform better?
Alex will personally review your current ad accounts and show you what we would improve.
Get a free account audit →