ChatGPT Ads
What It Does
ChatGPT Ads (OpenAI Ads) is an ad platform: DURUM.ai reads your campaigns, ad groups, ads and above all your daily spend per ad, to show them next to your other ad platforms and compute your cost per lead, per booking and per sale.
You connect with an API key. On connection, DURUM.ai imports the last 30 days of spend, then syncs the last 3 days every hour.
ChatGPT Ads sends no webhooks: this integration creates no event (lead, booking, sale). It feeds spend and your campaign structure.
Before You Start
- An OpenAI Ads Manager ad account (
ads.openai.com) with access to the Settings tab. - The API key is tied to a single ad account: one connection per ad account, one ad account per DURUM.ai client account.
- To attribute leads to ChatGPT Ads, your destination URLs must carry the
utm_source=chatgptparameter (the valuesopenai,oai,chatgpt_adsandopenai_adsare also recognized).
Step-by-Step Connection
- Log in to OpenAI Ads Manager (
ads.openai.com). - Go to the Settings tab, API keys section.
- Click Create key. The key is tied to your ad account. Copy it.
- In DURUM.ai, go to Settings then Integrations, and click Connect on the ChatGPT Ads card (Advertising category).
- In the OpenAI Ads API key field, paste the key (it starts with
sk-ads-). - Click Connect. DURUM.ai checks the key by reading your ad account (name, currency, timezone, review status), stores it encrypted, then imports the last 30 days of spend.
- The message "ChatGPT Ads connected" confirms the connection.
There is only one field to fill in: no account ID to enter, the key designates the account.
Verify It Works
- On the ChatGPT Ads card, check that the status is active and the last sync date is filled in.
- Open the Ads section of DURUM.ai: your ChatGPT Ads campaigns and their spend for the last 30 days should appear.
- The next day, check that yesterday's spend is present: the hourly sync updated it.
Captured Events
ChatGPT Ads exposes no webhook: no event is captured. Here is what the sync reads.
| ChatGPT Ads side | What DURUM.ai records | What it feeds |
|---|---|---|
| Ad account | ID, name, currency, timezone, review status | Integration card, spend currency |
| Campaigns, ad groups, ads | IDs and names, to tie each spend row to its campaign and ad group | Ads section |
| Daily insights at ad level | Per ad and per day: spend, impressions, clicks, cpm, cpc, ctr | Spend, cost per lead, per booking and per sale |
| Lead, booking or sale | none | These events come from your other connections (CRM, forms, payments) and are tied to ChatGPT Ads through utm_source=chatgpt. |
Useful details:
- Sync window: initial 30-day import at connection, then the last 3 days every hour. The current day is updated on every pass.
- Reach: ChatGPT Ads does not provide reach. DURUM.ai records it as 0.
- CTR: recomputed by DURUM.ai from clicks and impressions, expressed as a percentage like the other ad platforms.
- Currency: the ad account's currency.
Troubleshooting
| Problem | Solution |
|---|---|
| "API key invalid or revoked" | Check the key in OpenAI Ads Manager, Settings tab, API keys section. Create a new key and reconnect if needed. |
| "The key is accepted but no ad account is attached to it" | The key is not tied to an ad account. Create it from the ad account you want. |
| "Too many attempts" | Wait 1 minute and try again. |
| "Unable to reach the OpenAI Ads API" | Temporary issue on the OpenAI side. Try again in a few minutes. |
| The card shows a sync error | The key was probably revoked in OpenAI Ads Manager. Create a new key and reconnect: the hourly sync resumes on its own. |
| Today's spend incomplete | Normal: the sync runs every hour and updates the current day. |
| Leads not attributed to ChatGPT Ads | Add utm_source=chatgpt to your ads' destination URLs. |
| Initial import failed, connection active | The connection is kept. The hourly sync covers the last 3 days; the 30-day history can be rerun by disconnecting then reconnecting. |
FAQ
Does the key give access to my ChatGPT account?
No. It only grants access to your ChatGPT Ads ad account. It is encrypted and never displayed in DURUM.ai.
Does the key expire?
No. It stays valid until you revoke it in OpenAI Ads Manager.
I have several ChatGPT Ads ad accounts?
A key designates a single ad account, and DURUM.ai keeps one ChatGPT Ads connection per client account. Use one DURUM.ai client account per ad account.
How do I send my conversions back to ChatGPT Ads?
That is a separate connection, on the conversions side, using the Pixel ID from the Conversions tab of OpenAI Ads Manager. It is not covered on this page.
Why do my ChatGPT Ads amounts differ slightly from OpenAI Ads Manager?
DURUM.ai recomputes CTR from clicks and impressions and records reach as 0. Spend, impressions and clicks are the ones provided by the API, day by day as it returns them.