Guide

Launch your first ChatGPT ads campaign: the step-by-step checklist

Published · Updated · Based on the OpenAI Ads API documentation

Key facts
  • One API key maps to one ad account, but billing has no API endpoints: the payment method is added in Ads Manager only.
  • Everything is created paused. Campaign, ad group and ad each have their own paused or active state, so activate every level you want live.
  • A campaign budget is an average daily figure: the platform can spend up to twice the daily budget on one day and up to seven times it across seven days.
  • The daily minimum budget depends on account currency; on a EUR account it is 15,000,000 micros (15.00 EUR), confirmed live.
  • Ad groups carry up to 2,000 free-text context hints; ads are chat cards or product ad templates, never both in one ad.
  • Creative goes into review (in_review, approved or rejected with a reason); editing the creative sends it back through review.
  • There are no webhooks: review status, spend and conversions all have to be polled through the insights and diagnostics endpoints.

A first campaign fails for the same handful of reasons every time: no payment method, no conversion tracking to judge it by, a budget read as a daily ceiling instead of a weekly one, or a launch nobody checked in its first week. This checklist walks through the build in order, from opening the ad account to the checks worth running once the campaign has a few days of data, using the object model and limits as OpenAI documents them.

Key takeaways
  • Set up the pixel and a conversion event before you build the campaign, so there is something to attach to it from the first draft.
  • Build the whole tree, campaign, ad group and ad, while everything is paused, then review it once before activating anything.
  • Read the daily budget as a seven-day average and size the campaign for the seven-times weekly ceiling, not just the daily figure.
  • If an approved ad is not serving, check the payment method in Ads Manager before you touch the ad itself.
  • Judge the first week on data that is at least a day old; conversions do not appear immediately and hourly data carries no conversions at all.

What do I need before I create a campaign?

Two things, and both live outside the campaign object. An ad account at ads.openai.com with a self-issued API key, one key per ad account, and a payment method added in Ads Manager, since the Ads API has no billing endpoints at all. Verify the account is reachable with a plain GET /ad_account call before building anything on top of it.

Because billing sits entirely in Ads Manager, it will never show up as a validation error from the API. If a campaign, ad group and ad are all approved and correctly targeted but nothing is serving, billing is the first thing worth ruling out, not the last. Calling the ad, ad group or campaign with include[]=serving_issues surfaces the documented reason on the resource itself, and a missing payment method shows up there as the serving issue ad_account_payment_method_missing_or_unauthorized, independently of review and targeting. Create endpoints also accept an Idempotency-Key header, worth using from the first campaign so a retried request cannot create a duplicate tree.

How do I set up conversion tracking before I build anything?

Create a pixel and a conversion event setting, for example order_created for a shop or lead_created for a service business, and install the pixel on your site before the campaign exists. Doing this first means the event setting is already there to attach when you set the campaign's objective, instead of a retrofit after launch.

Pixels and Conversions API keys are capabilities OpenAI enables per account, so confirm the Conversions tab is visible in Ads Manager before you plan a conversion-optimised campaign around it. The full setup, including the exact snippet, the server-side event format and how deduplication works, is covered in the conversion tracking guide; treat it as the step that has to be finished before step 3, not alongside it.

How do I create the campaign itself?

Set the objective, which determines the bidding types available; the bidding type, impressions, clicks or conversions; the billing event, impression or click; and a budget as either daily_spend_limit_micros or lifetime_spend_limit_micros, never both. Omit mode for a standard campaign you write yourself; set it to product_feed for a feed-driven campaign, or business_agent with a business_agent_id for that specific mode. The campaign is created paused, and it stays that way until you activate it later.

A daily budget is not a daily ceiling. Ads Manager states it as the average daily amount, with a maximum single-day spend of twice the daily budget and a maximum seven-day spend of seven times it, for example a EUR 65 daily budget allows up to EUR 130 on a single day and up to EUR 455 across seven days. Since 16 September 2026, conversion optimisation billed per impression is generally available and is OpenAI's recommended model: it optimises for conversions from both clicks and views while billing per impression, which needs a conversion event already attached, another reason to finish step 2 first.

How do I set up the ad group: bid strategy and context hints?

Choose a bid strategy, fixed bid, maximise clicks or maximise conversions, and write context hints, free-text sentences describing the situations your offer fits, up to 2,000 per ad group. Hints are not keywords and there is no bidding per hint; the bid and the billing event apply to the whole ad group. A feed-based ad group also carries a product set, the subset of the feed it is allowed to advertise.

Write one ad group per angle rather than one long list of everything you sell, because hints have no report of their own: results come back per ad group and per ad, so mixing angles in one group averages their results together and makes neither one measurable. The context hints guide covers how to phrase a hint and which angles are worth their own ad group. Audience bid multipliers, where used, apply only to fixed-bid ad groups.

How do I create the ad: chat card or product ad?

Two creative types exist, and an ad is one or the other. A chat card needs a title of 3 to 50 characters, a body of up to 100 characters, a square image of at least 640 by 640 pixels in JPEG, PNG or WebP, and a target URL of up to 2,048 characters that OpenAI's crawler can reach. A product ad template takes its image, its destination URL and its price from a feed item, and a feed-based ad group can carry at most one non-archived template.

Both types are created in review, move to approved or rejected with a reason, and go back into review the moment the creative is edited. A preview, valid for 24 hours, shows how the ad renders but does not confirm it is eligible to serve. Writing chat card copy that reads well within these exact limits, with worked examples, is its own guide: see writing chat card creative.

How do I set locations, platforms and the budget?

Locations are set on the campaign, up to 2,500 location IDs of type region, market or DMA, found through the geo lookup endpoint or OpenAI's geo-targets file. Platforms are chosen from six values: iOS app, Android app, web, desktop web, iOS web and Android web, each targetable on its own since OpenAI's 16 September 2026 update. Outside the EEA and Switzerland, custom audiences can narrow or exclude further; inside them, hints, locations and platforms carry the whole targeting job.

Before you finish the budget, check the daily minimum for the account's currency: on a EUR account it is 15,000,000 micros, that is 15.00 EUR, and the account minimum for other currencies is returned in the error if a lower amount is rejected. Beyond the campaign's own limit, an account can carry up to 60 non-overlapping spend limit windows, and postpaid invoice accounts can carry a daily account-wide limit; spend limit windows are enabled per account by OpenAI, and both sit above the campaign budget as a second ceiling.

How do I get the campaign through review and activate it?

Wait for the ad's review_status to move from in_review to approved. There are two separate reviews at account level too, a brand review and an account integrity review. Once approved, call POST to the activate endpoint on the ad, the ad group and the campaign; each level is its own paused or active state; the object model does not state that activating one cascades to the others, so switch on every level you want live.

Archiving, by contrast, is irreversible, and an ad cannot be moved to a different ad group once created. Treat the first activation as a checkpoint: confirm targeting, budget and creative one more time before flipping any level live, since any creative edit after that sends the ad back into review.

What should I check in the first week?

Poll rather than wait for a notification, because the platform has no webhooks or event stream. Check review_status and, with include[]=serving_issues and include[]=bid_too_low, whether anything is stopping delivery. Read insights daily: impressions and clicks land within minutes, spend a little later, and conversions need at least a day to settle, so a same-day read will always look thinner on conversions than it later becomes.

If you pulled hourly insights to watch the first day closely, remember that hourly rows carry only impressions, clicks and spend; conversion and sales fields are refused at that granularity and only appear at daily or, for sales, monthly aggregation. Ads Manager also shows an Event Quality Score from 1 to 10 per eligible pixel and Conversions API data source, useful for judging whether the tracking from step 2 is complete; it has no equivalent in the API, so check it there. Only after a week of daily figures, not a morning of hourly ones, is it fair to judge whether the hints, the creative or the bid need a change.

Frequently asked questions

Do I need a product feed to launch my first campaign?

No. Chat cards need no feed at all: a title, a body, an image and a destination URL are enough, which is why they suit a first campaign for a shop or a service business alike. A product feed is only needed for product ad templates, and feeds are enabled per account by OpenAI.

My ad is approved but not serving. What do I check first?

Billing before anything else. The Ads API has no billing endpoints, so a missing or failed payment method is set in Ads Manager and will not show up as a rejected review. Call the ad, ad group or campaign with include[]=serving_issues to see the documented reason; a missing payment method shows as ad_account_payment_method_missing_or_unauthorized, and is fixed in Ads Manager.

How big a budget should my first campaign have?

OpenAI does not publish typical costs, so there is no universal starting number. Treat the daily budget as a seven-day average: the platform can spend up to twice the daily amount on a single day and up to seven times it across a week, so size the campaign for what you can afford to spend at that ceiling, not just at the daily figure.

Can I preview an ad before it goes live?

Yes. The preview endpoint renders an ad for 24 hours, but it does not confirm that the ad is eligible to serve. Eligibility still depends on review, budget, targeting and billing, so a clean preview is not the same as a clean launch.

Why did my ad go back into review after I only fixed a typo?

Any edit to the creative re-triggers review, however small the change. Treat a live chat card or product ad template as something to replace rather than tweak once it is approved, unless you are prepared for it to sit in review again.

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