Six steps: verify your business in Ads Manager, create a campaign with a budget and a bidding model, create an ad group with your context hints and a maximum bid, upload a creative, write a 50-character title, and submit for review. Reviews usually clear in a few minutes.
The order matters more than it does on Google, because two of those choices cannot be undone afterwards. This walks through each step with the fields you will actually be asked for, and ends with the four things that caught me out the first time.
Before you start
Three things are worth checking before you create anything, because each one is a hard stop.
- Your country. Ads Manager is available to advertisers in Australia, Canada, Japan, Korea, New Zealand, the United Kingdom and the United States. Outside those you can register interest, and that's all.
- Your category. The allowed set is deliberately narrow right now, and healthcare, financial services and legal services are gated behind manual approval. Check the restricted list before you build anything.
- Your conversion tracking. ChatGPT Ads has no search terms report, so you cannot diagnose waste at query level. Outcome measurement is the only measurement you get. If your conversion tracking isn't already trustworthy, fix it first.
Step 1 — Get verified
Sign up at Ads Manager and go through business verification. OpenAI reviews advertisers as well as ads: it checks that your business is real, that it fits an allowed policy category, and that it doesn't trip risk signals for fraud or deceptive behaviour.
Restricted categories get an extra layer here — OpenAI says they may require enhanced advertiser verification or manual review on top of the standard checks. Budget time for it rather than a launch date.
Step 2 — Create the campaign
The campaign holds three things: money, dates and geography.
| Field | What it does | Notes |
|---|---|---|
name | Internal label | 3–1,000 characters. Never shown to users. |
budget.lifetime_spend_limit_micros | Total the campaign may ever spend | Micros — millionths of a dollar. Minimum accepted is 1,000,000, i.e. $1. |
bidding_type | impressions, clicks or conversions | Defaults to impressions. Cannot be changed later. |
start_time / end_time | Flight dates | There is no day-of-week or hour scheduling beyond this. |
targeting.locations.include | Country, region or DMA | The only targeting control on a campaign. Omit it and you run everywhere available. |
Two things to get right here.
Micros trip everybody once. A budget is expressed in millionths of your account currency, so a $500 lifetime limit is 500000000. Miss three zeros and you've built a fifty-cent campaign, or a fifty-thousand-dollar one.
Pick the bidding model deliberately. clicks gives you cost-per-click buying, impressions gives you CPM, and conversions is the conversion-optimized option OpenAI added on June 16, 2026 — it optimizes toward a conversion event while still billing you per click. If you have working conversion tracking and enough volume, that last one is usually where you want to end up. If you don't, start on clicks.
bidding_type after the campaign exists. Not edit it, not migrate it. Choose wrong and you rebuild the campaign and everything under it. This is the single most expensive five seconds in the whole setup.Step 3 — Create the ad group
The ad group is where targeting and bidding actually live.
| Field | What it does |
|---|---|
context_hints | Free-text topics and phrases describing when your product is useful. Up to 2,000 of them. |
exclusion_hints | The same thing in reverse — the closest analogue to a negative keyword list. |
bidding_config.billing_event_type | impression for CPM campaigns, click for click and conversion campaigns. |
bidding_config.max_bid_micros | Your ceiling, per event. For conversion campaigns this is the target cost per acquisition, even though billing is per click. |
OpenAI recommends starting at a maximum bid of three to five dollars per click, and defaults impression buying to a sixty-dollar maximum per thousand. Both are ceilings you set, not prices you pay — the auction is second-price, so you pay what it takes to beat the advertiser below you.
Now, about those hints. They look like a keyword list and they are not one:
These hints help guide ad matching, but they are not exact-match keywords and do not guarantee delivery in specific conversations.
So what does that mean for you? Write them as descriptions of situations, not as search queries. "Comparing rooftop cargo boxes for a family road trip" is a better hint than "cargo box". The system reads your title, your body copy and your landing page alongside the hints when it decides whether you're relevant, so the hints are one input among several — not a switch.
Use exclusion_hints from day one. It's blunt, and it's the only negative control you have.
Step 4 — Upload the creative
Upload your image and keep the returned file ID. You'll attach it to the ad in the next step. A product-feed campaign is the exception: those pull the image and destination from the feed item instead.
Step 5 — Write the ad
This is where most people discover the format is tighter than they planned for.
| Field | Limit | For comparison, a Google RSA |
|---|---|---|
creative.title | 3–50 characters | 15 headlines × 30 characters |
creative.body | 100 characters max | 4 descriptions × 90 characters |
creative.target_url | Landing page | — |
creative.file_id | The uploaded image | — |
One title. One body. No machine to rotate fifteen headlines and find the winner for you.
I found this genuinely changed how I wrote. On Google you can hedge — throw in a brand headline, a feature headline, a price headline, and let the system sort it out. Here you get one sentence to say what you sell and why it's worth a click, and the ad has to earn relevance on its own merits because relevance is weighted in the auction. Write the offer. Cut the brand adjectives. Then cut it again to fit.
Remember the landing page is reviewed too. OpenAI's standards apply end to end, and an ad whose destination introduces something the creative didn't depict gets rejected.
Step 6 — Submit and watch the review
Reviews typically take a few minutes. Then comes the step that quietly wastes the most time.
An ad serves only when all four of these are true: the ad is enabled, its ad group is enabled, its campaign is enabled, and the ad has passed review. Miss any one and you have an "active" ad spending nothing.
The field to watch is review_status, which reads in_review, rejected or approved. When something isn't spending, check that before you touch bids. I have watched people raise a maximum bid three times on an ad that was sitting in review the whole while.
Wire up measurement before you enable anything
Reporting covers impressions, clicks, spend, click-through rate, average cost per click, average cost per thousand impressions, and conversions. That's the whole list — there is no query-level view.
Conversions arrive one of two ways: a measurement pixel on your site, or a server-to-server conversions application programming interface, the same shape as Meta's. Set one up before you spend, because retrofitting attribution to a campaign that already ran means throwing the first week away.
Static tracking parameters survive the click, so tag your landing page URLs and the traffic shows up in the analytics you already run. That's the cheapest sanity check available: if Ads Manager says 40 clicks and your analytics says 3 sessions, something is wrong with the destination, not the campaign.
The four things that caught me out
- The bidding model is permanent. Decided at creation, not editable. Rebuild is the only fix.
- Four switches, not one. Ad, ad group, campaign, review status. "Active" means less here than you'd assume.
- 50 characters. The headline you brought from Google will not fit, and there is only one of it.
- Hints are not keywords. You are describing when you're relevant, not instructing a matcher. Anyone whose Google discipline is built on exact match and tight negatives has to unlearn something here.
That fourth one is the one I'd underline. The most expensive account I ever inherited was a business-to-business fintech running on autopilot: right keywords, wrong match modifiers, consumer traffic nobody had excluded, roughly eighty per cent of the budget gone. The fix lived in the search terms report. On ChatGPT Ads there is no search terms report — so the answer is to cap the budget, watch conversions rather than clicks, and never let it run unattended.
FAQ
Which countries can run ChatGPT Ads? Ads Manager is available to advertisers in Australia, Canada, Japan, Korea, New Zealand, the United Kingdom and the United States. Outside those you can register interest, and that is all.
How long does the ad review take? Usually a few minutes.
Which choices cannot be undone later? The bidding model is decided at campaign creation and is not editable. Rebuilding the campaign is the only fix, which is why the order of these steps matters more here than it does on Google.
Why is my ad active but not spending? There are four switches, not one: the ad, the ad group, the campaign, and the review status. An ad only serves when all of them are clear, so "active" means less here than you would assume.
Will my Google headline fit? Probably not. The title limit is 50 characters, and there is only one of it.
Are context hints the same as keywords? No. Hints describe when you are relevant; they do not instruct a matcher. Anyone whose Google discipline is built on exact match and tight negatives has something to unlearn here.
What to do next
Start capped and deliberate: one campaign, one ad group, tight hints, exclusions in place from the first day, and a number written down that would make you switch it off.
For what a click has actually cost across the accounts we run, by vertical, see what ChatGPT Ads actually cost. For how the channel compares to the one you already run, see ChatGPT Ads vs Google Ads. For using ChatGPT to build the Google campaigns rather than to place the ads, see ten ChatGPT prompts for Google Ads. The overview lives on ChatGPT Ads for small business.
Or skip the setup entirely
Connect your OpenAI Ads account and Bytown builds the campaign, ad groups and ads for you — alongside Google, Meta and LinkedIn. Every change that touches spend waits for your approval.
Generate a free campaign Rather have it run for you? Talk to a marketer.