Smileline
Marketing

ChatGPT Ads

Advertise inside ChatGPT with an API key, attribute the leads that arrive on your website, and feed bookings back to OpenAI.

Open Ads → ChatGPT Ads. ChatGPT Ads is the fourth platform in the Ads workspace, beside Google Ads, Meta and TikTok, and it differs from the other three in two ways: you connect with an API key rather than a login, and there are no lead forms — every ChatGPT lead arrives through your own website.

What it is

OpenAI shows sponsored cards under ChatGPT answers. A card links to your booking page, and the visit carries OpenAI's click id (oppref), so when that visitor enquires through a tracked form, the booking page or the chat widget, Smileline attributes the lead to the ChatGPT Ads source on the Paid AI channel — see Attribution.

With the account connected, Smileline:

  • attributes leads (Core) — website leads carrying a ChatGPT click id are attributed automatically;
  • reports conversions back (Core) — Lead, Booked and Won reach OpenAI's Conversions API so its optimisation learns which clicks become patients;
  • loads OpenAI's pixel on your website (Core, consent-gated) once conversion feedback is set up;
  • reads spend and results and manages adopted campaigns (SEO & Ads add-on) — every campaign in the account is reported; status, schedule, destination, targeting and creative controls are available after adoption.

There are no lead forms, webhooks or lead backfills for ChatGPT, because OpenAI offers none. Lead capture is your website: the tracking script, your website forms and online booking. The same three Ads permission levels apply as on every other platform.

Who sees the ads

OpenAI shows ads to logged-in adults on ChatGPT's Free and Go plans. The UK launched on 11 August 2026. Dental services are an approved category, but OpenAI approves each health advertiser by hand in Ads Manager — expect to be asked for proof of your practice's registration — and ads never appear in personal-health conversations.

Before you connect

Everything on this list happens in OpenAI's Ads Manager, not in Smileline:

Create an ad account and complete the health-category approval. OpenAI reviews health advertisers individually. Until the account is approved, the connection works but campaigns cannot run.

Upload your business logo. OpenAI blocks active campaigns on accounts without one — its review reason reads missing_favicon.

Create an API key. Go to Settings → API keys in Ads Manager and create a key. One key belongs to one ad account.

Keep OpenAI's Text customisation switched off in Ads Manager. It lets OpenAI rewrite and translate your headlines without review — a compliance risk for health claims that the policy check cannot see.

Connect

On Ads → ChatGPT Ads, click Connect with API key and paste the key. Connecting needs the manage level of the Ads permission group. Once connected, the page opens on the ChatGPT dashboard and the connection moves behind Settings at the top right — that is where you rotate the key, press Sync, set up conversion tracking or disconnect; Dashboard switches back.

Smileline validates the key against the ad account before storing it encrypted; a key OpenAI rejects is refused and nothing changes. The connection then discovers the one ad account the key belongs to, with its review status, currency and time zone.

  • Rotate the key by pasting a new one. The previous key is replaced.
  • A key for a different ad account replaces the account and discards the previous account's conversion resources — pixel, event settings and Conversions API key — because they only work on the account that created them.
  • Disconnect removes the Ads key and stops the website pixel. The Conversions API key stays stored encrypted, so reconnecting the same account needs no re-provisioning.

A key OpenAI no longer accepts shows as a connection problem under Settings, and the reconnect notification opens that view. Paste a fresh key to fix it. Two other conditions are reported on the connection without asking for a new key: an ad account whose brand review is not yet approved (the connection stays usable but carries a note until OpenAI approves it), and a feature OpenAI has not enabled for the account, which only OpenAI's partner enablement fixes.

Locations

ChatGPT cannot target a radius. OpenAI targets countries, regions and metro areas, so on connect Smileline looks each practice location under Settings → Locations up by postcode, then town, then country, keeps the first unambiguous match in your country as that location's targeting area, and targeting changes use those areas.

  • Added a location? Press Sync under Settings on the ChatGPT Ads page to resolve it.
  • An ambiguous lookup — several matching areas in your country — leaves the location unresolved. Make the location's postcode and town more specific under Settings → Locations, then press Sync: unresolved locations are looked up again on every sync.
  • A targeting change cannot be applied while one of its locations is unresolved.

Conversion feedback

The Conversion tracking card under Settings on the ChatGPT Ads page works like the other platforms' — see Conversion feedback for what is sent, what is never sent, and the junk-triage window. On ChatGPT it provisions:

  • a pixel named Smileline;
  • three event settings with a 30-day click window — Smileline Lead (lead_created), Smileline Booking (appointment_scheduled) and Smileline Treatment Won (order_created);
  • a server-side Conversions API key.

Events are sent server-side, one per request, carrying the click id, the hashed email, phone number and name, and the postcode. The card shows Confirmed on the first live event — OpenAI has no test-event code, so the first accepted live event confirms the wiring.

OpenAI only accepts an event within seven days of the moment it records. A Lead, Booked or Won event that cannot be delivered in that time is marked skipped as stale and counted on the card — never sent late, never silently dropped.

If provisioning fails part-way, the card says so and offers a retry. OpenAI does not list pixels or Conversions API keys, so a retry can leave one unused pixel or key in Ads Manager without a recorded id. It is harmless; ignore it.

The pixel on your website

Once conversion feedback is connected, enabled and provisioned, the Smileline tracking script loads OpenAI's measurement pixel (https://bzrcdn.openai.com/sdk/oaiq.min.js) on your website and sends OpenAI one page view per page, so it can attribute view-through conversions and match visitors to their clicks. It is the only third-party script the tracking script ever loads, and it is gated:

  • it loads only once the visitor's consent allows storage under your consent setting — immediately under the default, after a grant under either waiting option, never before — and a later denial is passed to OpenAI;
  • never for known crawlers;
  • it is removed automatically when feedback is disabled or the account is disconnected; installed scripts pick that up within about a minute.

Settings → Website shows ChatGPT pixel: configured (or not configured), so you can check the state without opening the Ads workspace.

If your website sends a strict Content Security Policy, allow:

script-src  https://bzrcdn.openai.com
connect-src https://bzr.openai.com https://bzrcdn.openai.com
img-src     https://bzr.openai.com

Campaigns

Campaign management is part of the SEO & Ads add-on. Create a sponsored chat-card campaign in OpenAI Ads Manager. OpenAI's campaign API requires a lifetime spend limit, while Smileline currently models daily budgets, so creating a ChatGPT campaign and changing its budget stay in OpenAI Ads Manager.

Campaigns appear under External after the next sync. Click Adopt to enable Smileline's supported controls:

  • Status and schedule — pause, resume and change the campaign dates.
  • Location targeting — use the resolved OpenAI area for each selected practice location; OpenAI does not support radius targeting.
  • Destination and creative — update the chat card and its landing page. OpenAI reviews each change as in review, approved or rejected.
  • Conversion feedback — keep sending Lead, Booked and Won events to the conversion settings provisioned for the account.

A campaign with a lifetime budget shows Total budget set in Ads Manager and cannot be adopted: give it a daily budget in OpenAI Ads Manager first. Budget changes stay in OpenAI Ads Manager either way, so the platform dashboard offers no inline Budget action for ChatGPT. OpenAI also makes a conversion campaign's objective and selected conversion event immutable after creation, so changing from Lead to Booking requires a new campaign.

Spend & results

Once connected, Ads → ChatGPT Ads opens on the platform dashboard: spend, leads, booked, cost per booking, return, won value, clicks and impressions for the chosen date range and location, with the previous-period comparison, daily charts and a campaign table that lists every campaign in the account with Pause, Resume, Adopt, Open and Ads Manager on each row. With the add-on, Spend & results and the Ads weekly digest include ChatGPT as well:

  • campaign-level spend, impressions and clicks for every campaign in the account — OpenAI's delivery reports carry no conversion count, so the conversion columns come from CRM outcomes;
  • ad-level rows and disapproval alerts only for campaigns Smileline manages — created in Smileline or adopted — after their structure syncs; expanding an external campaign on the dashboard shows no ads;
  • no platform-reported leads — OpenAI has no lead forms, so the lead columns come from the CRM, which is the truth anyway.

A large account syncs in slices and continues automatically until the whole account has been read. Nothing waits on you.

If something stops working

What you seeWhat to do
The connection reports the key as invalidCreate a new key under Settings → API keys in Ads Manager and paste it with Connect with API key.
Campaigns will not run and the account review reason is missing_faviconUpload the business logo in Ads Manager.
The account is still under reviewWait for OpenAI's health-category approval; nothing in Smileline unblocks it. The connection shows the review status until then.
The connection says a feature is not enabled for the ad accountAsk OpenAI for partner enablement of that feature; a new API key changes nothing.
A location is unresolvedCheck the location's postcode and town, then press Sync under Settings — unresolved locations are retried on every sync.
Provisioning failedRetry from the Conversion tracking card under Settings. An unused pixel or key left in Ads Manager is harmless.
Data stopped syncingSee If syncing stops.

On this page