Log in / Create free account🌐 ES☀️

Advanced training · Module 17 — ChatGPT Ads in depth — ads, bidding and optimisation

Bidding for quality when bidding by value doesn't exist

⏱️ 7 min read · 🤖 ChatGPT Ads 💰 Bids and budgets 📐 Measurement · updated on 2026-09-18

"Maximise conversions" sounds like the platform is out hunting for customers. What it hunts is the number of events you told it to count. If that event is a submitted form, the campaign becomes outstanding at producing submitted forms: people in a hurry, browsers and, in lead generation, a good share of what your sales rep discards on the first call.

In Google Ads you fix this by bidding on value (tROAS). In ChatGPT Ads, run from OpenAI's Ads Manager, that lever doesn't exist.

What the platform doesn't have

Checked by us in September 2026: the only ways to bid are on impressions, clicks and conversions. There is no strategy chasing value or return; there is no tROAS equivalent. There are no device or country adjustments either, and no exclusions of any kind (covered in "Optimising ChatGPT Ads without search terms").

And a second fact that changes the plan: the platform's reports don't carry conversion value (OpenAI's official documentation). Even if you send amounts, the revenue report won't come from them: it will have to come out of your own data.

⚠️ Trap: assuming that sending the amount of each sale will make the campaign chase big sales. It won't. With no value bidding, the amount is information for you, not an instruction for the platform.

The lever that does exist: which event counts

If the campaign can't bid on the value of a conversion, the way to bid for quality is to change what counts as a conversion. A conversions campaign optimises towards a single event; the one you pick is, literally, the definition of success you hand the platform.

Event that counts What the campaign chases When it makes sense
Raw lead (form submitted) Volume of forms At the start, so it learns with volume
Qualified lead People your team considers valid As soon as there is volume of qualified leads
Opportunity People with real intent to buy Long cycles with plenty of leads
Sale Customers Ecommerce, or frequent and fast sales

Moving one step down that ladder is the difference between "bring me lots of forms" and "bring me people my sales rep accepts". It is the same effect as lead scoring in Google Ads, achieved by event selection instead of by value.

The requirement: volume

The trick has a price. Qualified leads are always far fewer than raw ones, and an automated strategy with little signal goes blind. Our criterion is the same one we use to move to maximise conversions:

The reverse warning matters as much as the rule: switching the goal to a scarce event doesn't make the campaign pickier, it leaves it with no information to decide on. It will do worse on volume and on quality.

💡 Ninja trick: while you are below that volume, send the quality events anyway even if the campaign doesn't optimise towards them. They don't change the bid, but they build the history you will use to decide the jump, and they give you cost per qualified lead by ad today.

How to build the ladder

  1. Define the stages and who marks them. The raw lead comes from the website; qualified, opportunity and sale are marked by a person (sales rep or account manager) in the CRM or in your working sheet. If nobody marks, there is no quality to measure.
  2. Start with the raw lead as the campaign's goal, and send the later stages too as they get marked.
  3. Send the value on every event: the real amount on the sale and, if you use one, a quality score on leads. It won't change the bid, but it feeds your revenue-by-ad report, which the platform won't give you.
  4. Once qualified leads pass 30 a month, make that the campaign's event.
  5. Watch volume after the change: if conversions collapse below 10 in 30 days, go back. Thresholds and cool-downs are in "Moving bids and budgets without breaking the learning".

Where it's done and what can't be undone

A campaign's conversion event is chosen in OpenAI's Ads Manager, and that is also where events are created and looked up: checked by us in September 2026, there is no other way to see them or set them up.

And mind this: neither a campaign's objective nor its conversion event can be changed after it is created (official documentation). So "moving to bidding on qualified leads" means, in practice, creating a new campaign. Direct consequence: plan the ladder before you build the campaign, because the jump costs you starting from zero on learning.

Two measurement details that shape this

Server-side sending is set up by your developer using OpenAI's documentation; which data each event carries is covered in "Advanced measurement in ChatGPT Ads".

What to take away

📎 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

← BeforeMoving bids and budgets without breaking the learningChatGPT Ads in depth — ads, bidding and optimisationAfter →ChatGPT Ads case study: late-night mobile traffic, and how to move to office hours and desktop onlyChatGPT Ads in depth — ads, bidding and optimisationRelatedWhat ChatGPT Ads does NOT let you do (and what you do instead)Advertising in ChatGPT: first stepsRelatedDiary of our campaign, day by dayChatGPT Ads — the platform, the market and our diaryRelatedWhy there are no official performance benchmarks, and how to read the ones going aroundChatGPT Ads — the platform, the market and our diaryRelatedAdvertising an app is not advertising a website: the six differences that catch people outAdvertising an app: first steps

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 →