Budgets, pacing and bidding strategies for ads in ChatGPT
- A campaign has a daily spend limit or a lifetime spend limit, not both, in micros of the account currency (1,000,000 micros = 1 unit).
- Account level: a daily spend limit (postpaid invoice accounts only) and spend limit windows (up to 60, non-overlapping, enabled per account).
- Bidding type impressions, clicks or conversions; strategy fixed bid, maximise clicks or maximise conversions; billing per impression or click.
- No target CPA, target ROAS, bid caps on maximise strategies, dayparting or pacing controls on the platform. A controller emulates them.
- Adsonomy guardrails: bid step 15%, budget up 25% and down 50% per change, 2 changes per entity per day, cooldowns per action type.
Spend on the OpenAI Ads platform is governed at three levels: the campaign budget, the account-level limits, and the bid. Targets such as cost per order or return on ad spend are not something the platform can be told; they are something a controller emulates. This guide covers the budget fields, the account limits, bidding types and strategies, what each target means, how Adsonomy's controller and plans work toward them, and the guardrails.
How are campaign budgets set?
Each campaign has either a daily spend limit or a lifetime spend limit, not both, in micros of the account currency: one million micros is one unit, so 50 euro a day is 50,000,000. A campaign can also carry a start and end time. Daily minimums depend on the currency; the documentation does not list them, and a budget below the minimum is rejected with the required amount in the error.
Because the two fields are exclusive, a campaign with a fixed period and sum uses the lifetime limit, while an always-on campaign uses the daily limit and relies on something outside the platform to hold it to a period total. Budgets are changed with a POST to the campaign. Adsonomy journals every change with the previous value so that it can be reverted. There are no pacing controls on the platform: no standard versus accelerated delivery, no dayparting.
What limits exist at account level?
Two. An account daily spend limit caps billable spend for each account-local day, repeats every day in the account timezone without carryover or proration, and is available only on postpaid invoice billing; first activation starts no earlier than the next account-local day, and a decrease below the spend already recorded today is rejected. Spend limit windows are date ranges, up to 60 and non-overlapping, each with its own limit, and are enabled per account by OpenAI.
Neither limit is atomic with billing: delayed charges use the settings in force at their event time, and the spend check is not atomic with concurrent billing. Treat them as ceilings, not as a pacing tool. Adsonomy uses spend limit windows as the hard stop Nomy cannot cross and keeps working budgets below them.
What are the bidding types and strategies?
A campaign has a bidding type of impressions, clicks or conversions and an objective of reach, clicks or conversions. Each ad group has a billing event type, impression or click, and a bid strategy: fixed bid with a maximum bid in micros, maximise clicks, or maximise conversions. If the strategy is omitted the platform selects AutoBid. Conversion campaigns bill on clicks. Conversion-optimised and CPM bidding are enabled per account by OpenAI.
An impression bid is per impression, not per thousand: a 60 dollar CPM is 60,000 micros per impression. The maximise strategies have no bid cap in the API, so with them the only lever left is the budget. Fixed bid gives control of the price per event and puts the work of finding the right bid on you or your tooling. A get or list call can include serving issues and a bid-too-low flag.
What do CPM, CPC, CPA, CPO and ROAS targets mean here?
CPM is cost per thousand impressions, CPC is cost per click, CPA is cost per conversion of the campaign's conversion event, CPO is cost per order (order_created events only), and ROAS is attributed order sales divided by spend. The platform reports all of them but accepts none as a target: there is no target CPA or target ROAS field. A target is therefore a number you hold outside the platform and steer toward by stepping the bid or the budget.
This is how Nomy maps each target kind to platform settings and a controller:
- CPM: impressions bidding, impression billing, fixed bid; the bid is stepped toward the target CPM.
- CPC: clicks bidding, click billing, fixed bid or maximise clicks; on fixed bid the bid is stepped toward the target, on maximise clicks only the budget is controlled.
- CPA: clicks bidding (or conversions where enabled), fixed bid; the bid is stepped so that spend divided by conversions approaches the target.
- CPO: as CPA, counting order_created events only.
- ROAS: fixed bid, needs attributed sales; the bid is stepped so that attributed sales divided by spend approaches the target.
- Spend: a pacing controller on budgets, no bid steps.
The step is new_bid = current_bid x clamp(target / actual, 1 - step, 1 + step), with the step from the maximum bid step guardrail (15 percent by default) and the ratio inverted for ROAS. Temperament scales it: conservative at half, balanced at one, aggressive at one and a half, never above the guardrail. Where conversion bidding is enabled, Nomy prefers maximise conversions with the maximum bid as the CPA bid and manages that cap.
How do plans and pacing work?
A plan is what you intend to spend and achieve in a period: a month, quarter, year or custom range, a budget, a target kind and value, and an allocation mode (even, weighted by weekday, front-loaded, back-loaded or a custom daily curve). A plan can be split by campaign; the unallocated remainder is shared evenly by campaigns without a line. Pacing compares actual spend from daily insights against the planned amount to date and projects the period end.
The pace ratio is actual divided by planned to date. On track is 0.9 to 1.1; under is below 0.9; over is above 1.1; at risk means the projection exceeds the budget by more than 5 percent, or the KPI is worse than the target by a factor of 1.25 with at least 30 clicks. The projection is actual to date plus the last seven days' average times the remaining days. Snapshots are computed daily at 00:10 workspace time. The ratios become rule signals, Nomy's pacing controller follows the active plan instead of a raw monthly cap, the daily brief reports pace and projection, and the plan's remaining budget caps budget increases: a step may not push projected period spend above the plan. Plan currency is the ad account currency; the period runs in the workspace timezone.
What guardrails should sit around all of this?
Adsonomy's guardrails are hard ceilings and floors applied to every change, whether a person, a rule or Nomy makes it: daily and monthly spend caps, maximum and minimum bid, minimum and maximum daily budget, a bid step of at most 15 percent per change, a budget increase of at most 25 percent and decrease of at most 50 percent per change, 2 changes per entity per day and 40 per day overall, protected entities, and cooldowns of 24 hours for bids and budgets, 12 for status and 72 for hints.
Some actions are never automatic regardless of policy: archiving anything, creating a campaign, changing objective or bidding type, changing conversion event settings, and changing Nomy's own settings always produce a proposal. Rules go through the same guarded path, with hysteresis and a re-arm margin or cooldown so that a rule does not flap, and a 30-day backtest before saving. Every change is journaled and can be reverted, and a new account starts in shadow mode. Underneath sit the platform's own ceilings: spend limit windows and, on postpaid accounts, the daily spend limit.
Frequently asked questions
Why are amounts in micros?
The API expresses money as integers in micros, one millionth of a currency unit, to avoid decimals. 1,000,000 micros is one euro or dollar. Adsonomy shows amounts in currency and converts on the way in and out.
Can I set a target CPA in Ads Manager or the API?
No. Neither offers a target CPA or target ROAS. You choose a bidding type and a strategy and hold the target yourself. Adsonomy's controller steps a fixed bid, or the maximum bid on maximise conversions where enabled, toward the target within the guardrails.
What happens when a plan is over pace?
The pace status changes to over or at risk, the plan signals feed the rules, and Nomy's pacing controller slows budget steps or proposes cuts. The plan's remaining budget also caps any increase, so nothing can push projected period spend above the plan.
Is the account daily spend limit a kill switch?
It is a ceiling, not a switch: it needs postpaid invoice billing, first takes effect the next account-local day, and is not atomic with billing. Adsonomy's kill switch pauses everything Nomy created at once; the platform limits are the backstop.
Adsonomy runs ads inside ChatGPT for shops and service businesses. Control edition: you run it with rules. Autopilot: the AI manager runs it inside your guardrails. Launching 1 October 2026.
Join the waitlist