ChatGPT Ads: the platform is real, the measurement is what I would test first
- ad-platforms
- chatgpt
- measurement
ChatGPT Ads is OpenAI's advertising product: paid placements shown below a ChatGPT answer to people on the Free and Go plans. It started as a US test on 9 February 2026, opened a self-serve Ads Manager in May, reached 31 European markets in August, and on 31 August OpenAI said the business had reached a $1 billion annualized revenue run rate in under 200 days. I have not put a dollar into it yet. What follows is the checklist I would run before the first fifty, built from the help center rather than the launch coverage.
- What it is. One or more ad units under the answer, labeled as sponsored, each with six parts: advertiser name, favicon, title, copy, landing page, image. Only Free and Go users see it. Plus, Pro, Business, Enterprise and Edu accounts do not.
- How it targets. Context hints on the ad group, written as sentences about who the product helps and when, plus location targeting and custom audiences built from your own lists. Not keywords, and no exact match.
- How it bills. CPM for Reach, CPC for Clicks, click-billed oCPC for Conversions. OpenAI suggests a $3 to $5 starting bid per click and runs a relevance-weighted second-price auction.
- How it measures. OpenAI Pixel, Conversions API, a click reference called oppref, and one event ID to deduplicate both paths. Conversions land 24 to 48 hours late.
- The verdict: WATCHING. The docs are good enough to plan a test. Nothing on this site has run one.
The closest thing on this site to a running test is the Meta Ads API review, and most of what follows is me reading OpenAI's documentation against the scars from that one.
Does ChatGPT have ads?
Yes. Since 9 February 2026, ChatGPT shows ads to users on the Free and Go plans in the United States, and self-serve buying is now open in 52 countries, Poland included. Ads appear below the end of a response, are labeled as sponsored, and never show to Plus, Pro, Business, Enterprise or Edu accounts.
In the Ads in ChatGPT article the exclusions are longer than the inclusions. No ads for accounts identified as under 18, none in Temporary Chats, none in the ChatGPT Atlas browser during the test, none near personal health, mental health or politics, and no political advertising at all. A unit can hold items from several advertisers, so the slot is not yours alone, and what flows back to you is aggregated views and clicks, never the conversation.
Why does ChatGPT now have ads?
OpenAI's reason is access: ads help pay for the Free and Go plans so that more than 1 billion weekly users keep using ChatGPT. Its principles say ads never influence answers, conversations stay private from advertisers, users control personalization, and the company does not optimize for time spent. The business reason arrived on 31 August: a $1 billion run rate.
The 31 August post is the one with numbers. Under 200 days from launch to a $1 billion annualized run rate. Tens of thousands of marketers, a count from the 18 August post. Self-serve opening the same day across India, Europe, the Middle East and North Africa. And one line for anyone small: since Ads Manager opened in May, small and medium businesses "now represent a material share of the business".
The 5 May post brought the beta self-serve Ads Manager and CPC bidding next to the original CPM. The 18 August post added 31 European countries and counted what landed in six months: conversion optimization, geo-targeting, custom audiences, the Pixel, the Conversions API and third-party measurement integrations. The availability table listed 52 self-service countries on 2 September, Poland included; an account does not give you access before your country is supported.
Where the ad shows up and who sees it
The format has six components and no variants: advertiser name, favicon, title, copy, landing page and an image, rendered below the response, separated and labeled. Plus, Pro, Business, Enterprise and Edu accounts are outside your reach, and so is any Free user who took the ads-free option with lower limits. What is left are Free and Go users who accepted the trade, on a topic the system judged safe and relevant.
Personalization changes by region. In the European Economic Area and Switzerland personalized ads are not initially available at all, so a European campaign is matched on the conversation, the landing page, the ad text and your context hints, with nothing from the user's history.
Context hints are not keywords
The system selects ads on expected relevance and outcomes. It reads the context and intent of the current conversation, the landing page, the title and copy, and the context hints and targeting selections. Where personalization is on, it adds signals from the user's wider ChatGPT use. Between eligible ads, relevance and bids decide.
Context hints live on the ad group and are the closest thing to a targeting control. The ad group article defines them as descriptions of what the product offers, who it helps, or when it may be useful, with the example: not "running shoes" but "cushioned everyday running shoes for beginners training for their first 5K". Then it draws the line: not exact-match controls, not audience targeting rules, no guarantee of appearing for particular words, topics or audiences.
That is a brief for a model, and a model matches meaning, not strings. So the docs ask for coverage instead of precision: one ad group per product category or intent, several ads per group, and per the ad creation guide many distinct title and copy variations, so the system finds more conversations where the offer fits.
Beyond hints there are three hard layers: location targeting, platform targeting, which the 31 August post names without describing it, and custom audiences built from your own lists of emails, phone numbers or their SHA-256 hashes. Inclusion targeting and bid adjustments need at least 25,000 matched users, OpenAI recommends 100,000, and exclusions work at any size. A small business will not clear 25,000 for inclusion. It can upload its customer list as an exclusion on day one, and I would.
How much will ChatGPT ads cost?
There is no price list. You bid. Reach campaigns pay per thousand impressions, Clicks campaigns pay per valid click, and Conversions campaigns still pay per click while bidding toward an event. OpenAI recommends starting CPC bids at $3 to $5, runs a relevance-weighted second-price auction, and says it has no performance benchmarks yet.
The bid is a maximum at the ad group level. New ad groups default to Maximize results, which sets bids for you within budget and, in OpenAI's own words, does not guarantee any CPA, CPC or ROAS target. The alternative is "Manual: Max bid".
Conversion-optimized campaigns are where the constraints pile up, and each one is a decision you cannot undo. oCPC needs conversion tracking through the Conversions API or the JavaScript Pixel plus one supported standard event; custom events are not supported. The objective and the event cannot be changed after creation. The Bid Cap is the most you will bid for a conversion, billing stays per valid click, and the article says there is no recommended bid amount at this time.
On returns, the honest source is the FAQ: "ChatGPT Ads does not yet have performance benchmarks across advertisers, industries, or campaign types." The 3x return on ad spend that the 31 August post prints for one ecommerce advertiser is a case OpenAI chose to publish, not a floor.
Measurement: Pixel, Conversions API and oppref
This is the part I would build first, because a paid click without an attributed event is just a session. The conversion measurement article describes a data source in Ads Manager fed by the OpenAI Pixel, the Conversions API, or both. A conversion counts when the event matches the one configured on the campaign and can be connected to an eligible click inside the attribution window.
The connection runs on a click reference called oppref. It is appended to the landing
page URL, ?oppref=gAAAAAb123 in the docs' example, the Pixel stores it in a
first-party cookie, and server-side events can carry it in the Conversions API call. Two
of the five rules in that article carry the whole implementation plan: preserve oppref through
redirects and landing-page navigation, and when the same conversion goes through both
the Pixel and the API, use the same event ID so OpenAI can deduplicate it.
That is Meta's Pixel plus Conversions API design, with Meta's trap. The
Meta Ads API review has actions versus conversions and
duplicated omni_* rows; here the equivalent is a Pixel dropped in through a tag
manager, a server integration added later, and no shared event ID between them. The
docs allow a tag manager as long as it does not block or reorder the calls. Automatic
advanced matching hashes the customer information it finds in your forms, in the browser
with SHA-256, and never sends the raw value; the oCPC article recommends it.
What Measure Results shows: impressions, clicks, spend, CTR, average CPC, average CPM and conversions. The Conversions column counts click-through only; view-through conversions sit in a separate VTA (1d) column with a window fixed at one day. Attributed conversions take 24 to 48 hours to appear.
Two traps, one per article. A custom event can fire, be accepted, and still show zero because its name does not exactly match the configured event. And the measurement article's list of reasons Ads Manager and your analytics disagree ends with "a difference does not necessarily indicate an error". I learned the consent half of that in August on a client's shop: analytics counted only sessions that accepted the banner, so every paid source told a different story. Compare the same days in the same time zone, or do not compare.
The first thing to check: your landing page and OAI-AdsBot
Before any of that, the ad has to pass review, and review starts with a crawler. The crawler guidance is direct: you must allow OAI-AdsBot, and the crawler both validates the landing page against the ads policies and reads it to judge relevance. Three layers can stop it: a robots.txt that disallows the path, bot mitigation from providers such as Cloudflare or Akamai returning 403, and human-verification logic such as CAPTCHAs or JavaScript challenges. OpenAI says OAI-AdsBot is verified and allowlisted by Cloudflare.
I checked this site on 4 September, two days after it moved behind Cloudflare. The
robots.txt is User-agent: *, Allow: /, plus the sitemap line, and a HEAD request to
the homepage returns 200 with Server: cloudflare. The same day, a Python script with
urllib's default user agent got a 403 from the same domain. A spoofed OAI-AdsBot user
agent from a home connection proves nothing,
because Cloudflare verifies bots by IP. The test that counts is the one in the docs:
submit the ad, read its status, Serving or Not serving, and fix robots, WAF and
challenges until it flips.
What Meta and Google have that ChatGPT Ads does not
The right column is what the 27 help center articles listed on 4 September 2026. Absence from the docs is not proof a feature does not exist; OpenAI's own posts promise more formats, objectives and measurement.
| Capability | Meta Ads | Google Ads | ChatGPT Ads, help center on 4 September 2026 |
|---|---|---|---|
| Audiences from your own lists | Yes | Yes | Yes, 25,000 matched users minimum for inclusion, any size for exclusion |
| Lookalike or expansion audiences | Yes | Yes | Not in the docs |
| Retargeting from site visits | Pixel audiences | Remarketing lists | Not in the docs; the Pixel is documented for measurement |
| Video or carousel formats | Yes | Yes | One format: title, copy, image, landing page |
| Public campaign API | Yes, reviewed here | Yes, reviewed here | Not in the docs; bulk CSV upload and an Ads Manager app inside ChatGPT |
| Choice of attribution window | Yes | Yes | Not documented; view-through fixed at one day |
| Performance benchmarks | Years of them | Years of them | "does not yet have performance benchmarks" |
The API row changes my own workflow. Every Meta campaign my automation creates arrives paused through the API. No documented endpoint means no paused-by-default guard I can build, so for now a human owns every launch.
How to stop ChatGPT ads?
Three ways, all on the user side. Upgrade to Plus or Pro, which OpenAI keeps ad-free. Stay on Free and switch to the Ads-Free option under Settings, Ads controls, which removes ads but lowers message limits and drops some tools. Or use a Temporary Chat, which never shows ads. Turning off personalization does not remove ads.
Read backwards, that list is your audience definition: whoever upgraded, or traded message limits for silence, is gone before you bid.
Before dollar one: my checklist
- Confirm your country says Available in the availability table before you sign up at ads.openai.com. An account does not give you access before your country is supported.
- Get OAI-AdsBot a 200 on the landing page, then submit one ad and watch its status.
- Pick the one standard event a Conversions campaign will optimize toward. Objective and event are locked at creation.
- Install the Pixel and the Conversions API together, same event ID on the same conversion, oppref kept alive through every redirect, consent language written first.
- One ad group per intent, context hints written as situations, several distinct title and copy pairs per group.
- Upload your customer list as an exclusion audience. It works below 25,000 users.
- Maximize results for volume, Manual: Max bid for a ceiling. Neither promises a CPA.
- Wait 24 to 48 hours before judging conversions, then compare against analytics for the same days in the same time zone.
Verdict: WATCHING
WATCHING on this site means the thing looks worth the time and has not carried real work yet; the rules are in the field notes post. The measurement design is the one I already run on Meta, the targeting model is honest about what it does not guarantee, and the constraints are written down instead of discovered.
It moves to TESTED after one Conversions campaign on one standard event, Pixel and Conversions API sharing an event ID, 28 days of spend, and the Conversions column compared against analytics for the same days and time zone. Until then the platform is real, the run rate is real, and the only number I trust for my own account is zero.