← back to blog
    Berner SetterwallSeptember 5, 20265 min read

    ChatGPT Ads: What They Are, What They Cost, and How to Run Them From an Agent

    ChatGPT Ads: What They Are, What They Cost, and How to Run Them From an Agent

    OpenAI named the product OpenAI Ads. Nobody searches for that. Pull up Google Trends for Sweden over the past month and "chatgpt ads" peaks at 100 while "openai ads" tops out around 22 — a roughly 4–5× gap on two names for the same auction. So: ChatGPT ads are OpenAI Ads. Same ad account at ads.openai.com, same Advertiser API, same chat cards.

    This post is the channel explainer. If you want the integration details instead — every tool, every unit convention — read OpenAI Ads Is Live in Cogny.


    What a ChatGPT ad actually is

    A chat card: a title, a body, an image and a target URL, rendered below a model response and labelled Sponsored, with a clickable favicon next to it.

    What sits behind that card is where the channel stops resembling search:

    • No keywords, no interest graph. Targeting is a campaign-level geo block plus context hints on each ad group — short free-text phrases describing the conversations the ad belongs in.
    • The relevance model reads the hints and the card copy together. An ad that echoes the situation the user is actually in outscores a generic one that could sit under any conversation. That inverts the usual instinct to write three strong ads and let the machine sort it out: here, breadth of specific creative is the targeting.
    • Three bidding types — impressions, clicks, conversions. Conversions requires event settings wired to a pixel or the Conversions API first.

    What it costs

    OpenAI quotes a typical $15–60 CPM. Reported ChatGPT-ads CTR sits around 0.91%, which puts the effective CPC in a $1.65–6.59 band, ~$3.30 at the midpoint. That band is the useful number: it tells you whether an ad group's max bid can win at all, and it is the first thing worth checking when a group logs budget but no impressions.

    Two unit conventions bite everyone once:

    • Budgets and bids are micros of the account currency — 25000000 = 25.00. Insight metrics are not: spend, cpc and cpm come back in plain currency units, and ctr is a fraction (0.0226 = 2.26%).
    • An insights end_date must be a completed day in the account timezone. Ask for a range ending today and the API answers time_ranges.end cannot be in the future. "Month to date" means through yesterday.

    How the campaign should be built

    OpenAI publishes two guides — the Creative Launch and Scaling Guide and the Context Hints Guidance. The structure they describe is unusually prescriptive, and conformance is most of the job in the first month:

    ElementGuidance
    Ad groupsOne product, theme or intent area each — hints and bids are set here
    Ads~10 per ad group, ~100 per campaign
    Context hints5–10 per ad group, 3–6 words each: [product or category] + [use case] + [qualifier]
    Card title16–24 characters (API allows 50)
    Card body32–48 characters (API allows 100)
    Creative imageNot the logo as primary visual — the favicon is already on the card
    BiddingLaunch on Clicks; move to Conversions once tracking is live
    TaggingA unique utm_term per ad
    Customer lists25,000 matched users minimum, 100,000+ recommended

    The floors matter as much as the ceilings. A 9-character title is not "concise", it is unused space in a fixed-size card.

    A hands-on build walkthrough: our partner agency Growth Hackers Sweden wrote up how they built a campaign on this channel end to end — Build an OpenAI Ads campaign. Their run was one campaign, ten ad groups, 100 ads and 80 context hints, with a build script that fails on any card or hint outside the bands above. Worth reading before you open Ads Manager.


    Running it from an agent

    Ads Manager shows one campaign at a time and no export of ad-level daily rows, which makes the weekly pass exactly the kind of work you should not be doing by hand.

    OpenAI Ads is a live MCP integration in Cogny. Create an Ads API key at ads.openai.com → Settings → API keys, paste it on the OpenAI Ads card under warehouse Settings → Cogny Managed MCPs, and 32 tools over the Advertiser API become callable from Cogny chat, the Cogny CLI, or any MCP client pointed at app.cogny.com/mcp. One key covers one ad account, so there is no account picker.

    cogny tools call mcp__OpenAI_Ads__tool_get_insights --input '{
      "aggregation_level": "ad_group",
      "start_date": "2026-08-01",
      "end_date": "2026-08-31",
      "segment": "country"
    }'
    

    Read tools are auto-approved; writes — create, update, pause, archive — ask first, like every other ads MCP in Cogny.

    Two scheduled templates run the recurring work:

    • OpenAI Ads (ChatGPT) Optimization Audit grades performance: context-hint relevance crossed with CTR, cards over 2,000 impressions under 1% CTR, geo and device fit, bids that cannot win, budgets that never deliver, and whether the conversion pixel is still receiving events.
    • OpenAI Ads Launch & Scaling Playbook grades structure against the table above and drafts the fixes as ready tool_update_ad_group / tool_create_ad payloads — left paused, because passing format validation is not launch approval.

    Each finding names the campaign, ad group or ad id, so the ticket it becomes can be executed through the same MCP once you approve it.


    Where this fits with the rest of AI search

    Buying chat cards is the paid half of showing up inside an assistant. The unpaid half is being the source the model cites in the first place — which is GEO, and a different set of work entirely. Run both and the same question — does this brand exist inside ChatGPT? — gets two answers instead of none.

    Connect OpenAI Ads from Settings, or run npx @cogny/cli init and let your agent do it.