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
- Week 1: delivery and measurement. Check that the campaign serves and that conversions and visits arrive with their UTM. Our 8 approved ads didn't get a single impression until the account's brand review finished (lesson 5).
- Weeks 2-4: ads and hints. Where the biggest gains are: messages, images and groups.
- After that: bids and conversions. Adjust bids (lesson 3) and, once there is volume, move to Conversions. The objective and the event can't be changed: it will be a new campaign, with a single standard event (custom events can't be used for optimisation). How much? The documentation doesn't say; our criterion is several dozen a month.
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
- Change something every day: no experiment reaches its minimum sample.
- Mix intents in one group: you lose your only "search terms report".
- Judge today's spend: impressions and clicks arrive within minutes; spend, later (zero doesn't mean no charges); and conversions, at least a day later.
How it fits with Google Ads
- The judge is real cost per lead. Each platform attributes conversions with its own rules, and the total can exceed your leads. With a UTM on every ad, divide spend by the real leads in your CRM or analytics, channel by channel (better still, qualified ones).
- Google Ads is your source of evidence. Its search terms that already convert are the best raw material for hints (lesson 1).
- Exclude who you already have, where you can. Outside the EEA and Switzerland (in the US, for example), an exclusion audience needs no minimum size unless combined with an inclusion one (lesson 6). In campaigns targeting the EEA, Spain included, it isn't possible today.
- Several accounts, no MCC. Each client has their own (they create it and invite you) and you can switch between them, with no combined view.
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
- With no query report, one ad group per intent is your search terms report.
- One variable at a time, as a new ad, and no decisions below ~100 clicks per variant.
- In phases: delivery and measurement → ads and hints → bids and conversions (new campaign: the objective can't be changed).
- No device or scheduling adjustments, and no custom audiences in the EEA: campaigns per platform, and activate or pause based on closed weeks.
- Retired items get archived; across channels, real cost per lead rules.