Skip to content
Code samples below use example values.

ChatGPT Ads

ChatGPT Ads are sponsored placements that appear alongside ChatGPT's answers, sold through OpenAI's own Ads Manager at ads.openai.com. Adsidian runs ChatGPT Ads as a full platform: campaigns, ad groups and ads sync into the dashboard, the AI operator can build and manage them with the usual approvals, and Prism delivers verified conversions with order value and line items.

This page is the onboarding checklist. It covers who does what, the connect wizard step by step, and what to expect once the account is live.

How access works — no app, no OAuth

Unlike Meta, Google, Reddit and LinkedIn, OpenAI has no developer app and no "Sign in with OpenAI" flow. Access is an API key issued inside each ad account, from the account's Settings tab in Ads Manager. One key authorises one ad account. Adsidian stores the key in a locked-down table only the backend can read, never shows it again after you paste it, and never sends it to the browser.

Two consequences for agencies:

  • Every client is a separate connection. There is no agency-level login that spans accounts. Connect each client from that client's Prism setup.
  • Someone with access to the client's Ads Manager has to issue the key. Either the client issues it and sends it to you securely, or the client adds an agency user to the ad account and you issue it yourself.

Before you start

The client (or the agency, if it has a login on the account) needs:

  1. An ad account at ads.openai.com. Self-serve accounts are open to businesses in the US, Canada, Australia, New Zealand, the EU, India and the Middle East as of August 2026, after business verification. The account must be active.
  2. An API key from the account's Settings › API keys. Copy it once; it can be regenerated later, which revokes the old one.
  3. Optionally, a brand icon of at least 128×128 pixels. Adsidian sets it from the client's site automatically in the wizard, so this is only needed if that fails.

Adsidian needs:

  • The client set up in Adsidian with Prism installed on their site. ChatGPT Ads conversion delivery rides on Prism, so the snippet (or the Shopify pixel) must already be live. See Quickstart and Install on Shopify.

Connecting — the wizard

In the dashboard open the client → Prism setupChatGPT AdsConnect. Five steps; each one saves, so you can close and come back.

  1. Connect. Paste the API key. Adsidian looks up the account and shows its name, currency, timezone and review status so you can confirm it is the right one. A key for an inactive account is refused.
  2. Brand icon. An account cannot serve ads until its brand review is approved, and review needs an icon. Click Use site icon and Adsidian uploads one from the client's website and submits it. Review typically clears within minutes; the wizard shows the status. If OpenAI has not enabled brand updates through the API for that account, the wizard says so and you upload the icon in Ads Manager instead.
  3. Conversions. Choose Provision for me. Adsidian creates the pixel, a Conversions API key and the standard conversion events (purchases and leads) on the account, and stores what it needs. On the accounts we have tested this works with a plain self-serve key. If OpenAI returns "not enabled" for the account, the wizard switches to Paste from Ads Manager: create the pixel and Conversions API key in Ads Manager › Conversions and paste both values. The Conversions API key is shown only once by OpenAI, so copy it when you create it.
  4. Test. Sends a validate-only purchase event and shows OpenAI's response verbatim. Green means credentials, pixel and event shape are all accepted; nothing is recorded on the account.
  5. Enable. Turns on delivery. From this moment Prism sends the client's conversions to ChatGPT Ads.

The first sync runs when you enable, and hourly after that.

Identifiers you will see

  • Ad account id looks like adacct_….
  • Pixel ID is a short string of letters and digits, for example UjKXuEftHmFUYTEQgoLpRZ. It is the value in the Conversions API URL.
  • Pixel source id looks like cds_… (OpenAI's docs also show clidsrc_…). It is a different identifier and will not work as a Pixel ID.
  • Event setting ids look like ces_…. These are the conversion goals a campaign can optimise toward.

What Prism sends

Once enabled, Prism delivers server-side conversions to ChatGPT Ads the same way it does for Meta, Google and Reddit, with Prism's event names mapped to OpenAI's:

Prism eventChatGPT Ads event
PageViewpage_viewed
ViewContent / ViewItemcontents_viewed
AddToCartitems_added
InitiateCheckout / BeginCheckoutcheckout_started
Purchaseorder_created
Leadlead_created
CompleteRegistrationregistration_completed
Schedule / AppointmentRequestappointment_scheduled
Subscribesubscription_created
StartTrialtrial_started
anything elsesent as a custom event under its own name
  • Purchases carry full value. Amount, currency and line items (product, quantity, price, and variant such as size or colour) are included.
  • Click reference is captured on landing. Like gclid or rdt_cid, Prism captures ChatGPT's click reference (oppref) from the landing URL with no extra setup, and reads OpenAI's own pixel cookie if the client also runs it.
  • Only hashed identifiers are sent. Email, phone and external ids are SHA-256 hashed before they leave Prism.
  • IP address is sent only when IP anonymisation is off for the client, mirroring Meta CAPI.
  • Consent gating applies unchanged. An event is only sent when the visitor's consent allows it, and a visitor who declines personalisation is flagged to OpenAI as opted out.
  • Shopify and WooCommerce orders arriving by webhook are sent as web events with the order status page as the source, so they count for click-through attribution.

Campaigns, ad groups and ads

After connecting, ChatGPT campaigns appear in the Campaigns tab beside every other platform. You can create them from the campaign wizard or through the operator.

  • Campaign. Name, a lifetime budget (the platform has no per-campaign daily budget), optional schedule, bidding type (clicks by default; conversions when the account has a conversion event and conversion bidding enabled), locations picked from OpenAI's location search, platforms (web, iOS app, Android app), and optional audiences to include or exclude.
  • Ad group. Context hints are the targeting lever: 5 to 15 short phrases describing when the product is useful, such as "gifts for runners" or "sustainable workwear". Plus a maximum bid.
  • Ad. An image card: title up to 50 characters, body up to 100, destination URL (https only), one image from the creative library or a URL, optional price text. No video.
  • Always created paused. Activate from the campaign list once OpenAI's review shows approved on the ad.

Pausing, resuming, renaming and changing the lifetime budget work from the dashboard and the operator. Archiving is permanent on OpenAI's side and asks for confirmation. Ad creative cannot be edited after creation; make a new ad instead.

Catalogue campaigns

For e-commerce brands, a catalogue campaign shows whichever product from the feed fits the conversation.

  1. In Ads Manager › Feeds, create the feed connection and upload the catalogue by SFTP (a Google-Shopping-compatible file with is_ads_eligible set to true on each product). OpenAI has no API for the upload itself.
  2. Copy the feed id (product_feed_…) and register it in Adsidian: client → Prism setup → ChatGPT Ads → Product feeds.
  3. In the campaign wizard choose Catalogue, pick the feed, optionally narrow it with a product set (brand, category, price range, and so on), and write the ad as a product card template: OpenAI fills image, link and price from the product shown.

Product-level spend and clicks appear on the campaign's detail page.

Audiences

From the client's ChatGPT Ads card you can create hashed customer audiences from recent purchasers, all leads, or a pasted list of emails, and refresh them later. Use them to retarget or, more often for DTC, to exclude existing buyers from prospecting campaigns. OpenAI requires a minimum matched size before an audience can be included; small audiences can still be used for exclusion.

Limits worth knowing

  • Lifetime budgets only, so the group daily-budget tools skip ChatGPT rows.
  • Image cards only, 50/100 character limits, no video.
  • Every ad is reviewed by OpenAI and shows its review status in Adsidian. Rejections come with a policy reason.
  • Custom events cannot be optimisation goals. Only standard events such as order_created or lead_created.
  • Conversion bidding depends on the account. The wizard reports whether it is available.
  • View-through conversions are reported by OpenAI separately and are never added into Adsidian's ROAS.

Troubleshooting

SymptomLikely cause / fix
"Invalid API key"Mistyped, revoked or regenerated in Ads Manager. Issue a fresh key from Settings › API keys and paste it again.
"This ad account isn't active"The account has not finished OpenAI's business verification or has been suspended. Resolve in Ads Manager.
Brand review stays "rejected: missing favicon"Run the brand icon step again, or upload a 128×128 or larger icon in Ads Manager.
"Partner enablement required"OpenAI has not enabled that API capability for the account. Do the step in Ads Manager instead, and ask OpenAI at openai.com/advertisers to enable partner access.
"Conversions not configured"Finish the conversions step, by provisioning or by pasting both the Pixel ID and the Conversions API key.
Test event failsThe wizard shows OpenAI's response verbatim. It names the field or credential that is wrong.
Campaign create is refused with "account not approved"Brand review has not cleared yet. Wait for approval, then create.
No spend showing after a dayCheck the ad's review status and that the campaign is active. Spend syncs hourly.
Not sure conversions are arrivingPrism Review and the diagnostics view show whether recent events reached ChatGPT Ads.

Next

Adsidian Prism — first-party server-side tracking.