On this page
- What is ChatGPT Ads Manager?
- Before you start: the pre-launch checklist
- Step 1: Create and verify your account
- Step 2: Create the campaign
- Step 3: Build the ad group, bid, and context hints
- Step 4: Write the ads
- Step 5: Set up measurement (pixel, Conversions API, partners)
- Step 6: Launch, review, and fix "Not serving"
- Reporting: what you get and what you do not
- Bulk upload and the Ads API
- What ChatGPT Ads Manager still lacks vs Google Ads and Meta
- Run ChatGPT Ads Manager with Sprites
- FAQ
What changed
- Walkthrough moved here from the OpenAI Ads Manager page, with a pre-launch checklist and a tour of every screen.
- Screenshots refreshed from a live account. The promotion card reads "Spend $500 by Sep 27 and receive $500 in credit."
- Product carousels, oCPC beta, URL macros, Automatic Advanced Matching on by default.
- Self-serve Ads Manager Beta launched: no minimum spend, CPC bidding, Pixel and Conversions API.
What is ChatGPT Ads Manager?
ChatGPT Ads Manager is the self-serve web platform at ads.openai.com where businesses create, launch and measure ads inside ChatGPT. OpenAI names it OpenAI Ads Manager; it is the same product, still labelled Beta, open in more than 50 countries with no minimum spend beyond a $25 daily budget.
Every campaign is built in three levels: a campaign (objective, budget, dates, countries, platforms), an ad group (bid strategy and context hints) and an ad (title, copy, image, landing page). For what the platform is, how else you can buy, and where it is open, see OpenAI ads and OpenAI Ads Manager. For the channel as a whole, start with the guide to ChatGPT ads.
| Screen | Where | What you do there |
|---|---|---|
| Overview | Home | Setup tasks still open, spend and performance trend |
| Campaigns, Ad groups, Ads | Left nav | Build, edit, pause; the "Not serving" reason on hover |
| Create menu | Top right | Create campaign, ad group or ad, or Upload bulk |
| Conversions | Tools | Pixel ID, events, Event Stream and the EQS column |
| Audiences | Tools | Upload customer lists for inclusion, exclusion or bid multipliers |
| Feeds | Tools | Product catalogs for Product feed campaigns (CSV, TXT, URL or SFTP) |
| Billing | Left nav | Billing profile, card, invoices, promotions |
| Settings | Left nav | Account info, verification, users and roles, API keys |
Before you start: the pre-launch checklist
Have six things ready before you sign up: an OpenAI account on a work email, a legal entity in a listed country, a company card, a square logo, a landing page that lets OAI-AdsBot crawl it, and access to add a script to your site.
- A work-email OpenAI account. The ad account is tied to it; personal accounts slow verification.
- An entity in a self-serve country. The billed business must be based in one of the more than 50 countries on the availability list. Country, currency and time zone lock at signup.
- A card for postpay billing. Expect a $50 to $100 authorization hold.
- A square logo and your brand name. Campaigns will not launch until Settings has both.
- A crawlable landing page. Allow
OAI-AdsBotin robots.txt or the ad is rejected. - Site access for the pixel. Or a developer who can send server events to the Conversions API.
Step 1: Create and verify your account
Sign up with an OpenAI account tied to your work email, complete Persona verification, fill in account information and billing, then invite your team. Campaigns will not deliver until every required step is complete.
OpenAI's setup article lists five stages, verbatim:
- Access Ads Manager Beta and create account
- Complete onboarding and verification
- Fill in account information
- Set up billing and payment
- Invite team members
Sign up, verify through Persona, and complete account info
Go to ads.openai.com/auth/signup with an OpenAI account tied to your work email. Onboarding asks for business name, website, logo, industry, country, currency and time zone; verification runs through Persona and is reviewed against the Ad Policies. Then complete "Account name" and "Logo" under Settings, or campaigns will not launch.
Settings > General: account info, verification, locked country, currency and time zone, API keys. Set up billing and payment
Billing > Overview asks for a billing profile and a credit card. ChatGPT Ads is postpay: you are charged after delivery once unpaid spend reaches a threshold assigned to the account (OpenAI's example is $25). The promotion card in the account reads "Spend $500 by Sep 27 and receive $500 in credit."
Billing > Overview before a profile exists. Nothing serves until this is done.
Invite your team from Settings > Users. Five roles: Global admin (tenant identity, can create ad accounts), Ads admin (creates ad accounts), Ad account admin (one account and its users; at least one must remain), Ad account member (edits campaigns) and Ad account viewer (read-only).
Step 2: Create the campaign
A campaign holds the type (Standard or Product feed), the objective (Views, Clicks or Conversions), the budget, the dates, the countries and the platforms. Objective and budget type are locked after creation.
Open Create > Create campaign
The Create menu offers Create campaign, Create ad group, Create ad and Upload bulk. Bulk upload is covered below.
The Create menu: campaign, ad group, ad, or Upload bulk. Name it and pick Standard or Product feed
Standard is the chat card. Product feed builds ads from a catalog uploaded under Tools > Feeds (CSV or TXT, hosted URL, or SFTP; items expire after 14 days).
Campaign type: Standard (chat card) or Product feed (catalog-driven). Choose the objective
The UI offers Reach (CPM), Clicks (CPC) and Conversions (oCPC or oCPM, optimized toward one standard event you pick here). Rename note: OpenAI's newer docs and the bulk schema call the CPM objective "Views"; older articles and the UI still say "Reach". Same objective.
Objective: Reach (Views, CPM), Clicks (CPC), Conversions (oCPC or oCPM). Set the budget and schedule
Pick a daily or campaign-total budget; the choice is locked. The form defaults to $100 per day and prints the caps inline: at most twice the daily budget in a day and seven times it in a week. The US minimum is $25 per day; EUR and GBP 15, CAD, AUD and NZD 25, INR 725, JPY 2,500, KRW 25,000.
Budget and schedule. The 2x daily and 7x weekly caps are printed under the field. Target locations and platforms
Include locations, exclude locations, and pick eligible platforms: Android app, Android web, Desktop web, iOS app, iOS web. Targeting is country-level; the United States adds states, DMAs and ZIP codes.
Targeting: include and exclude locations, then eligible platforms.
Advanced settings hold tracking parameters with the macros {campaign_id}, {ad_group_id}, {ad_id}, {ad_account_id} and {oppref}, and custom-audience include and exclude lists.

Step 3: Build the ad group, bid, and context hints
An ad group carries the bid strategy, the maximum bid, and the context hints: free-text descriptions of the conversations your ad belongs in. Context hints are not keywords and do not guarantee placement.
Set the bid strategy and write context hints
Maximize results is the default for eligible new ad groups: OpenAI sets bids toward your objective within budget. Manual: Max bid takes a maximum CPC (Clicks) or CPM (Reach). OpenAI's only published guidance is to start CPC at $3 to $5 per click. Below the bid sits the context hints box: short lines on what the product does, who it helps and when it is useful, up to 2,000 per ad group.
Ad group: Maximize results or Manual: Max bid, then the context hints box. Optionally attach a custom audience bid multiplier
Audiences uploaded under Tools > Audiences (raw or hashed emails and phones) can be attached with a bid multiplier from 0.1x to 10x. Inclusion needs at least 25,000 matched users; exclusion has no minimum.
Tools > Audiences, empty. 25,000 matched users for inclusion.
How to write context hints. OpenAI's ad group article says they "are not exact-match controls, audience targeting rules, or instructions to show your ad only for specific conversations."
| Weak hint | Strong hint |
|---|---|
| running shoes | cushioned everyday running shoes for beginners training for their first 5K |
| CRM software, sales tool, best CRM, CRM pricing | a small sales team choosing its first CRM after outgrowing a spreadsheet |
Step 4: Write the ads
A ChatGPT ad is a title of up to 50 characters, copy of up to 100, one square PNG or JPG no larger than 1200 x 1200, and a landing page. There is no CTA picker; the card shows your brand name and favicon with an "Ad" label.
Check the Text customization toggle
In the campaign's Advanced settings sits a Text customization toggle, on by default. Its helper copy: "AI automatically generates personalized and translated versions of your ad's headlines and descriptions, which may be shown without your individual review or approval." Turn it off if brand or legal review needs every variant.
Advanced settings: tracking macros, audiences, and Text customization (on by default). Write the title, description and link
The editor has a title counter out of 50, a description out of 100, the link and tracking parameters. OpenAI recommends 16 to 24 characters for the title and 32 to 48 for the copy. Front-load the title: the preview truncates at about 35 characters, as an r/PPC advertiser showed in the May beta walkthrough.
The ad editor: title (x/50), description (x/100), link, tracking parameters. Upload the image and check the preview
One square PNG or JPG, no larger than 1200 x 1200; OpenAI publishes no minimum. The preview renders the card as ChatGPT shows it: favicon, brand name, "Ad" label, title, copy, image. For hundreds of real cards, browse the ChatGPT ads library.
Image upload and the live preview card with favicon and "Ad" label.
Step 5: Set up measurement (pixel, Conversions API, partners)
Measurement runs on the OpenAI Pixel, the Conversions API, or both, keyed to a Pixel ID created under Tools > Conversions. The click reference is a URL parameter called oppref; deduplicate pixel and server events with a shared event ID.
Open Tools > Conversions
Three tabs: Data Source, Conversion Events and Event Stream. Each data source carries an EQS column (event quality score).
Tools > Conversions: Data Source, Conversion Events, Event Stream, with the EQS column. Create a data source and install the pixel
Create data source no longer asks for Web, iOS or Android; it issues a Pixel ID, shows a four-step checklist and notes that Automatic Advanced Matching is on. The pixel is a small script in<head>: an async loader that pullshttps://bzrcdn.openai.com/sdk/oaiq.min.js, defines a globaloaiqqueue, then callsoaiq("init", { pixelId: "<YOUR-PIXEL-ID>" }).
Create data source: a Pixel ID, a four-step checklist, and the Automatic Advanced Matching note.
oppref and the Conversions API. Every click appends oppref (the OpenAI click reference) to the landing URL; the pixel stores it in a first-party __oppref cookie, and server-side senders must persist it. The API takes up to 1,000 events per batch at https://bzr.openai.com/v1/events?pid=<PIXEL-ID> with a Bearer key from Settings > API Keys. The standard events:
page_viewed,contents_viewed,items_added,checkout_started,order_createdlead_created,registration_completed,appointment_scheduled,subscription_created,trial_startedcustom, plusapp_installedandapp_opened(Conversions API only)
Dedupe and AAM. When pixel and API both report an action, reuse the same event ID and OpenAI counts it once. Automatic Advanced Matching detects customer data in forms and SHA-256 hashes it in the browser; raw data is never sent.
Partners. Mobile measurement: AppsFlyer and Adjust. Web and offline: Fospha, Hightouch, LiveRamp, Triple Whale and WorkMagic.
Step 6: Launch, review, and fix "Not serving"
Set the campaign, ad group and ads to Active, wait for review, and check the Ads tab for a Serving status. If an ad says "Not serving", hover over it for the reason; the usual causes are billing, missing creatives, a rejection, a bid above the budget, or an unlisted country.
Set everything to Active and check the Ads tab
Launch by setting status to Active at each level. The Ads tab shows thumbnail, name and status; ads read "Serving" once review passes.
The Ads tab: thumbnail, name, status. Hover a "Not serving" ad to see why. Read the "Not serving" reason and fix it
The Campaigns list shows a "Not serving" state and, in this account, a banner saying billing is not set up.
Campaigns list with a "Not serving" campaign and the billing banner.
| "Not serving" reason | Fix |
|---|---|
| Billing not set up | Create the billing profile and add a valid card. |
| Verification incomplete | Finish Persona verification; complete Account name and Logo. |
| No active creatives | Add at least one ad and set every level to Active. |
| Ad disapproved | Hover for the code. Usual causes: a policy conflict, or a landing page that blocks OAI-AdsBot. |
| Daily budget below the effective bid | Raise the budget above the ad-group bid, or lower the bid. |
| Outside the dates, or budget exhausted | Check start and end dates and the total budget. |
| Country not available | The account entity and the targeted countries must be ones ChatGPT Ads serves. |
If none of that resolves it, email [email protected] with the account name, campaign name and ad details.
Reporting: what you get and what you do not
Ads Manager reports impressions, clicks, spend, CTR, average CPC, average CPM and conversions at campaign, ad group and ad level, with device and country breakdowns and CSV export. Data lags delivery by up to seven hours, conversions by 24 to 48 hours, and there is no prompt-level reporting.
The table view carries every metric; the chart view plots trends; CSV export offers the current table, selected rows, or daily values.

- Latency. OpenAI states up to seven hours between delivery and reporting. Attributed conversions take 24 to 48 hours.
- Attribution windows. The click window is configurable per event and defaults to 30 days. View-through is fixed at one day, reported separately as VTA 1d.
- No prompt-level data. You never see which prompt or conversation triggered an impression, and there is no hint-level report. The only slices are ad, device and country.
Bulk upload and the Ads API
Bulk upload takes a three-tab spreadsheet (campaigns, ad groups, ads) with up to 5,000 rows per tab and only the Views or Clicks objectives. The Ads API at api.ads.openai.com/v1 covers campaigns, ad groups, ads, insights and conversions, with one API key per ad account.
Bulk upload. Create > Upload bulk accepts OpenAI's schema template. The rules:
- Maximum 5,000 campaigns, 5,000 ad groups and 5,000 ads per upload, and the same cap per ad account.
- Objective limited to Views or Clicks; Conversions campaigns must use the guided flow.
- Dates in YYYY-MM-DD; country as JSON; context hints as a JSON array such as
["hint1", "hint2"]. - Tab names stay campaigns, ad groups, ads; no renamed headers or merged cells.
The Ads API. Documented at developers.openai.com/ads, base URL https://api.ads.openai.com/v1. Keys are created in Settings > API Keys and each is scoped to one ad account; GET /ad_account verifies it. Endpoints cover campaigns, ad groups, ads, uploads, conversions setup and insights.
What ChatGPT Ads Manager still lacks vs Google Ads and Meta
As of September 2026 there is no video, no CTA button picker, no dayparting, no frequency caps, no agency multi-account structure, no keyword or demographic targeting and no prompt-level reporting. Some of it is in press-reported tests; none of it is in the product.
| Capability | Google Ads / Meta | ChatGPT Ads Manager (Sep 2026) |
|---|---|---|
| Video ads | YouTube, Reels, in-stream | None. Only chat_card and product_ad_template exist. |
| CTA buttons | Selectable per ad | No picker. In early test per Digiday (May 21, 2026). |
| Dayparting / ad schedule | Yes | No. Start and end dates only. |
| Frequency caps | Yes | No. |
| Agency multi-account | MCC / Business Manager | No. Each advertiser owns its account and invites the agency. |
| App data sources | Native app events | Only via AppsFlyer, Adjust or the Conversions API. |
| Keyword targeting | Yes | No. Free-text context hints, not exact match. |
| Demographics and interests | Yes | No. |
| Prompt-level reporting | Search terms and placement reports | No. No prompt or hint-level data. |
Without dayparting or frequency caps, budget is the only pacing lever. Without keywords, context hints and ad copy do the matching.
Run ChatGPT Ads Manager with Sprites
Sprites is an AI marketing agent that drafts the context hints, titles and copy from your site, launches the campaign, and reads the results next to your Google and Meta numbers. You approve every change before it goes live.
- Hints written from your site. Sprites reads your site and drafts context hints as scenarios, not keyword lists, the pattern that delivers.
- Creative sized to the limits. Titles under the 35-character preview cut, copy inside 100 characters, square images at the right size.
- One report across channels. ChatGPT cost per outcome beside Google and Meta, with your own UTMs so clicks and sessions reconcile.
- Fixes before you ask. A "Not serving" status, a blocked OAI-AdsBot or a bid above budget gets flagged with the fix.
Every ads library on Sprites
Search any advertiser by name, or open the library for the platform you are buying on.
Frequently asked questions
What is ChatGPT Ads Manager?
The self-serve platform for buying ads inside ChatGPT, at ads.openai.com. OpenAI calls it OpenAI Ads Manager; searches for ChatGPT Ads Manager, the ChatGPT ads platform and open AI ads manager all mean the same product. You build campaigns, ad groups and ads there, install the pixel, and read reporting.
Where is the ChatGPT Ads Manager login?
Log in at ads.openai.com/auth/login; new accounts start at ads.openai.com/auth/signup. Use the OpenAI account tied to your work email. If the ad account is missing after you sign in, ask an admin on that account to invite you with a role.
Is ChatGPT Ads Manager free?
Yes. There is no platform fee or subscription; you pay only for delivery, billed postpay once unpaid spend reaches the threshold OpenAI assigns to your account. New advertisers see a promotion in the account: spend $500 by September 27 and receive $500 in credit.
What is the minimum budget in ChatGPT Ads Manager?
The minimum daily campaign budget is $25 in the United States, 15 in EUR and GBP, 25 in CAD, AUD and NZD, 725 INR, 2,500 JPY and 25,000 KRW. There is no account-level minimum; the $200,000 minimum applied only to the managed pilot before self-serve opened on May 5, 2026.
How long does ChatGPT Ads Manager setup take?
About an hour of work for a first campaign once verification clears. Persona verification and ad review add waiting time: one r/PPC advertiser in the May beta reported about 15 days from application to approval, and ads show Serving only after review passes.
Can an agency run ChatGPT Ads Manager for me?
Yes, but the account must be yours. Agencies cannot create accounts on behalf of clients and there is no multi-account layer like Google MCC. Your business creates and verifies the account, then invites the agency as ad account admins, members or viewers.
Why is my ad not serving in ChatGPT Ads Manager?
Hover the ad in the Ads tab to read the reason. The documented causes are billing not set up, incomplete verification, no active creatives, a disapproved ad or a landing page that blocks OAI-AdsBot, a daily budget below the ad-group bid, a campaign outside its dates, and an unavailable country.
Why does ChatGPT Ads Manager say Reach instead of Views?
Rename lag. OpenAI renamed the CPM objective from Reach to Views; its newest docs and the bulk-upload schema say Views, while the live campaign form still says Reach. Same objective: you pay per 1,000 impressions. Clicks (CPC) and Conversions (oCPC or oCPM) are the other two.
Is there a ChatGPT Ads Manager app or plugin inside ChatGPT?
Not one OpenAI has announced or documented. The documented programmatic route is the Ads API at api.ads.openai.com/v1, with keys created under Settings > API Keys and scoped to one ad account. Tools like Sprites build and run campaigns through that route for you.
Can I change the country or currency later?
No. Country, currency and time zone are fixed when the account is created and decide billing, reporting and which markets you can advertise in. If you picked wrong, create a new advertiser account; OpenAI allows several per company.
Set it up once, then let Sprites run it
Sprites writes the context hints and copy, launches, measures and optimizes your ChatGPT ads next to Google and Meta, from one place. Every change waits for your approval.