Skip to content
pixelary Docs

ChatGPT Ads

Pixel + Conversions API New

Pixelary sends your conversions to ChatGPT Ads the same way as to Meta and TikTok: through OpenAI’s pixel in the browser and its Conversions API from our servers, with one event ID so OpenAI keeps one.

1 Get your pixel ID and API key

In OpenAI Ads Manager open Conversions. Copy the pixel ID and create a Conversions API key. The key is needed only for the server copy; the pixel works without it.

2 Connect ChatGPT Ads in the dashboard

In the Pixelary dashboard add ChatGPT Ads to your site and paste the pixel ID and the key. Before saving, Pixelary sends a test event in validate-only mode: a key OpenAI rejects is not saved. If OpenAI can’t be reached, the key is saved with a warning.

3 Test, then go live

In Test mode every server event goes to OpenAI with validate_only: OpenAI checks it and doesn’t record it. Staging addresses always send in this mode. Switch to Live when the test events look right.

Already installed Pixelary for Meta or TikTok? Nothing changes on your site: the same script adds ChatGPT Ads.

Event names

You keep using the usual event names. Pixelary sends each one to OpenAI under OpenAI’s name:

Pixelary eventChatGPT Ads event
PageViewpage_viewed
ViewContentcontents_viewed
AddToCartitems_added
InitiateCheckoutcheckout_started
Purchaseorder_created
Leadlead_created
CompleteRegistrationregistration_completed
Scheduleappointment_scheduled
Subscribesubscription_created
StartTrialtrial_started
Anything elsecustom, with your name as custom_event_name

Custom names are adapted to OpenAI’s format: letters, digits, _ and -, up to 64 characters, so Booked call becomes Booked_call. A name that can’t be written that way is not sent to OpenAI.

Values and currency

Send value and currency as usual. OpenAI takes amounts as whole numbers in minor units, and Pixelary converts them for you: cents for USD, nothing for JPY, three decimals for KWD.

JavaScript
pixelary("track", "Purchase",
  { value: 129.99, currency: "USD", content_ids: ["sku-1"], order_id: "ORD-1001" },
  { event_id: "ORD-1001", user: { email: "jane@example.com" } });
// ChatGPT Ads receives order_created with amount 12999 (minor units) and currency USD.

Deduplication: the first copy wins

OpenAI keeps the first event it receives for the same pixel, event and ID. Pixelary gives the browser and server copies the same event_id, so that works by itself. If your own backend also sends events to OpenAI, use the same ID there, for example your order ID.

  • OpenAI’s script loads only after ad_storage is granted, and Pixelary tells it the consent state before it starts.
  • The click IDs __oppref and __obref are used only with ad_storage.
  • Customer data is hashed in the browser and sent only with ad_user_data.
  • When the visitor denies ad_personalization, events go out with OpenAI’s opt_out flag.
  • If the visitor withdraws consent during the visit, Pixelary tells OpenAI’s pixel at once.

In the EEA, the UK and Switzerland nothing is sent without the visitor’s yes, so a consent banner is required there. Consent & banners

If the site already has an OpenAI pixel

Pixelary detects an existing oaiq on the page and sends its events to your pixel through it, without loading a second copy. To avoid counting conversions twice, remove events that your own code sends to the same pixel, or let Pixelary send them.

Content Security Policy

script-src  https://bzrcdn.openai.com
connect-src https://bzr.openai.com https://bzrcdn.openai.com
img-src     https://bzr.openai.com

Plus Pixelary’s own domains from the HTML snippet guide.

Something here doesn’t match what you see? Write to hello@pixelary.app.