ChatGPT Ads, judged on revenue.

The OpenAI Ads API reports impressions, clicks and spend. No conversions. Duct reads it beside Stripe and GA4, so you see what the clicks actually bought.

  • Ads API key
  • Reads four datasets
  • Read-only
  • Checked Sep 29, 2026

Listed as OpenAI Ads in the Duct app.

An example answer. Yours is read from your own accounts.
A Duct session: asked what ChatGPT Ads is buying, Duct reads its spend and clicks, follows them through GA4 to Stripe, and writes a brief costing the channel per paying customer
Ask what ChatGPT Ads is buying. Its own report ends at the click, so Duct follows the clicks through GA4 to Stripe and costs the channel per paying customer.

Ask

Questions you can just ask

  • What did this month's ChatGPT Ads spend buy, in money Stripe settled?

    ChatGPT Ads + Stripe
  • Do visitors from ChatGPT engage on the landing page, or leave?

    ChatGPT Ads + GA4
  • Cost per paying customer: ChatGPT Ads or Google Ads?

    ChatGPT Ads + Google Ads + Stripe
  • Which ChatGPT campaign has earned next week's budget?

    ChatGPT Ads + Stripe + GA4

Access

What it reads. What it can change.

What it reads

  • Ad accountnamecurrency
  • Campaignsname
  • Campaign performanceimpressionsclicksspendCTRCPCCPM
  • Daily account totalsimpressionsclicksspend

OpenAI Ads API v1 · checked against the fetch code Sep 29, 2026 · read the source

What it can change

Nothing.

Duct has no ChatGPT Ads change operation, so it cannot edit anything in ChatGPT Ads. It can still recommend a change for you to make there.

Knowledge

What Duct already knows about ChatGPT Ads

  1. 01

    The Ads API cannot see conversions.

    Its metrics are impressions, clicks, spend, CTR, CPC and CPM. Pixel conversions show only in Ads Manager, so Duct never calls the channel good on CPC alone. It checks Stripe.

  2. 02

    Two units from one vendor.

    Insights report spend as a decimal (18.42); the pixel reports cents (1499). Mixing them is a 100× error, so Duct converts before it compares.

  3. 03

    One key, one ad account.

    An Ads API key reaches exactly one ad account. Duct reads which one first, so a key from the wrong account says so instead of looking empty.

  4. 04

    Only the biller knows.

    Every ad platform reports conversions it attributes to itself. Duct reconciles them against Stripe, never against each other.

Read the ChatGPT Ads notes Duct's agent works from

Setup

Connect ChatGPT Ads in three steps

  1. 1

    In OpenAI Ads Manager, create an Ads API key for the ad account you want read.

  2. 2

    In Duct, open Connections, choose OpenAI Ads and paste the key.

  3. 3

    Duct shows which ad account the key belongs to, then reads its campaigns and daily totals.

An Ads API key is scoped to one ad account, and OpenAI grants API access per account while the API is in beta. Duct uses the key only to read; it has no ChatGPT Ads change operation.

Keys and tokens are stored encrypted by Duct's hosted API, never in your browser, and you can remove a connection at any time. A self-host build keeps them on your own machine.

FAQ

ChatGPT Ads, answered

Can Duct see ChatGPT Ads conversions?

No, because the OpenAI Ads API does not report them; pixel conversions show only in Ads Manager. Duct measures the channel against what Stripe settled and what GA4 saw, which is the number that decides the budget anyway.

Does Duct change my ChatGPT Ads campaigns?

No. The connector is read-only. Duct can recommend moving budget between campaigns or channels; you make the change in Ads Manager.

Are ChatGPT Ads and OpenAI Ads the same thing?

Yes. OpenAI sells the ads that run in ChatGPT through its Ads Manager and Ads API. The Duct app lists the connector as OpenAI Ads.

Is it free?

Yes. Duct is free with your own model keys or the ChatGPT plan you already have, and the core is MIT licensed. A paid plan later bundles the models; nothing open today moves behind it. What will cost money.