📗 This is the user manual for the Suite for ChatGPT Ads, the tool in the Ninja Scripts panel. Here you can search it, listen to it, highlight it and save it to favourites. It is updated with every release of the tool.
Three sister tables, one per level, all behaving the same: the date selector, filters, columns that sort when you click them and a totals row at the bottom.
🏗️ Campaigns
Status · daily budget · objective and bid · how many ad groups and ads it has (live out of total) · impressions · clicks · CTR · conversions · spend · CPC. Each row links to its ad groups.
🧩 Ad groups
Their campaign · status · strategy and bid (with a ⚠️ badge if OpenAI flags a low bid) · how many context hints it has · ads · relevance index with its colour · the metrics. Plus the three ways into what you do with an ad group: 🧭 Hints, 🧪 Lab and 🖼️ Ads.
🖼️ Ads
The full card (headline, line and where it goes: domain plus its utm_content tag), its ad group, its campaign, the status and OpenAI's review status. If an ad is rejected, its badge links straight to 🚫 Rejected.
This table is read-only for creative work: requesting variants, seeing the official preview or archiving happens in the ad group's 🧪 Lab, which is where that logic lives with its confirmation step.
There is no conversions column per ad: OpenAI's API doesn't provide them at that level, and a column of zeros would look like a measurement. Real cost per ad lives in 📈 Report.
Two badges you need to read
«No longer there» · a row with this badge is something that spent money during the period you picked but no longer exists in the account (archived or deleted). It appears on purpose: without it the table's totals wouldn't match the account's, and that spend is real.
«Not serving · its ad group is archived» · an ad can be active and never show, because what's switched off is its ad group or its campaign. OpenAI's API only reports each object's own status, without looking at its parent; the table does look, and tells you the reason alongside. That's the explanation for the «not serving» you see in the Ads Manager.
What you can change from the table
The idea is that you enter the Ads Manager as little as possible:
| From | You can |
|---|---|
| 🏗️ Campaigns | ⏸ pause · ▶️ activate · 💶 change the daily budget |
| 🧩 Ad groups | ⏸ pause · ▶️ activate · 🎯 change strategy and bid |
| 🖼️ Ads | ⏸ pause · ▶️ activate |
Always with confirmation before anything is touched. Underneath it's the same engine as 🎛️ Bids, so it inherits its guarantees: the value is re-read live before writing (the panel's snapshot can lag behind what you did in the Ads Manager), it's confirmed by reading afterwards, it goes into the history and it can be undone.
Two details with their reasons:
- Archiving is not offered here. In OpenAI, archiving is irreversible; it's done from the 🧪 Lab, which saves a copy of the creative first.
- A change you make by hand is not quarantined and not capped: you set whatever figure you want and can touch it again straight away. Quarantine and caps protect against repeated decisions the panel takes (applying a recommendation, a bulk batch), not against your judgement.
The minimum budget
OpenAI requires 15 a day as a minimum in the account's currency. Anything below is rejected, so the forms say so and won't let you type less.