Zum Inhalt springen
Blog / Research

Your first ChatGPT Ads campaign: budget types, bids, review delays, and a stop rule

Daily versus total budgets, OpenAI's recommended starting bid, the review gates that stall new accounts, the CPCs advertisers report, and a stop rule to write before launch.

By Yann BorieFounder, Serge9 min read

Google Trends interest in "chatgpt ads" roughly tripled in the two days after self-serve opened across Europe on 31 August and, after dipping, was back above any August day by 17 September. A lot of first campaigns are being set up right now on a platform OpenAI itself still calls beta, and ours is one of them: the account cleared review this month, the campaign I intend to run exists as a draft, the account holds the September campaign whose ad was rejected (paused), plus a paused test hierarchy we created through the API on the 17th and archived the same day, and the budget is a number I haven't committed to.

Budgets

Decide the budget type before you create the campaign. You can change the amount afterwards; the type is at best one-way. OpenAI's campaign guide says a total budget can be switched to daily but not back, and its billing page says the type can't be changed at all.

A daily budget isn't a ceiling. Since a late-July change that OpenAI documents on its Daily Budgets page, it's the average you want to spend per day over a seven-day period. On any single day billed spend can reach twice the daily amount; across a Sunday-to-Saturday week it can reach seven times. Unused spend from slow days is used later in the week, and if you change the budget mid-week the limits are prorated to the next Sunday midnight. In our currency the floor is CHF 20 a day, and a CHF 20 daily budget can bill CHF 40 on a single day and up to CHF 140 in the week. The floors by market are $25 in the US, EUR 15, GBP 15, CHF 20, INR 725, and the daily budget also has to be at least your highest ad-group bid. And if a campaign burns its weekly allowance early it can stop delivering until the next budget week while still showing as active.

A campaign total budget is the maximum for the whole run, paced against the remaining schedule, and it's the only real hard cap, with the caveat that OpenAI says ads can keep appearing for up to 24 hours after you pause and that the spend in that window is billable, within the cap.

OpenAI recommends newcomers start with daily so they can watch delivery. For a pilot with a fixed amount you are prepared to lose I'd use total, because daily can double on the day you're not looking, and if you'd rather use daily anyway, enter half what you mean.

In the API the cap is budget.lifetime_spend_limit_micros, in millionths of the account currency, with a documented minimum of one million micros, which is one franc or one dollar and well below what Ads Manager enforces. When we raised the test campaign's cap from 1,000,000 to 2,000,000 micros on the 17th the readback matched exactly and no daily limit appeared on the object.

Bids

A maximum bid per ad group: max CPM for a Views campaign, max CPC for Clicks. For Clicks campaigns OpenAI's help center suggests starting at $3 to $5 per click and says Ads Manager may show a bid-strength indicator, and that raising your bid doesn't guarantee delivery. I haven't seen the indicator; the paused test ad group we built through the API used impression billing at a token fixed bid (1,000 micros, which is nothing), so I can't tell you what it says at $3 versus $5.

Conversions is the third objective. It optimizes toward one supported standard conversion event, and you pick the billing: oCPC bills valid clicks, oCPM bills impressions. Neither bills per conversion, custom events can't be the goal, and the bid you enter is a maximum you're willing to bid for a conversion (OpenAI's help center is explicit that it isn't a price you pay or a guaranteed cost per acquisition). For these campaigns OpenAI says there's no recommended bid amount at this time, so the $3 to $5 applies to plain click campaigns only.

OpenAI describes the auction as relevance-weighted second-price and doesn't publish the formula. The implication is that a better-matched ad can clear at a lower price than a worse one with a bigger bid, which makes hints and copy matter for price and not only for reach. Objective, billing model and conversion event are all fixed at creation, so if you want to compare Clicks against Conversions you're creating two campaigns.

The gates

The r/PPC threads that read angriest are from people whose campaigns never left review, and two of the gates got us, and we tripped a third on purpose.

Ad review: our first ad was rejected on 4 September for having the platform's name in the title, and the ad-writing post has the whole story. Brand review: still pending on 7 September, cleared by the 17th (the separate account-integrity review had passed in the first week); OpenAI says only that it "may take some time" and can't be expedited, and one new EU account reports Ads Manager itself putting the wait at five to seven days with every campaign "Not serving" until it cleared. Landing page review: the test ad we pointed at example.com on the 17th was rejected within a minute as landing_page_unusable, and while our real domain was under review an edit to the ad came back HTTP 425 instead of 200.

The rest I've only read about. One advertiser on the EU self-serve, in the European campaigns write-up, describes a verification field that looked saved but wasn't, and every campaign publish failing silently with a 409 visible only in the browser console until they re-selected the value and saved. Some new self-serve accounts can only advertise in the account's home country until identity verification is approved and a spend threshold is reached. Your account name and logo have to be set or ads won't serve. And the card is charged whenever unpaid spend reaches an assigned payment threshold and again at month end, which is a separate mechanism from the campaign budget; OpenAI's billing page says the threshold is assigned rather than chosen, that support won't change it, and that a failed charge can stop delivery until it's fixed.

"Not serving" itself isn't a verdict; hover it. Verification, budget reached, end date, payment, a landing page blocking OpenAI's user agents. From the API side there's a trap: a campaign's status being active says nothing about delivery, which lives in a separate serving_issues field you have to ask for explicitly. We got this wrong in our own tooling and showed a campaign as running that OpenAI showed as stopped.

Our brand review was still pending on 7 September and had cleared by the 17th, and OpenAI asks you to allow 24 hours after launch before reporting a delivery problem, so the test clock starts later than the signup date by more than you'd plan for.

What people are paying

OpenAI's FAQ says there are no performance benchmarks across advertisers, industries or campaign types yet, so what follows is one account each, in a beta, reported by the person running it.

  • One advertiser running the same products on search and ChatGPT: CPC about 2.5× Google, market unstated, no conversions in the test window. (thread)
  • The Latvian advertiser in the same thread: CPCs "very reasonable" in their market; they think the high-cost reports are US.
  • A home-services marketplace PPC lead: 0.65% CTR with some of it traced to hints split on commas (thread), and, in another thread, cost per enquiry above both search and social because ads showed to researchers rather than deciders.
  • One agency running small tests at about $1,000 per client per month for legal clients, little lead volume, framed as first-mover learning, with a second commenter saying the same. (thread)
  • About $4k for 3 conversions from one advertiser (thread); 2k (currency unstated) for none from another (thread).
  • One commenter says conversion tracking only arrived in June and performance-based bidding a few weeks before September, and expects the numbers to move. OpenAI hasn't published dates for either.

The marketplace lead is the only one who traced a cause, which is why theirs is the number I'd weight; the 2.5× figure is one product in one month and I wouldn't plan around it.

Measurement

Clicks vs GA4 sessions has the mechanics; the short list is static UTMs on every landing URL, the OpenAI Pixel in the browser with your standard event firing on the real outcome, no redirect between ad and page, and a way to count the outcome in your own system by channel, new versus returning. Impressions, clicks and CTR appear within minutes, other reporting can take up to seven hours, attributed conversions 24 to 48, and a displayed zero spend does not mean nothing was charged.

The stop rule

Ours, as a sentence: campaign total spent, at least ten clean-serving days (days in review or not serving don't count, and the clock starts on the first day with impressions), fewer than N activated trials from people we hadn't seen before, stop. N is unset because we don't have a baseline trial count to compare against yet, and I'd rather say so here than pick one for the sake of the post. The reason to write it before launch is that after launch every number looks like a reason to keep going. If it passes, the second cycle changes one thing, and I'll note what the reporting showed on which date, because the platform will change under me and the two cycles won't be comparable otherwise.

The checklist I'm working from

  1. Account in an eligible country. Verification completed, and re-opened once to make sure it saved. Billing profile, card, account name, logo.
  2. Account review cleared.
  3. Landing page: the final URL, no redirects, and it doesn't block OAI-AdsBot or OAI-SearchBot. It opens by naming the situation the ads are written for. Not example.com, which I've now tested for you.
  4. Pixel, standard event verified in debug mode, UTMs on every URL.
  5. One campaign, one objective, campaign total budget.
  6. One to three ad groups, one situation each. No commas in the hints.
  7. More ads per group than feels reasonable.
  8. The stop rule, with N filled in. (Ours isn't.)
  9. Weekly: export at ad-group level and check how the hints were stored, CTR per group, clicks against the log and GA4.

Sources

Beginnen Sie mit Ihrer Website.

Serge macht daraus eine ChatGPT-Anzeigenkampagne, die Sie prüfen, bevor Sie über das Budget entscheiden, aus dem Werbekonto, das Ihnen gehört. Die Vorbereitung ist kostenlos.

Meine erste Kampagne starten