updated

How to launch ChatGPT Ads: account, ad topics, conversion tracking

Written and reviewed by Bc. Petr Kučera, MSc., MBA

Cartoon lion with a quiz: which ChatGPT Ads settings can’t you change after setup? Country, currency or campaign objective.

Getting started: 5 steps

These steps prepare your account and tracking before the first click, but they don’t guarantee delivery or performance.
  1. 1
    Check your industry and OAI-AdsBotMake sure your industry and landing page are allowed outside the US and that OAI-AdsBot gets through robots.txt, the firewall and the CDN. More
  2. 2
    Check the currency in the formYou can’t change the account’s country or region, currency or time zone after creation, so check the currency in the sign-up form. More
  3. 3
    Write context hints as phrasesEach hint should be a clear, natural phrase focused on one idea, not a list of disconnected keywords. More
  4. 4
    Set up the pixel with consentSet pixel consent to false before initialization and switch it to true only after the visitor accepts in the cookie banner. More
  5. 5
    Compare using the 0 Day windowFor comparisons with GA4 and your backend, use the 0 Day view-through window and match orders by order ID. More

This guide is for a limited test to learn from, not a replacement for Google Ads. For each step, we explain what OpenAI says, what Czech advertisers and agencies have found, and what to watch for. Everything below draws on OpenAI’s documentation and advertisers’ and agencies’ experience, with links to the sources. We cover the general principles of paid advertising in our article on how PPC campaigns work.

The ad policies have changed six times since March 2026, from version 1.0 to 1.6. Figures and limits apply as of the date above (the Conviu update is from 30 September 2026). Recheck the sources before launching.

01

Before you launch ChatGPT Ads: industry eligibility and bot access

Before you open Ads Manager, check three things: who will see your ads, whether your industry may advertise, and whether OpenAI’s bot can get through to your website.

Who sees ads in ChatGPT

According to OpenAI’s Ads in ChatGPT page⁠, ads appear only on the Free and Go plans. Users on Plus, Pro, Business, Enterprise and Edu see no ads, and neither does anyone under 18.

Personalized ads aren’t available in the EEA or Switzerland yet (“not initially available”). The language of an ad may reflect the user’s location, language settings and the language of the conversation.

Advertisers receive only aggregated information that doesn’t identify anyone. They have no access to users’ chats, chat history or memory. Next to each ad, users can choose “About this ad” or “Ask ChatGPT”.

Is your industry eligible?

As of 29 September 2026, the latest version of OpenAI’s ad policies is v1.6 from 10 September 2026. In the Czech Republic, the initial phase focuses primarily on consumer segments.

SectorStatus as of 29 September 2026 (the Czech Republic and markets outside the US)
Home and lifestyle, local services, travel and experiences, entertainment, digital products, educationPrimary consumer sectors in the initial rollout
General health and wellnessMay be allowed without treatment claims
Financial tools that don’t sell financial products, such as budgeting apps, financial software and financial educationGenerally allowed
Legal educationConditionally allowed: no legal services
Health servicesGenerally prohibited
Financial servicesGenerally prohibited
Legal servicesProhibited

Even in allowed industries, ads don’t appear in sensitive or vulnerable conversations, such as those about mental health.

Both the creative and the landing page must fall into an allowed category. OpenAI reviews at three levels: the advertiser (business verification), the creative together with the landing page, and the placement. Review is mostly automated, with human oversight. If a page can’t be reviewed, the ad won’t launch. Since version 1.6, OpenAI has reserved the right to reject ads for business reasons or because of competitive positioning.

RUJZL⁠ describes one pharmacy e-shop that was rejected with the reason “the industry does not meet the requirements”, and the appeal link didn’t work. This is evidence from a single account, not a general rule.

Our separate analysis of ChatGPT Ads in the Czech Republic covers what Czech advertisers may run and what the first advertisers paid per click.

Your site must let OAI-AdsBot in

OpenAI says it directly: “You must allow OAI-AdsBot.” It recommends allowing OAI-SearchBot as well (OpenAI’s crawler guidance for advertisers⁠).

In practice, this means:

  1. 1
    robots.txtA disallow rule in robots.txt stops crawling immediately.
  2. 2
    Firewall and CDNCloudflare and Akamai can return 403 errors to the bot. According to OpenAI, OAI-AdsBot is “officially verified and allowlisted by Cloudflare”.
  3. 3
    Bot verificationAn IP address alone isn’t enough to identify the bot. According to OpenAI, combine the user-agent with verification by your provider. The IP ranges are listed at openai.com/adsbot.json.
  4. 4
    After the fixIf you grant the bot access later, you may need to upload the ads again or resubmit them for review.
  5. 5
    Product feedFor a product feed, OAI-SearchBot also needs access to the product image URLs.

Check the bot first. If it can’t get through, even great ad copy won’t fix the problem.

A format to skip for Czech self-service accounts

According to OpenAI’s Sponsored Agents page⁠, Sponsored Agents is a limited alpha for selected advertisers, and OpenAI is not accepting applications. Don’t expect this format in a regular self-service account.

STEP 1

Step 1: Ads Manager account

Ads Manager is the self-service interface for creating and managing ads. As of 29 September 2026, OpenAI labels it Ads Manager Beta⁠, so both the interface and the rules may change.

Who sets it up

A self-service account is tied to the advertiser’s legal entity in a supported country⁠. You sign up at ads.openai.com. OpenAI recommends signing in with an existing OpenAI account “tied to your work email”. For details, see OpenAI’s guides to account setup and the quickstart⁠.

The website URL is optional at sign-up. You can skip it and create a campaign later.

OpenAI recommends: “Create a separate account for each advertiser”. One login can then switch between accounts. For agencies, this means: the client owns the account, and the agency works in it as a user.

An agency managing a client’s campaigns must have a written agreement with the advertiser before it submits any campaign, and that agreement must bind the advertiser to OpenAI’s Advertising Terms⁠. The agency owes OpenAI payment regardless of whether it has invoiced the advertiser or collected the money.

Roles and company access control

RoleOpenAI definitionIn practice
AdminAt least one required in every ad account
Member“Create and manage campaigns”RUJZL had the opposite experience: the role wasn’t enough to create campaigns. Check the role assigned in your specific ad account.
ViewerThe third role alongside Admin and Member

RUJZL⁠ reported that Member was insufficient, contrary to OpenAI’s official definition. This is one team’s experience. If you run into this, first check that you’re in the right ad account and that the role is actually assigned to you, directly or through a group. According to OpenAI, Member can create and manage campaigns.

The current account setup help doesn’t mention a Persona role. It lists Admin, Member and Viewer.

Larger companies can manage access through company-level identity management, called a tenant. For details, see OpenAI’s guide to identity and access⁠.

  • Global Admin manages domains, identity providers and sign-in policies, and can create ad accounts.
  • Ads Admin can create accounts but doesn’t automatically get access to existing ones.
  • Tenant membership, SSO or SCIM alone doesn’t give anyone access to an ad account.
  • SSO lets users sign in with their company account. It can be set to Required, Optional or Off.

What you can’t change later

The account’s country or region, currency and time zone “cannot be changed after account creation”, according to OpenAI’s account setup guide⁠.

Sources disagree on the currency. OpenAI’s official table of minimums⁠ lists CZK 350. RUJZL⁠ reported as of 24 September 2026 that it was billed in euros and that koruna was not available yet. According to Digichef⁠, the minimum daily budget in Czech accounts is EUR 15. Conviu⁠ reported on 30 September 2026 that it set up its account in koruna and Ads Manager accepted a minimum of CZK 350. Check the currency in the sign-up form, because you can’t change it later.

SettingCan change?Source
Country or regionNoAccount setup
CurrencyNoSame source
Time zoneNo, it also sets the budget weekSame source
Campaign objectiveNo, you need a new campaignCreating campaigns
Campaign-total budgetOnly to daily, not backBilling and payment
Brand NameYes, with a new brand review; delivery is paused until approvalAccount setup
Legal NameYes, but business verification restartsSame source
Payment thresholdNot manuallyBilling and payment
Czech tax ID (DIČ)Can be added or editedSame source

Three account names, three different jobs

The account has three names:

  • Account Name is the internal name; users don’t see it.
  • Brand Name is the public name shown with your ads.
  • Legal Name is used for billing and business verification.

Changing the Brand Name triggers a new brand review, and your ads are paused until it’s approved. Changing the Legal Name restarts business verification. Get both right the first time.

Business verification: four separate checks

OpenAI’s onboarding and policy troubleshooting guide⁠ distinguishes four separate checks:

  1. 1
    Account verification
  2. 2
    Account approval
  3. 3
    Ad review (we cover the statuses in step 3)
  4. 4
    Delivery

These are separate stages, so if something gets stuck, work through them one at a time. According to OpenAI’s FAQ⁠, business verification can take up to 7 business days, and an unverified account may not deliver ads. A domain is approved only if “your advertiser identity matches your provided domain”. If your company’s domain differs from the name of the legal entity, we recommend sorting that out in advance.

For supported rejection types, for example by industry, ad or domain, OpenAI’s onboarding troubleshooting guide⁠ says an appeal is the fastest route. If no appeal is available, or more than 7 days pass without a decision, contact OpenAI support. You’ll find the contact address in OpenAI’s help article.

Payments, cards and authorization holds

According to OpenAI’s billing and payments guide⁠, a self-service account pays by card. Invoicing, labeled Invoice billing, may be available to eligible advertisers managed by OpenAI’s sales team.

Key payment points from the help center:

Postpaid. Your spend adds up as you go, and your card is charged when you hit the payment threshold or at the end of the month.
Threshold. The payment threshold is separate from both the campaign budget and the account’s spend limit. According to OpenAI, it may increase automatically after successful payments. You can’t change it manually.
Country mismatch. A card or payment method associated with a country other than the ad account’s registered country may not be accepted (“A card or payment method associated with a different country may not be accepted”).
Authorization hold. When you add a card, your bank may show a temporary authorization hold. You’ll see the amount in the settings and in Ads Billing, and the hold can stay visible for 8 days or longer. As of 29 September 2026, the Czech and English help articles match; see the Czech-language billing and payments article⁠. OpenAI doesn’t state a fixed amount. On 4 September 2026, an advertiser from India reported on OpenAI Community⁠ an immediate hold of around USD 100 after adding a card. This is one account’s experience.
Receipts, tax ID. You get a receipt by email for every successful payment. You can add or edit your tax ID (DIČ) in Ads Manager.
Failed payment. Your ads may stop showing, and campaigns, ad groups and ads may switch to the Not serving status.
Account-wide daily spend limit. Available only to eligible accounts with invoice billing.

For the EEA and Switzerland, the contracting party is OpenAI Ireland Ltd. and Irish law applies, according to the Advertising Terms⁠. Fees are exclusive of taxes (“Fees exclude applicable taxes”). Late payments accrue 1.5% of the overdue amount per month. You can dispute charges within 30 days of the activity date.

STEP 2

Step 2: campaign

Account levels

An ad account has three levels: the campaign, below it the ad group, and below that the ad, as OpenAI’s quickstart⁠ lays out. OpenAI recommends several ad groups per campaign so you can test different topics, value propositions or messages, according to its guide to creating campaigns⁠. We cover how to split ad groups in step 4, under context hints.

Campaign objectives and billing

ObjectiveYou pay for
ViewsEvery thousand impressions (CPM)
ClicksEach click (CPC)
ConversionsOptimized for conversions, billed per click, or per impression for eligible advertisers

You don’t pay per conversion (“Ads are not billed per conversion”), according to OpenAI’s billing and payments guide⁠.

You can’t change a campaign’s objective after it’s created; a different objective requires a new campaign. Clone also always creates a new campaign with a different objective or another supported billing model, according to OpenAI’s guide to creating campaigns⁠.

The Conversions objective requires exactly one standard event; custom events aren’t supported yet (more in step 5). Choose this objective only once your conversion tracking works and the standard event is coming in. OpenAI’s guide to conversion-optimized campaigns⁠ doesn’t specify how many prior conversions you need. It only advises judging performance “over enough volume” before big changes to bids, budgets or creatives, and it has no recommended bid for this objective yet (“There is no recommended bid amount at this time”).

Budget and the budget week

Minimum daily campaign budgets follow OpenAI’s table in its guide to creating campaigns⁠ and depend on the account currency:

CurrencyMinimum daily budget
CZKCZK 350 per day
EUREUR 15 per day
USDUSD 25 per day

Remember the currency conflict from step 1: the table lists koruna, but the first Czech accounts from early September ran in euros. For a 30-day campaign, the CZK 350 daily minimum corresponds to CZK 10,500.

How the budget is spent:

The daily budget is a 7-day average. Maximum spend in a single day is twice the daily budget; maximum spend over 7 days is seven times the daily budget.
Budget week. It runs Sunday to Saturday in the account’s time zone, according to OpenAI’s billing and payments guide⁠. If you use up the weekly allocation early, the campaign may not deliver until the following week, even though it’s active.
Campaign-total budget. One budget for the whole campaign. You can switch it to daily, but not back.
API. In the API, a campaign-total budget works only with a fixed bid, and you can’t lower it below the amount already spent, according to OpenAI Developers on bidding and budgets⁠. The account may also have separate spend-limit windows that are independent of campaign budgets.
Paused ad. Paid delivery may continue for up to 24 hours.

Leave a buffer when pausing at the end of promotions or seasonal campaigns, since paid delivery may run on.

Bids and auctions

According to OpenAI’s ChatGPT Ads basics⁠, the auction is a “relevance-weighted, second-price auction”.

StrategyWhat we know
Fixed bidThe only strategy that allows a campaign-total budget in the API
Maximize clicksRUJZL, no cap, in one day: 1,671 impressions, 23 clicks, CPC EUR 0.72, CTR 1.4%
Maximize conversionsMakes sense only once conversion tracking works, see step 5

In the API, the maximum bid goes in max_bid_micros, in millionths of the currency unit, so 1,000,000 equals 1 unit of currency (OpenAI Developers on bidding and budgets⁠).

Choosing bids:

Official. OpenAI recommends starting with a maximum bid of USD 3 to 5 per click, according to its ChatGPT Ads basics⁠. The help article doesn’t distinguish between regions, so don’t read this as a Czech price.
Czech practice, one account. RUJZL⁠ reports that ad groups bidding EUR 0.10 got zero impressions and that delivery started at around EUR 1.5. The agency sums it up this way: with manual CPC, the bid is a ceiling, not the price. RUJZL recommends bidding above EUR 1.
Czech practice, second agency. According to Digichef⁠, another Czech agency, Czech CPCs run around EUR 1 depending on the category. US sources, according to Digichef, cite USD 2 to 5.
Practice abroad. RUJZL cites Symphonic Digital secondhand: a USD 3 bid got zero impressions; traffic only started at a cap of around USD 12, and the average CPC was USD 9. A small sample and a secondary citation.

None of these experiences is a benchmark. They come from individual accounts.

bid_too_low “is guidance, not a serving restriction”, according to OpenAI Developers’ troubleshooting guide⁠. For 24 hours after you edit an ad group, the warning doesn’t appear. And the absence of the warning doesn’t prove that your bid is competitive enough.

OpenAI has not published an official bid floor as of 29 September 2026.

Location, platforms, exclusions

Here are the targeting options and their limits, based on OpenAI Developers on campaign targeting and OpenAI’s guide to creating campaigns⁠:

Excluded locations. In excluded_locations, you can list up to 2,500 IDs. Exclusions take precedence over inclusions.
Excluding other countries alone doesn’t limit delivery (“Excluding other countries alone does not restrict delivery”). We recommend explicitly including the country you want to target.
Product campaigns. These now target at the country level only.
Platforms. Android app, Android web, Desktop web, iOS app and iOS web.
Campaign start and end. These dates set the period in which your ads are eligible to deliver.
Dayparting. The targeting documentation doesn’t describe a daily schedule, such as Monday 8:00 to 16:00, or separate language targeting controlled by the advertiser.
New accounts may initially deliver only in their home country (“Some accounts are initially limited to home-country delivery”), according to OpenAI’s troubleshooting guide⁠.

Audience

Custom audiences are lists of your own customers. For the EEA, OpenAI recommends not using them until personalization becomes available, according to its guide to creating campaigns⁠. To include an audience, you need at least 25,000 matched users. For a Czech campaign, don’t count on audiences for now.

STEP 3

Step 3: the ad

Ad text and image limits

AssetHard limitRecommendedSource
chat_card title3 to 50 characters16 to 24 charactersAds API, bulk checklist
chat_card descriptionUp to 100 characters32 to 48 charactersSame sources
Ad imageSquare; minimum 640 × 640 px according to the developer guide; maximum 1,200 × 1,200 px and a public URL according to the bulk checklistAPI overview, bulk checklist
Account faviconMinimum 128 × 128 pxFiles API

A hard limit defines what the API rejects. Recommendations are ranges OpenAI advises but doesn’t enforce.

Ad language

RUJZL⁠ documented a Czech ad headline appearing under a ChatGPT answer. The documentation doesn’t describe separate language targeting. According to OpenAI, an ad’s language may reflect location, language settings and the language of the conversation.

Ad review

An ad moves through the statuses in_review, rejected and approved, according to the Ads API reference from OpenAI Developers⁠. If you edit a rejected creative, it goes through review again.

As of 29 September 2026, OpenAI doesn’t publish an official SLA for ad review. On the Shoptet blog⁠, Jakub Herrmann of PLACEMENT.cz reports approval in roughly seven hours. That is a single experience.

How many ads

In the same Shoptet blog post, Filip Stollar of Kontext.so cites the OpenAI team recommending at least 50 variants or creatives. A single experience, not an official OpenAI rule.

OpenAI’s official pages recommend several ad groups for different themes and messages, as we noted in step 2. We recommend a few measurable ad groups with distinct messages, not dozens of variants with minor differences.

When an ad won’t serve

If a new campaign shows no confirmed delivery and there’s no obvious obstacle, OpenAI advises you to “allow at least 24 hours after launch before reporting a zero-delivery issue”. If you see a hard error or a clear payment or review problem, contact support right away, according to its troubleshooting guide⁠. Before you contact support, go through this checklist:

  1. 1
    BotMake sure OAI-AdsBot gets through both robots.txt and the firewall.
  2. 2
    Business verificationCheck that the account is verified.
  3. 3
    BidIs it around EUR 2 or higher? RUJZL’s account got no delivery at EUR 0.10; delivery picked up at around EUR 1.5.
  4. 4
    Home countryA new account may at first be limited to its home country. Check whether you’re advertising outside it.
  5. 5
    BudgetMake sure the weekly budget allocation isn’t used up.
  6. 6
    PaymentLook for a failed payment and the Not serving status.
STEP 4

Step 4: context hints

What context hints are

Context hints are topic cues at the ad group level. They tell the system which situations suit your ad. OpenAI wants “a clear, natural phrase focused on one idea rather than a list of disconnected keywords” (OpenAI’s guide to writing context hints⁠).

Hints aren’t targeting rules and don’t guarantee impressions. They don’t handle location, scheduling or exclusions.

Writing a hint

OpenAI wants hints to be Additional, Specific, Relevant and Accurate.

QualityIn other words
AdditionalSupplementary
SpecificConcrete
RelevantOn topic
AccuratePrecise

OpenAI’s official examples of good hints:

  • “Cushioned everyday running shoes for beginners training for their first 5K”
  • “Bookkeeping software for growing retailers that need to reconcile online and in-store sales”

Both examples describe a specific person and situation, not just a product category. The user’s prompt doesn’t have to match the hint’s wording exactly.

How many hints, when to split ad groups

In the API, context_hints is an array of strings, and in bulk upload you write it as ["hint1", "hint2"], so one ad group can hold several hints. Sources: OpenAI Developers on Ad Groups and the bulk checklist⁠. OpenAI doesn’t recommend how many hints to use per ad group or how long they should be.

In bulk upload, the list you upload is treated as complete and replaces the previous one. Any hint you leave out is removed.

If a use case needs different ad copy or a different landing page, give it its own ad group. If you’re only phrasing the same situation differently, add another hint to the same ad group.

Myths and unconfirmed claims

“One hint per ad group”
No such rule exists. The API accepts an array of hints.
A comma splits a hint into separate prompts
The documentation says nothing of the kind.
Hints are keywords
OpenAI explicitly asks for a phrase, not a list of words.
A hint guarantees impressions
There’s no guarantee. A hint isn’t a targeting rule.
Hints are mandatory
According to RUJZL, hints are optional. Without them, the system infers the context from the ad itself.

The point about hints being optional comes from the experience of RUJZL⁠. We recommend writing hints anyway; otherwise the system reads the situation from your ad copy alone.

06

Product feed: prepare, don’t expect results yet

Czech practice

Here is what RUJZL⁠ reported as of 24 September 2026. It had been uploading its feed since 4 September, with more than 40,000 products and 43,000 in the index. Product ads got zero impressions, while a control text campaign on the same account delivered normally. On 24 September, OpenAI support confirmed a country restriction.

According to the help center of Shoptet⁠, a Czech e-shop platform, the feed for many e-shops is empty while they wait for OpenAI to fully open product matching in Europe. The feed lives at /openai/export/products.jsonl.gz.

OpenAI hasn’t published a list of countries for product ads. That doesn’t mean Czech product ads will never work. What this shows is that product ads on RUJZL’s Czech account weren’t delivering as of 24 September 2026.

Ways to upload a feed to Ads Manager

MethodDetails
Manual uploadCSV or TXT
Hosted URLA feed address you enter
SFTPFiles directly in the root folder

Feed items expire after 2 weeks, according to OpenAI’s guide to creating campaigns from product feeds and OpenAI Developers on product feeds⁠. We recommend manual upload only for testing. For ongoing use, set up automatic refresh through Hosted URL or SFTP.

The Delta API handles partial changes to the title, price and availability of existing products. It requires an already processed base catalog.

The Commerce upload spec prefers Parquet with zstd compression. Other supported formats are jsonl.gz, csv.gz and tsv.gz, encoded in UTF-8, according to OpenAI Developers on file upload⁠. Recommended shards are roughly 500 MB and at most 500,000 items. A full snapshot is recommended at least once a day.

Required fields, format

The product feed has nine basic required fields, according to the product spec from OpenAI Developers⁠:

item_id, title, description, url, brand, seller_name, image_url, availability and price.

The schema also has the optional fields seller_url, return_policy, target_countries and store_country. The last two relate to your market settings.

NameFormat
availabilityin_stock, out_of_stock, pre_order, backorder, unknown
Price in the file schemaMajor currency units plus ISO code, for example USD 79.99

In the product feed, prices are in major currency units, according to the product spec from OpenAI Developers⁠. In the Conversions API, the conversion value is an integer in the smallest currency unit. If both integrations are implemented together, point this difference out to your developer explicitly.

Processing and status

Depending on its size, a feed takes from a few minutes to a few hours to process. Products may appear in reporting up to 7 hours after delivery starts, according to OpenAI’s guide to campaigns from product feeds⁠.

An upload moves through the statuses scanning, received, processing, completed, completed_with_errors, skipped and failed. Diagnostics include, for example, missing_required_column, invalid_value and unsupported_file_type; the list is not exhaustive.

completed doesn’t guarantee that a product is eligible to show. The Products tab in Ads Manager also doesn’t show the whole catalog (it “does not show every uploaded or ads-eligible product”), and a product may appear there only after an active campaign has delivered it, according to OpenAI’s troubleshooting guide⁠.

A product ad group can have at most one non-archived product_ad_template. A product ad may show the image, name, rating, price and sale price.

STEP 5

Step 5: conversion tracking

Set up and test conversion tracking before the first click. Events blocked without consent won’t be sent later, and the Conversions API accepts events from at most 7 days earlier.

Pixel and Conversions API

OpenAI measures conversions through two channels, according to OpenAI Developers on conversion tracking and the Conversions API documentation⁠:

MethodHow it worksEvent ID field
Pixel (oaiq)A script in the visitor’s browserevent_id
Conversions APIEvents from the advertiser’s server to bzr.openai.com/v1/eventsid

For deduplication, the Pixel ID and the event name must match, and so must the pixel’s event_id and the Conversions API’s id. For a custom event, the custom name must match as well.

Pixel setup

Place the pixel in the <head>, load https://bzrcdn.openai.com/sdk/oaiq.min.js asynchronously and initialize it with oaiq("init", { pixelId: "<YOUR-PIXEL-ID>" }), according to the pixel guide from OpenAI Developers⁠.

Content Security Policy (CSP) sets which sources a page may load scripts from and connect to. If your site uses CSP, allow the domains below.

CSP directiveDomain
Scriptsbzrcdn.openai.com
Connectionsbzr.openai.com, bzrcdn.openai.com
Imagesbzr.openai.com

To create a pixel through the API, call POST /conversions/pixels with the required client_type: web; the pixel then uses automatic advanced matching. Source: OpenAI Developers on conversion setup⁠. To check the installation, GET /conversions/events returns at most 50 events from the last 15 minutes.

Automatic advanced matching is the pixel’s automatic matching of customer data. It normalizes supported data and hashes it with SHA-256 right in the browser, so it doesn’t send raw data. If you pass user data manually, country, city, region and postal code go unhashed, according to the pixel guide from OpenAI Developers⁠.

This is the key point for Czech websites: the pixel starts with consent set to true unless you set it to false or it finds a stored opt-out (“The Pixel initializes consent to true by default unless you set it to false or the Pixel finds a stored denial”), according to the pixel guide from OpenAI Developers⁠. Without changes, it would measure before the visitor makes a choice in the cookie banner.

The documented procedure:

  1. 1
    Before init, call oaiq("consent", false).
  2. 2
    Only after the visitor gives consent, call oaiq("consent", true).
  3. 3
    If the visitor withdraws consent, call oaiq("consent", false). This deletes both pixel cookies.

Two consequences follow from the documentation:

Blocked events aren’t sent later. Events blocked under consent false aren’t sent retroactively once the visitor consents (“blocked events aren’t replayed”).
No documented link to Google Consent Mode or IAB TCF. OpenAI doesn’t document a connection between the pixel and either system. IAB TCF is a standard for passing consent from the cookie banner to ad systems. The pixel receives consent only through the consent command. Connect your cookie banner manually and test both states.

Events

OpenAI supports 13 event names: twelve predefined ones plus custom, a custom event outside the standard taxonomy, according to OpenAI Developers on supported events⁠.

EventRough meaning
page_viewedPage view
contents_viewedContent view, such as a product
items_addedAdd to cart
checkout_startedCheckout started
order_createdOrder placed
lead_createdLead submitted
registration_completedRegistration completed
appointment_scheduledAppointment booked
subscription_createdSubscription started
trial_startedTrial started
app_installedApp installed
app_openedApp opened
customCustom event

Event rules:

  • app_installed and app_opened work only through the Conversions API, with action_source: "mobile_app".
  • A custom event name can be 1 to 64 characters long. Lowercase letters, digits, underscores and hyphens are safe to use.
  • Optimizing a campaign for conversions requires exactly one standard event. A custom event can’t be used for this objective yet (“not currently supported for the Conversion optimization objective”), according to OpenAI’s guide to conversion-optimized campaigns⁠.

For conversion optimization, track your site’s main action as a standard event, not a custom one.

Conversion values

The conversion value is an integer in the smallest currency unit; for example, 4,200 means USD 42.00. An ISO currency code is required, according to OpenAI Developers on the Conversions API⁠. Product feeds use major currency units instead. Test with a single order of a known amount.

oppref and its cookies

oppref is a parameter added to the end of the landing page URL. The pixel stores it in the first-party cookie __oppref for 30 days, and a new oppref renews that period, according to the pixel guide from OpenAI Developers and OpenAI’s conversion measurement guide⁠.

CookieLifetime
__oppref30 days; a new oppref restarts the period
__obref365 days

The Conversions API doesn’t pick up oppref automatically; you have to capture the parameter and pass it on yourself. Check that it survives every redirect all the way to the page with the pixel.

Conversions API

The Conversions API authenticates with a Bearer token. You create the key in Ads Manager or with POST /conversions/api_keys. Sources: OpenAI Developers on the Conversions API and on conversion setup⁠.

Request partKeys
Request rootvalidate_only, integration_source, events
Required event fieldsid, type, timestamp_ms, data
action_source = webAlso requires source_url

Limits:

  • A batch can hold at most 1,000 events.
  • A single invalid event gets the whole batch rejected.
  • timestamp_ms can be at most 7 days in the past and at most 10 minutes in the future.

Customer data handling:

DataNormalization and hashing
EmailTrim leading and trailing spaces, lowercase, SHA-256
PhoneInternational prefix; remove +, leading zeros, spaces and other separators; 8 to 15 digits remain; SHA-256 hash; pass the lowercase hex hash in phone_numbers_sha256
Identifier listsThe API uses the first three valid unique values
Not hashedFor example regions, postal codes, cities, countries, obref, IP address and user agent

According to its documentation, OpenAI doesn’t yet use Conversions API data for user-level personalization (“does not currently use data… for user-level personalization”).

Deduplication

When the same event arrives through both the pixel and the Conversions API, it’s matched on the Pixel ID, the event name and id. For a custom event, custom_event_name must match as well, according to OpenAI Developers on the Conversions API⁠.

Test it: send one purchase through the pixel only and a second through both the pixel and the Conversions API. The second purchase should count only once.

GTM, server-side GTM and partners

Google Tag Manager (GTM) manages your conversion tracking tags. OpenAI’s official template is openai/ads-measurement-pixel-gtm-template; you import template.tpl. You set up one tag per event with a shared Pixel ID, plus an optional base tag. Event opt-out takes true, false or an empty value. The README doesn’t describe how to connect consent management, so handle the cookie banner separately.

For server-side GTM, Stape offers templates for the pixel and the Conversions API. They are open source from Stape, not an OpenAI tool. If you don’t pass your own Event ID to the CAPI template, it generates a random one, which breaks deduplication when it runs alongside the pixel. Always pass the Event ID. For the general benefits, see our article on server-side tracking in PPC advertising.

OpenAI lists these measurement partners: Fospha, Hightouch, LiveRamp, Triple Whale and WorkMagic (see OpenAI’s help on partner integrations⁠). The official OpenAI Ads Conversions plugin helps you set up the pixel and the Conversions API and check deduplication.

According to PPC Land, app attribution through AppsFlyer and Adjust is live in seven markets: the US, Canada, Australia, New Zealand, the United Kingdom, Japan and South Korea. The Czech Republic isn’t on the list.

UTM and URL macros

Use your own UTMs for paid ChatGPT Ads traffic, with utm_medium=cpc. ChatGPT Search automatically adds utm_source=chatgpt.com to result links, according to OpenAI’s FAQ for publishers and developers⁠. Without your own UTMs, paid and unpaid traffic merge in your analytics.

The available dynamic URL macros are {campaign_id}, {ad_group_id}, {ad_id} and {ad_account_id}, according to OpenAI’s guide to measuring results⁠. In the UTMs of your paid links, use {campaign_id}, {ad_group_id} and {ad_id} so you can tell campaigns, ad groups and ads apart in your analytics.

GA4 has a default channel called AI Assistant for recognized links from AI assistants, according to Google’s documentation of GA4 default channels⁠. Keep paid traffic separate with your own utm_medium=cpc.

Here are the documented legal facts, with links to the authority and the contracts. This isn’t legal advice; have your lawyer verify the interpretation for your site.

Prior consent. According to the Czech Office for Personal Data Protection (ÚOOÚ), non-technical cookies, including analytics and marketing cookies, require the visitor’s prior, demonstrable consent. Only technical cookies are exempt. The legal basis is Section 89(3) of Act No. 127/2005 Coll., the Electronic Communications Act⁠. According to ÚOOÚ⁠, the obligation has been unambiguous since 1 January 2022, following an amendment to this act.
Cookie banner. According to ÚOOÚ, accept and reject buttons must be on the same layer of the cookie banner, and pre-ticked boxes are prohibited. Users must be informed who receives the data and whether it may be transferred to third countries.
Controllers. Under the Ad Tools DPA, outside Restricted Processing, the advertiser and OpenAI act as independent controllers, not as controller and processor. Data from the EEA is processed by OpenAI Ireland Limited.
Advertiser’s obligations. Under the Ad Tools DPA, the advertiser must have the necessary rights, consents and legal bases. Data must not be passed on after an opt-out or a withdrawal of consent. The data categories include emails, phone numbers, cookies, online identifiers, and device, event, transaction and purchase data.
Prohibited data. The Ad Tools Terms prohibit sending sensitive data (“Prohibited Data”) and children’s data.

As of 29 September 2026, no Czech or EU regulator has published an opinion specifically on OpenAI’s pixel.

STEP 6

Step 6: reading the results

What Ads Manager shows and omits

Ads Manager reports Impressions, Clicks, Spend, CTR, Avg CPC, Avg CPM and Conversions. You can export a CSV as an aggregate summary or broken down by day, according to OpenAI’s guide to measuring results⁠.

Practitioners point out these reporting gaps:

Digichef. Geographic reporting shows only the country, and there’s no report of queries or conversation topics. The account used the Czech interface. According to Digichef’s article⁠, advertising opened to Czech accounts on 1 September 2026.
Search Engine Journal. According to the outlet⁠, OpenAI offers no auction reporting, no impression share (your share of impressions) and no competitive comparison.

Reporting lag

MetricWhen it shows up
Impressions, clicks, CTRRefreshed roughly every 15 minutes
SpendDelayed by 7 to 8 hours
Attributed conversionsMay appear only after 24 to 48 hours
Products from the feedIn reporting up to 7 hours after delivery starts

Sources for these delays, all from OpenAI: billing and payments, measuring results and campaigns from product feeds.

The default conversion column counts by the time of the ad event. Conversions (by conv. time) counts by the time of the conversion. Add this second column for daily comparisons with your backend.

With only dozens of clicks, don’t judge the conversion rate day by day. For leads, track quality in your CRM.

Attribution windows and view-through

Reports let you choose the attribution window, according to OpenAI’s guide to measuring results⁠:

TypeValues
Post-click7, 14 or 30 days
View-through0 or 1 day

With a 1-day view-through window, the Conversions column also includes conversions from people who saw the ad but didn’t click. For comparisons with GA4 and your backend, we recommend 0 Day, which counts only post-click conversions.

Older developer pages for the pixel and the Conversions API describe view-through conversions as a separate metric outside Conversions. The help article is newer, so follow it.

Modeled conversions

Reported conversions may include modeled conversions (“Reported conversion totals may include modeled…”), according to OpenAI’s conversion measurement guide⁠. Part of the number may be estimated by a model rather than measured. For business decisions, compare orders with your backend by ID, not just the totals.

Why clicks and visits differ

According to OpenAI’s guide to measuring results⁠, Ads Manager clicks and analytics sessions differ because of page loads, redirects, consent, browser blocking, UTMs, attribution windows and time zones. Compare the same period in the same time zone.

RUJZL⁠ cites Symphonic Digital secondhand: 53 clicks turned into 35 visits, 34% fewer. That is a small sample and a secondary citation, not a rule. Just don’t expect Ads Manager and GA4 to match one to one.

Three sources of results

SourceCountsWhy it differs
Ads ManagerClicks; conversions by the selected attribution window; with 1-day view-through, view-through conversions too; possibly modeled conversionsAttribution window, modeling, time of the ad event
GA4Sessions (visits)Page loading, redirects, consent, browser blocking, UTMs, time zone
E-shop backend or CRMYour own orders and leads with IDsMatch with Ads Manager by order ID

For comparison, use the 0 Day view-through window, the same period and time zone, the column based on conversion time, and matching by order ID.

09

Checklists

Before launch

E-shop conversion tracking

Lead-gen conversion tracking

10

Still unknown

As of 29 September 2026:

  • No official bid floor. OpenAI hasn’t published one; all we have is practice from individual accounts.
  • No ad review SLA. PLACEMENT’s seven-hour approval is a single experience.
  • No list of countries for product ads. RUJZL’s Czech account wasn’t delivering as of 24 September 2026.
  • Language targeting and dayparting. The documentation doesn’t describe them.
  • No representative Czech conversion or CPA data. Figures from individual accounts aren’t a benchmark.
  • No Czech or European regulatory opinion on the OpenAI pixel
  • Sponsored Agents. Not available to regular advertisers; it’s a limited alpha.
  • Persona role. Not listed in OpenAI’s official account setup help.
  • Auction reporting, impression share. Not provided, according to Search Engine Journal.

The ad policies have changed six times since March 2026, and Ads Manager is still in Beta. Before taking any major step, reopen the help center and compare it with this article.

FAQ

FAQ

Can I change the currency or country after setup?

No. You can’t change the country or region, currency or time zone after the account is created. OpenAI’s official table lists a CZK 350 minimum, yet the first Czech accounts from early September 2026 ran in euros only. Check the currency in the form.

What’s the minimum budget in the Czech Republic?

According to OpenAI’s table, the daily minimum is CZK 350 for a koruna account, EUR 15 for a euro account and USD 25 for a dollar account. The first Czech accounts from early September 2026 ran in euros. For a 30-day campaign, CZK 350 a day corresponds to CZK 10,500.

What should I bid per click?

OpenAI recommends a starting maximum bid of USD 3 to 5, with no distinction by region. On RUJZL’s account, EUR 0.10 got no impressions; delivery started at around EUR 1.5, and RUJZL recommends bidding above EUR 1. That is a single account, not a price list. We recommend starting at around EUR 2: above the level where RUJZL’s delivery started and below OpenAI’s recommendation.

Are context hints keywords?

No. According to OpenAI, a context hint is a clear, natural phrase with a single idea. It isn’t a keyword list or a targeting rule, and it doesn’t guarantee impressions. A use case with different ad copy or landing page gets its own ad group.

Do I need to set up pixel consent?

By default, the pixel treats consent as true unless you explicitly pass false or it finds a stored opt-out. OpenAI’s documentation says to call oaiq("consent", false) before init and switch to true only after consent. According to ÚOOÚ, non-technical cookies require prior, demonstrable consent under Section 89(3) of Act No. 127/2005 Coll. This isn’t legal advice.

Why does Ads Manager show more clicks than GA4 visits?

According to OpenAI, the gap comes from page loads, redirects, consent, browser blocking, UTMs, attribution windows and time zones. RUJZL cites Symphonic Digital with 53 clicks and 35 visits. That is a small sample, not a general rule.

Do product ads work in the Czech Republic?

As of 24 September 2026, RUJZL’s account wasn’t delivering them, and OpenAI support confirmed a country restriction for that account. According to Shoptet support, e-shops are waiting for product matching to fully open in Europe. OpenAI hasn’t published a list of countries.

Do I pay per conversion?

You pay for impressions or clicks. With the Conversions objective, you pay per click, or per impression if you’re an eligible advertiser. According to OpenAI, you don’t pay for the conversion itself.

Review your test before launch

Considering a ChatGPT Ads test and want conversion tracking ready before the first click? Get in touch and we’ll review the setup together before launch. We explain how Google Ads and Sklik, Seznam’s ad platform, fit into the mix in our article on PPC advertising in 2025. See our PPC services for what we do in PPC.

Contact us

The full ChatGPT Ads series

Petr Kučera

About the author

Bc. Petr Kučera, MSc., MBA

CEO & Performance Strategist, PPC ONE

Petr discovered the power of performance campaigns back in 2011, and they have been an inseparable part of his professional life ever since. His edge comes from working with more than a hundred companies.

About the authorLinkedIn

Data verified as of 29/09/2026, Conviu update as of 30/09/2026.