How to Build ChatGPT Ads: Our Step-by-Step Playbook
Worldwide Click-Through Rate Has Roughly Doubled Since Launch
Summary
ChatGPT is now an ad channel. OpenAI's self-serve Ads Manager (Beta) is open to advertisers in 56 countries, with no minimum spend. The platform has changed a lot in a few months. It now has a Conversions objective with both click and impression billing, automated bidding, custom audience uploads, view-through measurement, dynamic URL macros, and third-party measurement through Triple Whale, Hightouch, LiveRamp, AppsFlyer, Adjust, Branch and Singular. Meanwhile, the channel itself is moving fast: ad-eligible reach among US users has hit 43%, and CTR has climbed 112% since launch. For the full analysis, see our State of ChatGPT Ads report, created in partnership with Similarweb.
It is still a beta, and OpenAI reviews every account and ad by hand, so plan for lead time. This playbook covers what we've learned running campaigns: what works, what's changed, and the setup details that break launches.
Key Takeaways
ChatGPT Ads are live and self-serve in 56 countries, including the US, UK, most of Europe, India, Japan, Korea, Brazil, Mexico and the Gulf states. There is no minimum spend. Daily campaign minimums vary by market, and the US standard is $25/day.
Only adults (18+) on the Free and Go plans see ads. Plus, Pro, Business, Enterprise and Edu users never do. If your buyers mostly use paid plans, your reach is smaller than ChatGPT's user count suggests.
It's still a beta. Accounts and ads go through manual review with no SLA, and OpenAI can't expedite. Start onboarding weeks before you need to launch.
Targeting works on conversations, not keywords. You describe themes in plain language through "context hints," and ChatGPT matches ads to what the user is actually asking.
Two big gaps have closed, each with a catch. Conversions now offers click or impression billing, but neither is CPA bidding. Custom audiences need 25,000 matched users to target, which most B2B lists won't reach, though exclusion audiences have no minimum and suppression works at any size. There are still no lookalikes, no retargeting, and no firmographic targeting.
Budget for real costs, not the recommended ones. OpenAI suggests a $3–5 CPC. In our pilots, real B2B intent clears $15–20, about the same as those advertisers' Google and Bing search CPCs. Plan for $5–10k/month.
A daily budget is now an average, not a ceiling. A campaign can spend up to 2x its daily budget on a strong day, and actual spend is what gets billed. Don't promise anyone a fixed daily maximum.
What Launched
- URL: ads.openai.com. Advertiser API: api.ads.openai.com/v1.
- Status: Beta with a gradual rollout. OpenAI reviews both accounts and ads by hand before anything delivers.
- Where you can buy ads: 56 countries have self-service access, including the United States, Canada, the United Kingdom, Ireland, France, Germany, Spain, Italy, the Netherlands, the Nordics, most of Central and Eastern Europe, India, Turkey, Israel, Saudi Arabia, the UAE, Japan, Korea, Australia, New Zealand, Brazil and Mexico. The legal entity that advertises and gets billed must be based in an available country. Advertisers in the newest European markets can also start through the OpenAI Ads Solutions team or an agency or technology partner. Check the current list before you promise a client coverage.
- Minimum spend: None. The daily campaign minimum varies by market and currency; the US standard is $25/day.
Who Sees Ads
- Plans: Only Free and Go users see ads.
- Age: 18+ only. Ads are hidden when a user says they are under 18 or is predicted to be. Logged-out users only see ads suitable for all ages.
- No ads appear in the ChatGPT Atlas browser or in Temporary Chats.
- User controls (Free/Go, in any region where ads run or are about to): users can turn off personalization, dismiss ads, see why an ad appeared, and clear their ads data. Turning off personalization keeps matching to the current conversation but stops using past chats. Cleared ads data is retained for up to 30 days after deletion.
- Personalized ads are not initially available in the European Economic Area or Switzerland. Plan European campaigns around context hints and creative, not audiences.
- Free users can choose "Ads-Free," which removes ads in exchange for lower usage limits and less tool access.
55% of Users Are Ad-Eligible Worldwide, 46% in the US
Share of ChatGPT users by plan tier, worldwide and US
Graphite 10-Step ChatGPT Ads Playbook
What to do next, based on our State of ChatGPT Ads Report.
- 01 - Budget It Like a Test, Not a Core Channel: CTR has doubled since launch, but the advertiser base hasn't settled. Keep spend experimental.
- 02 - Check Product Fit First: Top 10 advertisers all sell something buyable in one sitting. Lead with offers users can purchase right away, and test long sales cycles with caution.
- 03 - Write Native Copy: Top advertisers write 98% new copy. Aim for net new copy for this channel that directly addresses a use case.
- 04 - Scale Creatives Gradually: More ad creatives generally help increase impression share, but there's no fixed number to hit. Scale as you grow.
- 05 - Reuse the Pages You Have: Feature, Pricing & Product pages are the most used landing page type. Test those first.
- 06 - Start Small on Landing Pages: Most advertisers use five or less. Scale pages up as ad volume grows, not before.
- 07 - Benchmark by Category: Landing page norms vary 30x by category. Use your own category's median, not the overall one.
- 08 - Treat as Incremental, Not a Replacement: Google Search still carries far more ad volume than ChatGPT or Meta. Budget it as an addition, not a swap.
- 09 - Prioritize Early Turns, Don't Forget the Long Tail: The first few turns get the highest CTR and impression share. Most conversations continue past that point, so there's still an audience to reach later on.
- 10 - Expect Turnover, Plan to Re-Test: Few advertisers hold a steady top spot. Build for iteration, not "set and forget."
Ad Format
Each ad has six parts: advertiser name, favicon (logo), title (headline), copy (description), landing page and image.
Character limits and image specs below come from OpenAI's bulk-upload checklist. The Create Ads help page doesn't give numbers, so confirm the exact limits in the ad builder.
- Title: 16–24 characters recommended, 50 max.
- Description: 32–48 characters recommended, 100 max.
- Image: square PNG or JPG, up to 1200×1200. In the UI or bulk upload, host it at a public URL that opens straight to the image. Through the API, upload the file once and reuse the
file_idit returns. Current docs set no rule on text overlays. - Sponsored Agents are a second format, in limited alpha. They let someone open a conversation from an ad and chat with an AI representative of the business about its products or services. Only selected advertisers have access and OpenAI is not taking early-access requests, so you may see them in ChatGPT without being able to buy them.
Creative Best Practices
- Build for coverage. Write many title and copy variations for each offering, so the system can match you to more conversations.
- Give every variation its own angle. Ten ways of saying the same thing don't add coverage.
- Titles: state the value plainly. Specific and informative beats broad marketing language.
- Copy: add something the title didn't say, such as a benefit, feature or use case. Keep it plain.
- Landing pages: send people to the most relevant page, not your homepage. Keep the page consistent with the ad, add your own UTM parameters to each creative, and make sure OpenAI's crawlers can reach the page.
- Images: simple, relevant, and consistent with the title and copy.
- Suggested drafts: Ads Manager may offer an "Add new ad" option that prefills the image, title and description from your website. It reuses copy from your pages rather than writing new copy, and you review and edit it before it runs.
- What we've seen: creative that promises a concrete, fast fix for a painful task beats feature-led or positioning-led creative. Judge it on deep conversions, not CTR alone.
Bidding + Pricing
- Three objectives: Views (CPM), Clicks (CPC) and Conversions (oCPC, beta). Campaign setup calls the first one "Views"; the help center's Basics article still says "Reach." They are the same CPM objective.
- There are two bid strategies, set at the ad-group level. Maximize Results lets OpenAI set and adjust bids to get the most clicks or conversions from your budget. It is selected by default for eligible new ad groups, it requires a daily budget, and it does not guarantee any CPA, CPC or ROAS target. Manual: Max bid is the alternative, where you set a max CPM for Views, a max CPC for Clicks, or a Bid Cap for Conversions.
- Our take: start manual. Maximize Results optimizes for volume, and on B2B intent volume is the wrong target. You want the expensive clicks. Switch to it once you have conversion data worth optimizing against. You can move an ad group between the two at any time, as long as the campaign has a daily budget.
- CPC: OpenAI recommends a $3–5 starting max bid. In our pilots, real B2B intent clears about $15–20, in line with the same advertisers' Google and Bing search CPCs. Bid high at the start to get delivery, then bring it down.
- Ads Manager shows bid-strength guidance. Treat it as a hint for getting delivery, not a floor.
- The auction is second-price and weighted by relevance, so a better-matched ad can win with a lower bid.
- Conversions steers delivery toward the users likeliest to complete your conversion event. Eligible advertisers pick the billing basis at setup: oCPC bills per valid click, oCPM bills per impression. Impression billing is in beta and OpenAI says access is expanding quickly. Neither is CPA bidding. You are never billed per conversion.
- Conversions campaigns need at least one supported standard conversion event. Custom events can't be used. Each campaign optimizes toward exactly one event, fixed when you create it. Check your event setup before you choose this objective: if your key action fires as a custom event, re-fire it as a standard one first.
- On a Conversions campaign, Bid Cap is the most you'll pay for a conversion, not for a click. The system uses how likely a click is to convert to set a per-click bid. You're billed per click at the auction price, so Bid Cap doesn't guarantee a cost per acquisition. OpenAI doesn't publish a recommended amount.
- The Conversions objective first appeared in product feed campaigns. It's now available in standard campaign setup.
- You can create a Conversions campaign three ways: choose the objective at setup, clone a CPC campaign, or create it in bulk. Cloning fills in the conversion event if only one is eligible; otherwise it asks you to pick.
- To switch a CPM campaign to CPC, hover over the campaign name in Ads Manager and select "Clone as CPC."
Budgets
- Since August 2026, a daily budget is an average, not a cap. It sets your average daily spend over a fixed week ending Sunday at midnight, not over a rolling seven days. If you change the budget mid-week, the weekly limit is prorated from the change until Sunday.
- A campaign can spend up to 2x its daily budget on one day and up to 7x across the week. You're billed for actual spend, so a $100 daily budget can bill $200 on a strong day.
- Existing campaigns switched over automatically with the same amounts. No action needed.
- Daily budgets now pace spend across the day automatically.
- Minimum: varies by market and currency. The US standard is $25/day per campaign.
- A second floor catches people out: on a daily-budget campaign using fixed bidding, the daily budget must be at least the highest effective bid across its ad groups, including audience adjustments. If you run a $250 bid cap, you cannot set that campaign's daily budget below $250 until you lower the bid. This does not apply to automated bidding or lifetime budgets.
- Some choices can't be undone. You can switch from a total budget to a daily one, but not back. The objective is locked after creation, and so is the conversion event on Conversions campaigns. To change either, build a new campaign.
- Our take: use a daily budget. In our early tests a total budget spent everything on day one. OpenAI has since added pacing to campaign total budgets, using your remaining budget and end date to spread delivery, with a 365-day maximum pacing period and a 60-day default if you set no end date. That fixes the failure we hit, but pacing still does not guarantee your budget lasts to the end date. Daily budgets aren't a ceiling either, so track spend against the weekly limit, not the daily number.
Targeting
- No keywords. Ads are matched to the context and intent of the conversation.
- The system reads four things: context hints (set per ad group), landing-page content, ad title and ad copy. Matching happens in two steps: it pulls candidate ads, then an LLM re-ranks them.
- Context hints are plain-language themes, not exact-match keywords, and they don't guarantee delivery. Keep each ad group to one theme and write descriptive phrases. An ad group holds up to 2,000 context hints. OpenAI now has a dedicated article on writing them; until recently the guidance was buried inside Create Ad Groups.
- Custom audiences: upload customer lists (email, phone or GAID, hashed or unhashed) and use them to include or exclude people. You can add, remove, replace or merge members later without rebuilding the audience or touching the campaign.
- Inclusion targeting and audience bid adjustments need at least 25,000 matched users, and OpenAI recommends 100,000. Exclusion audiences have no minimum. An audience under 25,000 shows as Ready with an "Exclusion only" note, which makes suppression the one custom-audience play available to a B2B advertiser. Uploaded rows are not matched users: invalid, duplicate and unmatched identifiers don't count, so budget for shrinkage.
- Audience bid adjustments are new. A multiplier raises or lowers your bid for people in an audience without making everyone else ineligible, so you can lean into existing customers while still reaching new ones.
- If you target the EEA or Switzerland, avoid custom audiences for now. Ads personalization isn't available in those markets.
- Geo: target by country at the campaign level. In the US you can also target by state, DMA or ZIP (added June 3, 2026). You can now exclude locations as well as include them. Use the location picker to confirm what's supported.
- Platform: choose where the campaign can deliver across the native ChatGPT apps and web browsers. The API accepts
ios_app,android_app,desktop_web,ios_web,android_web, andwebfor all browsers at once. Granular web values arrived September 10, 2026; campaigns already usingwebkeep working. An iPhone user in a browser counts as web inventory, not iOS app. - Still missing: lookalikes, demographic targeting and firmographic targeting. Uploaded lists are the only audience source, so you can't build audiences from site visitors or retarget.
Campaign Structure
- Three levels: Campaign (objective, budget, dates, countries) > Ad Group (context hints, max bid) > Ad (title, copy, image, landing page).
- Two ways to build: guided setup or bulk CSV upload (strict schema). Watch out: bulk updates replace context hints instead of adding to them. Upload 3 hints to an ad group that has 20, and you're left with 3.
- Limits: up to 5,000 campaigns, 5,000 ad groups and 5,000 ads per ad account.
- What we've seen: run A/B tests as separate campaigns, not separate ad groups. Budget sits at the campaign level, and the platform shifts spend to the ad group with the higher CTR, so the other side of the test gets starved.
Product-Feed (Catalog) Campaigns
Built for retailers with large or frequently changing catalogs, and one of the best-performing ad types on the platform so far.
- Upload your feed by SFTP (password or SSH key). Up to 2 million products, with one feed connection per ad account.
- Titles and descriptions come from the feed. Every product can appear in ads unless you mark it false. During the beta, feed products are used only in ads, not in regular ChatGPT answers.
- Flow: Tools > Feeds > Create Feed (this generates your SFTP details) > upload and validate > create a "Product feed" campaign > add an ad group with product filters > set up the ad template (image selection only, for now) > review and launch.
- Use the
ads_metadatafield (for examplebidding_tierorproduct_line) to group products beyond the built-in filters. - A refreshed product card with price and star ratings is rolling out.
- A multi-product carousel, showing several products from one advertiser in a single ad, is live with its own reporting. Card impressions and card clicks are reported separately from ad impressions and ad clicks, and a card impression is not billable.
Programmatic API
- Live at api.ads.openai.com/v1. It uses bearer-token auth scoped to each ad account, and you manage API keys in account settings.
- You can create, read, update and delete campaigns, ad groups, ads, ad accounts, insights, files and product feeds. You can also activate, pause or archive them. Archiving can't be undone.
- Money is expressed in micros (value × 1,000,000). Rate limits are about 600 requests/min per endpoint and 1,200 requests/min per account.
- The Bulk API creates and updates campaigns, ad groups and ads asynchronously, up to 1,000 operations per job. It is in limited preview and has to be switched on per ad account, so confirm access before you design a workflow around it. Delta Feeds is gated the same way.
- We run our campaigns and reporting through the API. Insights can be split by product, country or device; conversions come from a separate endpoint.
Measurement + Reporting
Three ways to send conversions:
- JavaScript pixel: goes in the page head. It picks up OpenAI's click ID (
oppref) from the landing URL automatically, stores it in a first-party__opprefcookie, and sends events withoaiq("measure", ...). You can deploy it through GTM. - Image tag: sends a single event when the page loads, without JavaScript. It does NOT pick up
opprefautomatically (you have to pass it yourself) and doesn't support identifiers. Use it only where JavaScript can't run. - Conversions API (server-side): bearer auth, POST to bzr.openai.com/v1/events, up to 1,000 events per batch. It's more reliable than the pixel alone. Keep
opprefand send it with your server events.
Events and identity:
- 12 standard events plus custom:
page_viewed,contents_viewed,items_added,checkout_started,order_created,lead_created,registration_completed,subscription_created,trial_started,appointment_scheduled,app_installedandapp_opened. Money values use the smallest currency unit (12999 = $129.99).app_installedandapp_openedcan only be sent through the Conversions API. - To avoid double counting between the pixel and the Conversions API, use the same value for the pixel's
event_idand the API'sid, and matchcustom_event_name. - Hashed identifiers are optional but improve matching:
email_sha256,phone_number_sha256andexternal_id_sha256on the pixel, plusphone_numbers_sha256,first_names_sha256andlast_names_sha256on the Conversions API. On the Conversions API you can also send raw geo, IP and user agent. Hash as lowercase, trimmed, 64-character hex SHA-256. Normalize phone numbers to E.164 before hashing. What you cannot send is raw values: no raw emails, phone numbers, external IDs or names.
Automatic advanced matching (AAM):
- Matches more conversions using hashed information people enter in your website forms.
- How it works: the pixel reads what someone types into a form and hashes it in the browser. Hashing is one-way, so it can't be turned back into the original. Only the hashed version is sent; the raw email or phone number never leaves the page.
- On by default for new web pixels, and switched on for all existing web pixels on August 17, 2026.
- To turn it off: Tools > Conversions > Data Source > Edit pixel. To turn it on everywhere, use "Enable for all Web data sources" in the same place.
- Why it matters: AAM changes what customer data goes to OpenAI. Check your pixel settings and make sure the setting matches your privacy policy and what your legal team has approved.
Diagnostics and third-party measurement:
- Pixel diagnostics: Tools > Conversions, panel on the right. It lists dropped events with the field affected, the error type and a suggested fix. Check it first before debugging a zero-conversion campaign by hand.
- Event quality gives each data source a score and a list of warnings, such as missing matching information, delayed server events, or repeated event firing. It refreshes daily over a rolling seven complete days, so a fix shows up gradually rather than immediately.
- Triple Whale: measures ChatGPT Ads alongside your other channels. Its Sonar Optimize feature sends stronger conversion signals back to OpenAI.
- Hightouch: sends conversion events to ChatGPT Ads.
- LiveRamp: sends online and offline conversion events. Set it up through your LiveRamp rep.
- AppsFlyer, Adjust, Branch and Singular: app installs and in-app events.
Reporting:
- Metrics at campaign, ad group and ad level: Impressions, Clicks, Spend, CTR, Avg CPC, Avg CPM, and Conversions (once measurement is set up).
- Views: table, trend charts, and CSV export (cumulative or daily).
- Attribution windows are now yours to set. Pick a 7-, 14- or 30-day click-through window, and either 0 Day or 1 Day for view-through. Any combination works. Change them under Edit columns > Conversion Events > Attribution windows.
- View-through conversions exist. A view-through is counted when someone converts within a day of seeing an ad and no qualifying click takes credit; if both qualify, the click wins. They need no change to your pixel or Conversions API setup.
- Read the Conversions column carefully before you report it. With the view-through window at 1 Day, Ads Manager folds view-throughs into the single Conversions total. Set it to 0 Day and the total is click-through only. Add the Click-through conversions and View-through conversions columns so you always know which you are looking at, and pin the window setting before you compare two date ranges.
- By default, all conversions are added into one total. To split them by event: three-dot menu > Edit columns > Conversions & events > choose events > Save. Those columns also appear in CSV exports, with headers like
attributed_event_registration_completed. Availability varies by account and reporting period. The Segment menu only splits by Device and Country and won't add event columns. - Why a conversion shows 0: the event type has to match exactly. For custom events, Event type must be "Custom" and
custom_event_namemust match exactly (a matching display name isn't enough). The conversion has to be attached before traffic arrives, and fixing a mismatch doesn't backfill past data. - Dynamic URL parameters are supported through a query string template you can set at account, campaign, ad-group or ad level. Macros including
{campaign_id},{ad_id}and{oppref}, OpenAI's click ID, fill in at delivery. Pass{oppref}into your CRM and you can join platform clicks to closed revenue without relying on the pixel. Where levels set the same parameter, precedence runs: destination URL, ad, ad group, campaign, account. - Tip: macros return IDs, not names. Keep a readable campaign and creative name in your UTM string too, or your CRM fills up with IDs nobody can read.
- Reporting lag: impressions, clicks and CTR refresh roughly every 15 minutes. Spend is delayed 7–8 hours, so a campaign showing clicks and $0 spend is normal and is not a billing error. CPC and CPM depend on settled spend and update later still, which means dividing today's spend by today's clicks will not match the reported CPC. Conversions take 24 to 48 hours. You should see impressions and clicks within 24 hours of launch.
- Privacy: advertisers only get aggregated, anonymous reporting. No chats, memories, names, emails, precise locations or IPs.
- What we've seen: the platform matches only a small share of conversions, so its counts are a floor. Use your CRM (UTM-tagged inbound) as the source of truth.
Landing-Page Crawlability (Hard Requirement)
If OpenAI can't crawl your landing page, your ads won't be approved or serve. This is the most common launch blocker we see.
- You must allow OAI-AdsBot. OpenAI also recommends allowing OAI-SearchBot.
- Remove blocks at every layer: robots.txt, firewall or bot protection (Cloudflare and Akamai often return 403 errors to crawlers), and CAPTCHA, human verification or JS challenges.
- Cloudflare verifies and allowlists OAI-AdsBot. OpenAI's IP ranges are at openai.com/adsbot.json and openai.com/searchbot.json. Large bulk uploads can hit 429 rate-limit errors, so upload in smaller batches.
- App-store links, deep links, and pages behind a login or region block may not be crawlable. Link to a web page anyone can reach directly.
Eligible Categories + Excluded Verticals
Source: openai.com/policies/ad-policies
- Allowed in early beta: lifestyle and household goods, local services, travel and experiences, digital products, and education. OpenAI says the list will grow.
- Not allowed: adult or sexual content (including dating apps), alcohol over 0.5% ABV, tobacco, vaping and nicotine, gambling, political advertising, and individual job listings or housing rentals and sales. You may link to a jobs or listings platform as long as neither the ad nor the landing page features a specific listing.
- Regulated categories: advertisers in health, financial services and legal services may qualify if they meet strict criteria, and may be asked to prove licensure. US legal services became eligible in August 2026. Health, financial and legal services outside the US are generally prohibited. Ads still never run against mental and personal health conversations, political content or other sensitive topics, though OpenAI stopped categorically blocking medical, legal and financial advice contexts in April 2026. Confirm you've been accepted during onboarding before counting on this channel.
- Content rules: ads must be truthful and not misleading. No unsupported claims about capabilities, pricing, results, affiliations or comparisons, and no false endorsements.
- One more from the September 2026 policy update: OpenAI reserves the right to decline ads that conflict with its advertising principles, business interests, or competitive position. If you advertise anything adjacent to OpenAI's own products, price that risk in.
Account Setup: Five Steps
OpenAI's setup walkthrough is here: Official video here. There are five steps, and campaigns won't deliver until you've done all of them.
- Step 1: Create the account at ads.openai.com. You need an OpenAI account on a work email. One owner per advertiser creates the account, then invites the team.
- Step 2: Onboarding and verification. Enter business details (name, website, logo, industry) and account details (country, currency, time zone), then verify identity and eligibility through Persona. Review runs in a rolling queue with no SLA. OpenAI can't speed it up, and applying twice doesn't help.
- Step 3: Complete account info (Settings > Account info). Enter the advertiser name and logo exactly as you want them to appear. Ads won't serve until this is done.
- Step 4: Billing and payment. Add a billing profile (business name, invoice email, billing address) and a payment method (card and billing address).
- Step 5: Invite your team (Settings > Users > Invite).
Gotchas:
- Country, currency and time zone can't be changed after the account is created. If you get one wrong, you need a new account.
- A company can have several advertiser accounts, but each one has to be created with a different email. Users can then be invited to multiple accounts and switch between them.
Billing
- You pay after spending. You're charged each time your balance reaches a set payment threshold (for example, $25), and any remaining balance is charged at month-end. The threshold rises as you build payment history. Neither you nor support can change it.
- A payment threshold is not a spend cap. The threshold decides when your card gets charged; it does not limit delivery. For an actual ceiling, use account spending limits: a date-range window across all campaigns, or a daily account limit that renews at midnight in the account timezone for accounts on postpaid invoice billing. Account limits and campaign budgets apply independently, so raising a campaign budget will not restart delivery against an exhausted account limit.
- Adding a card can place a temporary authorization hold, shown in your card's currency. It is not a charge and is released after verification, but it may stay visible on the statement for 8 days or longer depending on the bank. Warn finance before they open a ticket.
- If a payment fails, your campaigns, ad groups and ads move to "Not serving" until it's fixed.
Admin at Scale
- Users are managed for your whole organization in the Global Admin Console (admin.openai.com), which now also holds API keys and change logs.
- Four Ads roles: Ads Admin (can create ad accounts), Ad Account Admin (full access), Ad Account Member (can edit campaigns, no admin controls) and Ad Account Viewer (read-only). Keep at least one Ad Account Admin on every account.
- Organization-level roles are just Global Admin and Member, with no custom roles. One email can hold roles on multiple ad accounts, which is how agencies manage several advertisers.
- SSO (Required, Optional or Off) and SCIM are set up in the Global Admin Console. SCIM here only provisions Ads users.
Why a Campaign Is Not Serving (Troubleshooting)
Hover over the status to see why a campaign isn't serving. Common reasons: it's still under review, account or business verification isn't finished, the budget is used up, the end date has passed, a payment failed, the ad was rejected for policy (edit and resubmit, or ask for another review), or the landing page or image blocks OpenAI's crawlers. Wait at least 24 hours after launch before escalating, and remember reporting can lag ~7 hours. Support: ads-support@openai.com.
Where It Fits (And Where It Does Not)
Strong Fit:
- Advertiser and buyers are both in a supported country. The list now runs to 56 and covers most of Europe, so this is rarely the blocker it was six months ago. Confirm the advertiser's billing entity is based in one of them.
- Eligible categories, especially considered purchases that people research in ChatGPT first.
- Brands with strong AEO visibility. The prompts you already track tell you exactly which context hints to write.
- Advertisers with good imagery and a crawlable landing page.
Weak Fit:
- Audiences who mostly use Plus, Pro, Business, Enterprise or Edu, which show no ads.
- Verticals that rely on demographic or firmographic targeting. Customer-list audiences exist, but inclusion needs 25,000 matched users and most B2B lists won't reach that. Exclusion still works at any size.
- Direct-response programs that need true CPA bidding from day one. The Conversions objective optimizes toward conversions but bills per click or per impression, never per conversion.
Avoid / Gate carefully:
- Not allowed: adult and dating, alcohol, tobacco and vaping, gambling, political advertising.
- Regulated (health, financial services): may qualify under strict criteria, but ads won't run next to sensitive content. Confirm during onboarding.
CTR Is Highest in Brazil, Mexico and Japan
All-time CTR by market, launch to September 2026
Researchers
Co-founder of Graphite, the research-driven growth agency behind work for Notion, n8n, and BetterUp. Angel investor in startups and venture funds including 500 Global, and previously a growth advisor to MasterClass. Published by IEEE for research on energy-efficient routing in optical networks at Alcatel-Lucent, now Nokia.
Read Full BioCarlos Romero is Director of Paid Media at Graphite.io. He has spent 12 years in performance marketing and eCommerce across Latin America and the US, working with brands including Samsung Electronics, Adidas, Victoria's Secret, Nestlé, Bath & Body Works, Panasonic, Reebok, Mercedes-Benz, Jeep, and Mitsubishi. At Samsung Electronics, he led digital media strategy across 15+ markets. He holds an MBA from EUDE Business School and a double BBA in Marketing and Professional Sales from Harding University.

