How to Track ChatGPT Ads Conversions in WordPress

Yes. ChatGPT Ads conversions can be measured on WordPress using OpenAI's advertising measurement tools. The setup can combine the OpenAI Ads Measurement Pixel with conversion events and, optionally, the Conversions API.

Last updated: 22 September 2026. Written by PixelBridge team.

ChatGPT Ads use the same measurement stack as other OpenAI ads. There is no separate ChatGPT-only pixel. This page explains how to measure those conversions on WordPress, whether you install the tools yourself or with a plugin.

Can ChatGPT Ads conversions be tracked in WordPress?

Yes. WordPress can send the events OpenAI uses to measure ChatGPT Ads, but the CMS does not do it by itself. You need a Pixel ID from Ads Manager, the Measurement Pixel on public pages, conversion events that fire after a real outcome, and a consent rule if measurement is optional on your site.

The campaign still lives in the ads account. The website only reports what happened after the click or visit. Field names and required payloads are defined in OpenAI's conversion tracking, Measurement Pixel and Conversions API documentation.

How ChatGPT Ads measurement works

A click can land on WordPress with an oppref query parameter. The Measurement Pixel reads that value, stores it, and sends events such as a page view or a confirmed lead. If you also use the Conversions API, WordPress can send the same action from the server after the form, booking or order is stored.

Click-through measurement uses that click identifier. View-through reporting, when it is available for the account, does not need a different event payload. Ads Manager keeps view-through conversions separate from the click-through conversion total.

Use a standard event name when one matches the action. The names that matter most on WordPress are page_viewed, lead_created, appointment_scheduled, registration_completed and order_created.

OpenAI Ads Measurement Pixel

The Measurement Pixel is the browser SDK. You add it to the pages where conversions can happen, initialize it with a Pixel ID, and call it when the action occurs. The Pixel ID comes from the conversions area of Ads Manager. The browser snippet does not use an API key.

The SDK captures oppref from the landing URL, stores it in a first-party __oppref cookie, and can also keep a browser reference in __obref. Those details are handled by the pixel. You still choose which events to send, and you still have to wait for consent when your site requires it.

See What is the OpenAI Ads Pixel? for the definition, and OpenAI Ads Pixel for WordPress for the WordPress setup.

Installing the Pixel in WordPress

Install one loader, site-wide, on public pages. A theme snippet plus a plugin will send the same page view twice.

  1. Create or copy the Pixel ID in Ads Manager.
  2. Load the Measurement Pixel through WordPress, not by pasting it into a theme file you will overwrite later.
  3. If consent is required, keep measurement off until it is granted. OpenAI's pixel supports a consent flag for this.
  4. Confirm the script loads for a logged-out visitor.
  5. Send page_viewed once per public page view before you add conversion events.

PixelBridge is already released. Install it from WordPress.org, then enter the Pixel ID in the plugin settings. The steps are in How to install the OpenAI Ads Pixel on WordPress. WordPress plugin behaviour itself is documented by WordPress.

If the site uses a Content Security Policy, the pixel needs the OpenAI script and event hosts allowed. The current host list is in the Measurement Pixel documentation.

Tracking page_viewed

page_viewed records that a public page loaded. It is not a lead and not an order.

Send it once after the pixel is allowed to measure. Do not send it on admin screens, heartbeat requests, or every AJAX fragment of a page builder. A contact page view is still only a page view.

Tracking lead_created

lead_created is a completed enquiry. Fire it when the form plugin confirms the submission, not when the page loads and not when someone clicks the button before validation succeeds.

On WordPress that confirmation is usually a success hook from Elementor Forms, Contact Form 7 or WPForms. One confirmed submission should produce one event. A second genuine submission can be a second lead.

Tracking appointment_scheduled

appointment_scheduled means a booking exists. Opening a calendar page, or selecting a timeslot inside an embed, is not a booking.

Many scheduling tools finish inside an iframe. The WordPress page that contains the embed will not see the confirmation unless the tool exposes a callback your site can listen to. PixelBridge does not yet include Cal.com, Calendly, Amelia or Bookly connectors. Until you have that confirmation signal, do not send the appointment event.

Tracking registration_completed

registration_completed fires after an account, membership or course signup exists. A visit to the registration form is page_viewed. A failed password check is not a registration.

On WordPress, the reliable moment is after the user is actually created, or after the membership plugin's success hook. Send the event once. A welcome page refresh should not create another registration.

Tracking order_created

order_created is the purchase event. OpenAI's examples use this name, with an amount in the currency's minor unit when you send a value. A product view, add to cart, or checkout page load is not an order.

Wait until WooCommerce has created the order and it has reached the status your shop treats as real, often processing or completed. Include a stable event ID if a server event will be sent for the same order. Do not invent a second ID on the thank-you page.

Commerce events such as contents_viewed, items_added and checkout_started exist, and they are useful as funnel steps. They do not replace order_created.

What is oppref?

oppref is the opaque click identifier OpenAI adds to the landing page URL. The Measurement Pixel reads it and stores it in the __oppref cookie so a later page can still use it. The Conversions API does not read the URL for you. If you send a server event, pass the original oppref string unchanged on that event.

Do not hash it, trim it into a new format, or replace a missing value with a guess. Full detail: oppref attribution.

What is obref?

obref is a browser reference created by the Measurement Pixel and stored in the __obref cookie. It is not the click ID. For a server event, it belongs in the user object, and OpenAI's docs say to pass it without hashing.

Read and forward that cookie only when measurement consent allows it. If consent is withdrawn, stop sending it. oppref is an event-level field. obref is not.

Browser Pixel vs Conversions API

Measurement PixelConversions API
Where it runsThe visitor's browserYour server
Best atPage views and actions that happen on the pageActions WordPress has already stored
Main limitBlockers, closed tabs, consent and content security policyYou must pass oppref yourself, and you need an API key
Required for every siteThe usual starting point for on-site eventsOptional, and useful when the browser event is unreliable

OpenAI describes the Conversions API as a more reliable source than the pixel alone, and recommends using it when you can. A browser-only setup can still measure conversions. Sending both is the resilient option, as long as they share an event ID. Setup comparison: OpenAI Ads Conversions API.

Event deduplication

If the pixel and the Conversions API both send the same conversion, reuse one ID. On the pixel that value is event_id. On the API it is the event id. Both events need the same Pixel ID and the same event name. OpenAI keeps the first matching event and ignores the later duplicate.

One form submission gets one ID. One WooCommerce order gets one ID. Refreshing the confirmation page must not mint a new one. A second real order can be a second conversion.

If advertising measurement needs permission, do not send events before that permission exists. OpenAI's pixel can be initialized with consent off, and it will not send measurement pings until consent is turned on. Turning consent off also clears __oppref and __obref.

The same rule applies to server events and to forwarding obref. A cookie banner is still your consent tool. This page is not legal advice. Implementation notes: consent.

WooCommerce conversion tracking

WooCommerce already has the order ID, total and status. Map a confirmed order to order_created, not to a checkout page view. Decide whether the value includes tax and shipping, then use that same rule in the browser and on the server. Amounts in OpenAI's event examples are integers in the currency's minor unit.

PixelBridge includes a WooCommerce integration for this event. Store configuration remains in WooCommerce's documentation. The event model for this site is on the WooCommerce integration page.

Elementor Forms

Send lead_created from the form's success state. Elementor often submits without a full page load, so a button click listener fires too early and also fires on validation errors.

PixelBridge listens for a successful Elementor Forms submission. The mapping is described on the Elementor integration page.

Contact Form 7

Contact Form 7 can show a success message after the mail is sent, including on the same page. The lead event belongs on that successful send, not on the page that contains the form.

PixelBridge can send lead_created after a successful Contact Form 7 mail. See Contact Form 7.

WPForms

A WPForms entry that has been saved is the confirmation you want. Page load of the form, and a failed required field, are not leads.

PixelBridge can map a successful WPForms submission to lead_created. See WPForms.

How to test whether tracking works

A script in the page source is not a test.

  1. Use the Pixel ID for the ads account you will inspect.
  2. Open the site logged out. Grant measurement consent if the banner requires it.
  3. Land with a real or test oppref if you have one, then open a second page and confirm the value is still available.
  4. Complete one action: a form, a registration, or a staging order.
  5. Confirm that event was sent once, with the expected name.
  6. If you also send a server event, confirm both sides share the same ID.
  7. Reload the confirmation page and confirm the conversion is not sent again.

OpenAI's pixel has a debug option that logs SDK activity in the browser console while you test. PixelBridge diagnostics show whether the pixel initialized, whether consent allowed measurement, and whether recent events were sent. The debug path is in troubleshooting.

Common implementation problems

What you seeUsual cause
No events at allPixel never loaded, consent stayed off, or a content security policy blocked the script
Page views onlyThe success hook never ran, or the event is tied to a click instead of a confirmed action
Two conversions for one orderBrowser and server events used different IDs
No click attributionoppref was stripped by a redirect or URL cleaner before the pixel could read it
Staging orders in the live accountThe same Pixel ID is used on staging and production
Appointment events never arriveThe booking finished inside an iframe and WordPress never saw a confirmation

Using PixelBridge

PixelBridge is an independent WordPress plugin for this setup. It is not an official ChatGPT or OpenAI product. It loads the Measurement Pixel, maps the events above, can send Conversions API events, and keeps oppref available for later events when consent allows it.

WooCommerce, Elementor Forms, Contact Form 7 and WPForms are supported. Booking plugins are not supported yet. You do not need the plugin to follow the rest of this page. The product page is PixelBridge for WordPress.

The wider measurement model, including events that are not specific to ChatGPT, is in OpenAI Ads conversion tracking.

FAQ

Do ChatGPT Ads use a different pixel?

No. ChatGPT Ads measurement uses the OpenAI Ads Measurement Pixel and the same event names.

Do I have to use the Conversions API?

No. Browser events can be enough. Add the Conversions API when you want a record of actions WordPress has confirmed, especially if the thank-you page is easy to close or the pixel is often blocked.

Can I measure leads without WooCommerce?

Yes. lead_created, appointment_scheduled and registration_completed are standard events. order_created is only for a completed order.

Should I send add to cart as a purchase?

No. Add to cart is items_added if you choose to measure it. The purchase event is order_created.

Where are the official event rules?

Use OpenAI's Measurement Pixel and Conversions API docs. They are the contract if a field changes.