ChatGPT ads: how they work and how to track them
ChatGPT ads are sponsored placements shown below ChatGPT’s answers to users on the Free and Go plans, sold by OpenAI to advertisers and, according to OpenAI, kept separate from the answer itself. They started as a US test on February 9, 2026. By September 2026 OpenAI was selling them in more than 40 countries, offered a self-serve Ads Manager with CPM and CPC buying, and had begun testing conversational “Sponsored Agents”.
The facts below come from OpenAI’s own pages, checked 2026-09-17. The second half of the post covers tracking: the ads[] fields AnswerLine returns for ChatGPT, a method for advertiser share of voice, and ads on Google’s surfaces. One limit first: on the ChatGPT answers served today ads[] comes back empty, so the method describes the contract, not data you can collect now.
Timeline of OpenAI’s announcements
| Date | Announcement | Source |
|---|---|---|
| Jan 16, 2026 | ChatGPT Go launched in the US; plan to test ads in the US on Free and Go; ad principles published | Our approach to advertising and expanding access to ChatGPT |
| Feb 9, 2026 | Ads test begins in the US for logged-in adults on Free and Go | Testing ads in ChatGPT |
| Mar 26, 2026 | Early results “encouraging”; pilots planned in Canada, Australia and New Zealand | same, update |
| May 5, 2026 | Beta self-serve Ads Manager, CPC bidding alongside CPM, agency and technology partners, Conversions API and pixel measurement | New ways to buy ChatGPT ads |
| May 7, 2026 | Pilot expansion planned to the United Kingdom, Mexico, Brazil, Japan and South Korea | Testing ads in ChatGPT, update |
| Aug 31, 2026 | $1 billion annualized revenue run rate; available in over 40 countries; self-service Ads Manager launching across India, Europe, the Middle East and North Africa | A milestone in expanding access to AI |
| Sep 16, 2026 | Sponsored Agents test with select US advertisers; Ads Manager plugin in ChatGPT; AI creative assistance; opt-in AI text customization; HubSpot and Shopify integrations | Reimagining advertising with AI |
Markets, formats and buying options changed roughly monthly in 2026, so re-check the sources before relying on any single detail.
Who sees ads
Per OpenAI’s help article Ads in ChatGPT (checked 2026-09-17):
- Ads may appear for users on the Free and Go plans. Plus, Pro, Business, Enterprise and Edu accounts don’t have ads.
- Ads aren’t shown in accounts where the user says, or OpenAI predicts, they are under 18.
- For logged-out users, OpenAI says it “designed the experience to show ads that are appropriate for all ages”. The original February announcement described the test as for logged-in adults, so this is a later detail.
- Users can avoid ads by upgrading to Plus or Pro, or by choosing a free no-ads option with additional limits (fewer daily messages and no access to tools like images). Availability “may vary by region and over time”.
Where ads appear, and where they don’t
From the same help article:
- Ads “can appear below the end of a response”, labeled as sponsored and visually separated from the answer.
- There may be “one or more ad units below a ChatGPT response when there’s a relevant match”, and a unit may feature one or more items from one advertiser or from several.
- Ads are not eligible near sensitive or regulated topics, “including personal health, mental health, or politics”. Political advertising is not currently allowed.
- Advertisers in some sensitive verticals, such as health and financial services, “may be eligible to advertise if they meet our strict eligibility criteria”, but ads still aren’t placed near sensitive user content.
- Temporary Chats show no ads, and during the test ads don’t appear in the ChatGPT Atlas browser.
How an ad is chosen
OpenAI’s help center describes the selection inputs: “the context and intent of your current conversation, the ad’s landing page, title, copy, advertiser-provided context hints and targeting selections, and, when ads personalization is enabled, select signals from your broader ChatGPT experience.” When several ads are eligible, OpenAI considers “a combination of factors, including relevance and advertiser bids” to decide which to show first.
With personalization on, those broader signals can include past chats, memory and how the user interacted with ads. With it off, users “will still see ads based on the context of your current chat thread”. OpenAI’s August 31 post adds that the use of broader context depends “on the country and a user’s settings”.
Landing pages matter in a second way. OpenAI’s crawler documentation lists OAI-AdsBot, which visits pages submitted as ads to check policy compliance and “may also use content from the landing page to determine when it’s most relevant to show the ad to users”. OpenAI says OAI-AdsBot only visits submitted ad pages and its data isn’t used to train foundation models.
Two consequences for measurement. Because matching uses conversation and account context, one answer shows a single serving decision, not what every user sees, so measure frequencies over many runs. And an empty ad slot on a health prompt is expected. It says nothing about competitor spend.
OpenAI’s stated limits on ads
These principles appear in the January, February and August posts and the help center:
- Answer independence: “Ads do not influence ChatGPT’s answers. Ads run on separate systems from our chat model, and advertisers have no ability to shape, rank, or alter ChatGPT’s responses.”
- Conversation privacy: advertisers don’t receive chats, chat history, memories, name, email, precise location or IP address, and get “aggregated, non-identifying information about how their ads perform, such as total views or clicks”.
- User control: users can turn off ad personalization, hide or report ads, see why an ad was shown, and clear ads data, which OpenAI says is retained for up to 30 days before removal.
These are OpenAI’s descriptions of its own system and can’t be verified from outside. The separation claim does have a consequence brands can check in their own data: if the systems are independent, a brand’s organic citation rate shouldn’t systematically rise or fall with its ad presence over time.
How advertisers buy
From OpenAI’s May 5, August 31 and September 16 posts, and the help article Create Campaigns for ChatGPT Ads, all checked 2026-09-17:
| Topic | What OpenAI says |
|---|---|
| Channels | OpenAI’s Ads Solutions team; agency partners Dentsu, Omnicom, Publicis and WPP; technology partners Adobe, Criteo, Kargo, Pacvue and StackAdapt; the self-serve Ads Manager. OpenAI’s “ads system controls all delivery decisions” whichever channel is used. |
| Ads Manager | Businesses “register as advertisers, add payment information, set budgets, bids and pacing, upload ads, launch and manage campaigns, and view performance”. Sign-up is at ads.openai.com. |
| Pricing objectives | CPM from the start of the pilot, CPC from May 5 (charged per click). The campaign help article now lists CPM, CPC and oCPC, a conversion-optimized cost per click still billed per click. |
| Budgets | Campaign-total or daily budget. Minimum daily budget depends on billing currency, for example 25 USD, 15 EUR or 15 GBP. |
| Targeting | Countries, and in the US states, DMAs and ZIP codes; platforms (iOS app, Android app, web); custom audiences to include or exclude. |
| Measurement | Conversions API and pixel-based measurement, with aggregated reporting and no access to individual conversations. |
| Markets | Over 40 countries through the Ads Solutions team and partners as of August 31, with self-service launching across India, Europe, the Middle East and North Africa that day. The help center keeps a country-by-country availability page. |
| Tools added September 16 | An Ads Manager plugin to create, update and analyze campaigns with prompts in ChatGPT; suggested copy and imagery; opt-in AI text customization that adapts headlines and descriptions to the conversation and translates them; a ChatGPT Ads app for US Shopify merchants (international from September 23 where ChatGPT Ads are available); a HubSpot integration. |
| Sponsored Agents (test) | After clicking an ad, a user can start “a clearly labeled conversation with a business-sponsored agent”, separate from ChatGPT’s answers and the original conversation. Tested with select US advertisers. |
OpenAI’s advertiser FAQ also states that ChatGPT Ads, as an early platform, doesn’t yet have performance benchmarks across advertisers, industries or campaign types.
What this means for brands
-
Paid and organic results now appear on the same screen from separate systems. On a commercial prompt, a buyer may see your competitor’s ad under an answer that cites you, or the reverse. OpenAI says the two are independent, so buying ads isn’t a documented route to being cited, and being cited doesn’t earn ad placement. Plan and report them as separate channels.
-
Ad exposure in your category depends on plan mix and market. Only Free and Go users see ads, only in markets where OpenAI sells them, and never on sensitive topics. A health brand’s prompts may carry no ads at all. Check availability before building a forecast.
-
Selection starts from the conversation’s intent. Prompts that express a purchase decision (“which X should a Y buy”) are where ads are designed to show, per OpenAI’s framing of “active and decision-oriented” conversations. Build your monitoring prompt set from those.
-
Landing pages affect relevance. OAI-AdsBot reads submitted landing pages, and OpenAI lists the landing page among selection signals, so a thin landing page can hurt delivery as well as conversion.
-
OpenAI reports on your own campaigns only. To see who else appears on your prompts, how often and with which messages, you need to collect answers yourself.
-
Formats, buying options and markets changed monthly in 2026. Date every observation.
Tracking ChatGPT ads
Definitions
- Served ad: an ad included in ChatGPT’s ad response for an answer, whether or not it was displayed.
- Rendered ad: the served ad displayed as a visible card.
- Ad presence rate: the share of answers in a prompt set in which a given advertiser is served (or rendered, reported separately).
- Paid share of voice: an advertiser’s rendered ads divided by all rendered ads across the prompt set and period.
The request
Add include.ads to a ChatGPT request:
curl -X POST https://api.answerline.dev/v1/monitor/chatgpt \
-H "Authorization: Bearer $ANSWERLINE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "prompt": "best project management tools for small agencies", "country": "US", "include": { "ads": true } }'
For prompt sets, send the same payload as CHATGPT tasks in a batch (shown below).
The ads[] fields
When include.ads is true, result.ads is an array with one entry per served ad. On the ChatGPT answers served today it comes back empty. The shape, per the API reference:
{
"brand": { "name": "…", "url": "…", "favicon": "…" },
"cards": [ { "title": "…", "body": "…", "url": "…", "image": "…" } ],
"visibility": "allowed",
"adsResponseIndex": 0,
"rendered": true
}
| Field | Meaning |
|---|---|
brand.name, brand.url, brand.favicon |
The advertiser; favicon is optional |
cards[] |
Carousel cards with title, body, url and optional image |
visibility |
OpenAI’s serving status: allowed was eligible to serve; hidden was filtered, for example by an integrity check |
adsResponseIndex |
The ad’s slot in OpenAI’s served ad response: served order, not what was shown |
rendered |
true if the ad was shown as a visible card; false means served but not displayed |
Use rendered for exposure. Served-but-not-rendered entries show which advertisers were in contention for a prompt even when another card was displayed. Label them “served”, not “seen”.
A tracking run
- Build the prompt set from your commercial prompts: category (“best X for Y”), comparison (“X vs Y”) and purchase intent (“where to buy X”). Leave out sensitive prompts. Designing a prompt set covers the rest.
- Choose the markets where you advertise or plan to. ChatGPT answers from 213 countries, including pilot markets such as the US, Canada, Australia, the United Kingdom, Brazil and Japan.
- Submit the batch and collect results. For recurring runs, put a
webhookon each task instead of polling (webhooks).
import collections
import datetime as dt
import os
import time
import requests
API = "https://api.answerline.dev"
HEADERS = {"Authorization": f"Bearer {os.environ['ANSWERLINE_API_KEY']}"}
PROMPTS = {
"pm-small-agencies": "best project management tools for small agencies",
"pm-vs": "Asana vs Monday for a marketing team",
"time-tracking": "which time tracking app should a consultancy buy",
}
MARKETS = ["US", "CA", "AU"]
day = dt.date.today().isoformat()
tasks = [
{
"taskType": "CHATGPT",
"payload": {"prompt": p, "country": c, "include": {"ads": True}},
"idempotencyKey": f"ads-{pid}-{c.lower()}-{day}",
}
for pid, p in PROMPTS.items()
for c in MARKETS
]
batch = requests.post(f"{API}/v1/async/task/batch", json=tasks, headers=HEADERS, timeout=60)
batch.raise_for_status()
ids = [r["task"]["id"] for r in batch.json()["results"] if r["success"]]
results = {}
while len(results) < len(ids):
for tid in ids:
if tid in results:
continue
data = requests.get(f"{API}/v1/async/task/{tid}", headers=HEADERS, timeout=30).json()
if data["task"]["status"] in ("COMPLETED", "FAILED"):
results[tid] = data
time.sleep(10)
- Aggregate served and rendered ads per advertiser:
served = collections.Counter()
rendered = collections.Counter()
creatives = collections.defaultdict(set)
answers = 0
for data in results.values():
if data["task"]["status"] != "COMPLETED":
continue
answers += 1
for ad in data["response"]["result"].get("ads", []):
name = ad["brand"]["name"]
served[name] += 1
if ad["rendered"]:
rendered[name] += 1
for card in ad["cards"]:
creatives[name].add(card["title"])
total_rendered = sum(rendered.values())
for name, count in served.most_common():
print(
f"{name:30} served {count / answers:6.1%} "
f"rendered {rendered[name] / answers:6.1%} "
f"paid SoV {rendered[name] / total_rendered if total_rendered else 0:6.1%} "
f"creatives {len(creatives[name])}"
)
Store the raw task JSON with the date, prompt id and market. Card titles and bodies over time are a record of competitors’ messaging tests.
A worked example, with invented numbers: 30 prompts in one market give 30 answers. Brand A is served in 12 and rendered in 7; brand B is served in 9 and rendered in 5. Brand A’s served presence rate is 12 / 30 = 40%, its rendered presence rate 7 / 30 = 23.3%, and its paid share of voice 7 / (7 + 5) = 58.3%.
What to do with the data
- Paid vs earned: compare
ads[]with organicsources[]and brand mentions intextfrom the same answer. A competitor rendered in ads but absent from citations is buying coverage it has not earned organically. - Creative tracking:
cards[].titleandcards[].bodyper brand over time show which messages advertisers test. - Market entry: run your category prompts in a pilot market before launching there.
- Filtered ads: report
visibility: "hidden"entries apart fromallowedones.
For the organic side of the same answers, see how AI engines choose citations, measuring brand mentions in ChatGPT, AI share of voice and ChatGPT shopping cards.
Ads on Google surfaces
Google’s surfaces carry ads too, and they come back filled today, each with its own shape.
| Surface | Field | Key subfields |
|---|---|---|
| Google Search | result.ads[] |
position, blockPosition (top, bottom, middle, rhs), type (RESULT, SHOPPING_CARD), title, url, displayedUrl, domain, description, page, sitelinks[], and for shopping cards price, oldPrice, store, category, imageUrl |
| Google AI Overview | result.aioverview.ads[] |
position, title, url, type (TEXT or SHOPPING); domain and description on TEXT, price and store on SHOPPING |
| Google AI Mode | result.ads |
an object with title and ads[] (title, url, position, price, store, rating, reviews) |
AI Overview ads need include.aioverview on the Google request, which adds $0.00071 to the $0.0015 Google Search request when an overview is shown. See Google ads, tracking Google AI Overviews, SERP feature tracking and AI Mode shopping results.
Cost
A ChatGPT request is $0.0015 at the Starter tier, and include.ads and include.shopping are free. So a task with ads, or with ads and shopping, is $0.0015.
| Run | Tasks | Cost |
|---|---|---|
| 30 prompts x 1 market, with ads | 30 | $0.045 |
| 90 prompts x 1 market, with ads and shopping | 90 | $0.135 |
New accounts get 100 free requests on any engine. See pricing for tier prices and cost planning for budgeting.
Pitfalls
- Treating served as seen. Only
rendered: truewas displayed. Report served and rendered separately. - Reading
adsResponseIndexas screen position. It is served order. - One run per prompt. Ad selection depends on context, so single runs swing. Aggregate across runs and days.
- Mixing field shapes. ChatGPT
ads[]hasbrandandcards; Googleads[]hastitle,urlanddomain. Normalize to advertiser domain before combining. - Sensitive prompts. OpenAI says ads are not eligible there, so leave them out of paid share-of-voice denominators.
- Assuming a fixed market list. OpenAI has changed pilot markets over time.
Field definitions are in the API reference and on the ChatGPT engine page.
Questions
Does ChatGPT have ads?
Yes. OpenAI began testing ads in ChatGPT in the US on February 9, 2026, and by August 31, 2026 said ChatGPT Ads were available in over 40 countries. Ads appear for users on the Free and Go plans; Plus, Pro, Business, Enterprise and Edu accounts don't have ads.
Do ads change ChatGPT's answers?
OpenAI says no. Its help center states that ads run on separate systems from the chat model, that advertisers cannot shape, rank or alter ChatGPT's responses, and that ads are labeled as sponsored and visually separated from the answer.
Where do ads appear in ChatGPT?
According to OpenAI's help center, ads can appear below the end of a response, as one or more ad units when there is a relevant match. They don't appear near sensitive or regulated topics such as personal health, mental health or politics, in Temporary Chats, or, during the test, in the ChatGPT Atlas browser.
How can a business advertise in ChatGPT?
Through OpenAI's Ads Solutions team, agency and technology partners, or the self-serve Ads Manager, which OpenAI launched in beta on May 5, 2026 and opened for self-service across India, Europe, the Middle East and North Africa on August 31, 2026. Sign-up is at ads.openai.com.
Can I see which brands advertise on my category's prompts?
OpenAI gives advertisers aggregated reporting on their own ads, not on competitors. AnswerLine's ChatGPT result has an ads[] field (include.ads), but it comes back empty on the answers served today, whatever the prompt and market, so it does not yet show which ads were served.
What is the difference between a served ad and a rendered ad?
A served ad is one included in ChatGPT's ad response for an answer, whether or not it was displayed. A rendered ad is one shown as a visible card. In ads[], every served ad has an entry and the displayed one has rendered set to true.
How much does ad tracking cost?
include.ads is free, so a ChatGPT request with it costs the base $0.0015 at the Starter tier. include.shopping is free too.
Can I track Google ads the same way?
Google Search responses carry their own ads[] with position, blockPosition, type, title, url, domain and description, and AI Overview ads appear under aioverview.ads[]. AI Mode returns its sponsored products in an ads object. The shapes differ from ChatGPT's, so parse them separately.