Log in / Create free account🌐 ES☀️

Advanced training · Module 17 — ChatGPT Ads in depth — context hints, measurement, bidding and automation

Optimising ChatGPT Ads without search terms: experiments, a phased calendar and a weekly routine

⏱️ 7 min read · 🤖 ChatGPT Ads 💰 Bids and budgets ✍️ Ads · updated on 2026-09-16

In Google Ads, optimisation usually starts with the search terms report. In ChatGPT Ads, run from OpenAI's Ads Manager, there is no report of conversations or queries at all. There are no device or scheduling adjustments either, and the platform is changing fast.

With so few levers, method makes the difference: what you test, in what order, and when you have enough data to decide.

Readable experiments

One ad group per intent. Hints live at ad group level (lesson 1), and reporting goes down to ad group and ad. If one group mixes "preparing for an official exam" and "classes for children", you will never know which one brings in customers. Split them, and comparing groups is the closest thing you will have to a search terms report.

One variable at a time. Title, text, image or hints: one thing per test. Create each variant as a new ad (it is born paused and goes through review) instead of tweaking the one that works: editing the creative creates another version and another review (lesson 2). That way each variant gets its own row in the report.

Minimum sample. The documentation gives no thresholds. Our rule of prudence: no winner with fewer than about 100 clicks per variant, and no cost-per-lead comparison with fewer than 20-30 conversions per group. And do the maths: with $25 a day (our budget), if a click cost $3-5 (the maximum bid OpenAI recommends starting CPC campaigns with), you would get 5-8 clicks a day, and four ads at 100 clicks each would take seven weeks or more. Small budget, few variants at a time.

💡 Ninja trick: chance moves a count by roughly its square root. With similar impressions, 60 clicks versus 40 add up to 100 (square root: 10), so a difference below twice that root (20) may be noise. Here it is exactly 20: keep waiting.

A phased calendar

Platform and time of day

There are no device bid adjustments, and an ad group's only multipliers, for custom audiences (lesson 6), aren't supported in campaigns targeting the European Economic Area (EEA) or Switzerland. The platform (iOS app, Android app or web, with web split into desktop, iOS web and Android web) is chosen per campaign. If the platform breakdown shows very different costs, bidding differently means splitting campaigns by platform, with volume for both.

The documentation doesn't offer ad scheduling either, but reporting goes down to the hour. If a time slot is consistently bad, your only lever is to activate and pause (also through the API, lesson 8), deciding on closed weeks.

⚠️ Pitfall: reactivating with "activate all" also switches back on whatever you paused on purpose. It happened to us with two retired ads: since then, anything that must not come back gets archived.

Creative fatigue

No ad lasts for ever. If its CTR falls week after week with no changes on your side, don't tweak it: create another variant as a new ad and archive the old one once the new one is approved and serving.

What not to do

How it fits with Google Ads

Weekly routine

One fixed day a week, account by account (or through the API, lesson 8):

Step What you check What you decide
1. Delivery Reviews, rejections, serving_issues (in the API) and spend cap Unblock before optimising
2. Closed week Spend, clicks and conversions by campaign and ad group, excluding today Which intents deserve more budget
3. Ads Variants that have reached the minimum sample Winner, archive the loser, one more variant
4. Hints Real cost per lead by ad group; search terms converting in Google Ads Ad groups for new intents
5. Platform and hour One breakdown per query, several weeks of data Split the campaign? Pause a time slot?
6. Channels Real cost per lead versus Google Ads Budget split
7. Change log Every change, date and reason Knowing what caused what

What to remember

📎 Sources and further reading

⚠️ Free training with no support. Ninja Scripts support channels (email and Telegram) are only for the use of the scripts, not for Google Ads questions or questions about this training.

Pick up here

← BeforeCustom audiences in ChatGPT Ads: include, exclude and adjust bids with your own dataChatGPT Ads in depth — context hints, measurement, bidding and automationAfter →The ChatGPT Ads API: automating campaigns and reports without falling into its trapsChatGPT Ads in depth — context hints, measurement, bidding and automationRelatedChatGPT Ads step by step: account sign-up, brand review and your first campaignAdvertising in ChatGPT: first stepsRelatedChatGPT Ads: what advertising in ChatGPT is and how it differs from Google AdsAdvertising in ChatGPT: first stepsRelatedAds and landing pages in ChatGPT Ads: the card, the image, review and variants you can measureChatGPT Ads in depth — context hints, measurement, bidding and automationRelatedContext hints in ChatGPT Ads: what they are, how to write them and where to find them with evidenceChatGPT Ads in depth — context hints, measurement, bidding and automation

See the full syllabus

🎓
You're reading the Ninja Academy in the open

Create your free account (no card) to save your progress, take the graded quizzes, earn the Basic level certificate and unlock part of the Intermediate and Advanced training.

Create my free account →
🥷

Subscriber feature

This option is part of the Ninja Scripts Suite subscription.

See the subscription →