ChatGPT Ads
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.
Event names
You keep using the usual event names. Pixelary sends each one to OpenAI under OpenAI’s name:
| Pixelary event | ChatGPT Ads event |
|---|---|
| PageView | page_viewed |
| ViewContent | contents_viewed |
| AddToCart | items_added |
| InitiateCheckout | checkout_started |
| Purchase | order_created |
| Lead | lead_created |
| CompleteRegistration | registration_completed |
| Schedule | appointment_scheduled |
| Subscribe | subscription_created |
| StartTrial | trial_started |
| Anything else | custom, 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.
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.
Consent
- OpenAI’s script loads only after
ad_storageis granted, and Pixelary tells it the consent state before it starts. - The click IDs
__opprefand__obrefare used only withad_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’sopt_outflag. - 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.