Updated 25 October 2026.
Advertising on ChatGPT happens in OpenAI’s Ads Manager (ads.openai.com), which has been self-serve since 5–6 May 2026 and open to European advertisers since 31 August 2026. A campaign is built on three levels, campaign, ad group and ad, and this guide walks through them in that order, field by field and without screenshots: the interface is still moving, but the documented constraints are not.
What do you need before opening Ads Manager?
You need an account on ads.openai.com, a verified business and an active payment method, and without all three nothing serves. Here is the order to sort them out in.
- Create the advertiser account with a work email address, then start business verification straight away. It takes time, so it is worth having begun before you write the first ad.
- Add a payment method. Media is billed directly by OpenAI, on the advertiser’s own account.
- Check your category against OpenAI’s ad policies. Health, regulated finance, legal, insurance: eligibility is something to settle before launch, not something to learn from a rejection.
- Look at the account’s time zone and currency, which are hard to change later.
One more point, which is strategic rather than technical and worth settling before you spend anything. Ads are shown only to logged-in adults on the Free and Go plans, so if your typical buyer pays for a subscription, they will see nothing.
Four levels, one rule for splitting them
An account holds campaigns, campaigns hold ad groups, ad groups hold ads, and each level carries its own settings. The campaign owns the objective, budget and countries; the ad group owns the context hints and the bid; the ad owns the title, body, link and image.
The build rule fits on one line: one campaign per business objective, one ad group per family of intent. “Lead Gen UK” is a campaign, while “teams comparing invoicing tools” is an ad group.
Why insist on it? Because the native report has six columns (impressions, clicks, spend, CTR, average CPC, average CPM) and nothing else. If an ad group mixes three intents, those six numbers will tell you nothing about any of them.
Which fields do you fill at campaign level?
Five: name, daily budget, dates, objective and countries. The minimum daily budget is $25 per campaign, and there has been no account-level minimum since May 2026.
| Field | Required? | Constraint |
|---|---|---|
| Name | Yes | No special characters. Name by objective and market: LeadGen UK Q4 |
| Daily budget | Yes | $25 minimum per campaign, treated as a daily average |
| Dates | Start yes, end optional | Without an end date, the campaign runs until paused |
| Objective | Yes | Views (CPM), Clicks (CPC) or Conversions |
| Countries | Yes | List of two-letter ISO codes: GB, IE, FR |
The choice that matters most is the objective. Views buys visibility on CPM, Clicks buys traffic on CPC, and Conversions assumes the OpenAI Pixel or the Conversions API is already sending events. For a first campaign with unverified tracking, Clicks gives you readable data fastest.
On pricing, the observed entry-level figures are CPCs of $3 to $5 and CPMs of $25 to $60. Treat them as starting points, because OpenAI publishes no benchmarks, whether by industry or by campaign type.
The ad group and its context hints
An ad group is made of a name, a maximum bid (in the account currency, as CPC or CPM depending on the objective) and a list of context hints in JSON, an array of sentences with no documented maximum. The hints describe the conversations where the ad belongs; keywords have no place in them.
A hint is a natural sentence carrying one idea: who is talking, in what situation, with what need. It attaches to the ad group and guides matching without guaranteeing it. Above all, it does not target. “Only show in London” is an instruction and it does not work, so do not slip it into the list hoping it gets through.
[
"fleet manager asking how to cut the fuel budget for a company fleet",
"sales team that wants to replace an expensive prospecting tool without losing its sequences",
"founder comparing simple invoicing software for a small team"
]
By contrast, "crm", "sales" or "software" describe no conversation at all: a single word is worthless as a hint. To produce a list in the right format, the context hints generator applies these rules.
The auction is second-price and weighted by relevance, so a more relevant ad can win with a lower bid. The care you put into hints and copy therefore acts directly on cost.
Writing the ad in 24 and 48 characters
An ad has four elements: a title of up to 24 characters, a body of up to 48, a link with UTM parameters and a square image. The title says what it is. The body adds one more piece of information instead of repeating it.
| Field | Required? | Constraint |
|---|---|---|
| Title | Yes | 24 characters maximum, spaces included |
| Body | Yes | 48 characters maximum, spaces included |
| Link | Yes | URL of the most relevant page, with UTM parameters |
| Image | Yes | Square, 640 to 1200 px per side, PNG or JPG |
Twenty-four characters is short. “Invoicing for small teams” does not fit, “Invoicing for SMBs” does, and for the body “Pricing shown, free trial, no contract” fits within 48. Count the spaces, because the interface does.
The link goes to the page that carries on the conversation, never to the homepage by default, and how to build that page is covered in ChatGPT Ads landing pages. UTM parameters follow a fixed convention (utm_source=chatgpt, utm_medium=cpc, then campaign, ad and intent family), explained in measuring ChatGPT Ads conversions.
For the image, keep it simple: product or logo on a plain background, with little text. Plan several ads per ad group too, since otherwise you will have nothing to compare.
Can you bulk import from a spreadsheet?
Yes. Bulk import follows the same three levels, one sheet each (campaigns, adgroups, ads), and the columns match the fields in the tables above.
- In
campaigns, fill in the name, daily budget, dates, objective and countries. - In
adgroups, give the parent campaign, the name, the maximum bid and the context hints as JSON. - In
ads, give the parent ad group, the title, the body, the link with UTM and the image. - Import, then reread every row in the interface before you submit.
What justifies the sheet is proofreading far more than speed: you can check it column by column, title lengths included, before anything enters review.
The final checklist before review
Every campaign is reviewed before it serves, and a rejected ad costs you days. The list below takes one sitting.
- Account complete, business verified (or verification in progress), billing active, category checked against OpenAI’s ad policies.
- No misleading claim in the title, body or page, and each ad consistent with its landing page.
- Simple images with nothing problematic, and context hints consistent with the ad group and written as sentences.
- Daily budget high enough to learn: $25 is the minimum, not a recommendation.
- UTMs tested, meaning a test click lands in your analytics tool; OpenAI Pixel firing on the conversion page; Conversions API tested if you have it in place.
- Landing page reachable and not blocked for OpenAI’s crawlers.
- Campaign submitted for review, with the status watched until approval.
Once the campaign is approved, the six columns of the native report start filling up. What they leave out, and how to fill the gap: measuring ChatGPT Ads conversions. On our side, when the planned media volume will not let you learn anything, we say so before launch, not after.