Skip to content
SERGE
← All posts
First campaign

Your first ChatGPT Ads campaign

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.

A prismatic budget reservoir with a clear upper boundary illustrates a total campaign spending cap.
The short answer

A daily budget is a seven-day average and can spend up to twice that amount on one day. A campaign total budget caps the whole run. For a fixed-budget test, choose the cap and the result that would make you stop before launching.

OpenAI’s budget rules and our account’s review history. The spending illustration is hypothetical; it is not a campaign result.

Sources checked ↗
Budget illustration · CHF

Daily doesn’t mean a daily ceiling.

Daily budgetCHF 20
Maximum on one dayCHF 40
Maximum in a full budget weekCHF 140

Example with an unchanged CHF 20 daily budget. The week runs Sunday to Saturday. These are limits, not predicted spend.

For a fixed test: campaign total.

This caps the whole campaign. Delivery can continue for up to 24 hours after a pause; that spend is billable within the cap.

Before delivery: ad review, brand review, landing-page review, verification and billing all need to clear. These are separate gates, not a guaranteed sequence or timeline.

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 misrepresentation; I suspect 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

Questions, answered

How much do ChatGPT ads cost?

For Clicks campaigns OpenAI suggests starting at a $3 to $5 maximum CPC; for conversion-optimized campaigns it gives no recommended bid, and its FAQ says there are no performance benchmarks yet. One advertiser reports CPCs about 2.5× search for the same products (market unstated); an advertiser in Latvia calls local CPCs reasonable; one spent about $4k for 3 conversions.

What's the difference between a daily budget and a campaign total budget in ChatGPT Ads?

Daily is a seven-day average: up to 2× the amount on one day, 7× across a Sunday-to-Saturday week, with a market minimum ($25 in the US, CHF 20, EUR 15). Campaign total is a hard maximum for the whole campaign. You can change the amount later; changing the type is at best one-way.

Why is my ChatGPT campaign not serving?

Hover the Not serving status and Ads Manager tells you: verification, budget spent, end date passed, failed payment, or a landing page that blocks OpenAI's bots. New accounts also wait on brand review, which OpenAI says it can't expedite.

Yann Borie

I’m building Serge. These notes come from the platform documentation, our own setup tests and the questions I’m still working through.

Serge

Put the reading to work.

Serge turns your website into a ChatGPT campaign you can review, from the ad account you own. Campaign preparation is included in your Serge subscription; ad spend is separate.

How to set up a ChatGPT Ads account ↗
Build your campaign