For the better part of two decades, the business of buying digital attention has run through two front doors. One belongs to Google, the other to Meta. Together they have absorbed the overwhelming majority of the world’s online advertising, and the people who buy ads for a living have learned to speak their respective dialects — keywords and quality scores on one side, lookalike audiences and pixels on the other.
This spring, a third door opened, and almost no one noticed.
OpenAI, the company behind ChatGPT, began admitting a small number of advertisers into a beta version of an advertising console it calls Ads Manager. The premise is straightforward and, on reflection, slightly vertiginous: hundreds of millions of people now spend part of their day in conversation with a chatbot, and OpenAI has decided to let companies place messages inside those conversations. The product is early, the reporting is thin, and the rules are still being written. I wanted to know what it was actually like to use, so I did the only thing that produces an honest answer. I built a campaign.
The advertiser was my own company, a small firm called It All Started With A Idea. The budget was modest and the stakes were mine. What follows is an account of the first hour.
A console that feels familiar, and then doesn’t
Anyone who has logged into Google Ads or Meta’s Ads Manager will recognize the architecture immediately. There is a left rail with campaigns, tools, billing and settings. There is a table of rows that turn from gray to green when something goes live. The vocabulary is the vocabulary of the trade: objectives, ad groups, conversions, impressions.
Caption: The Ads Manager Beta change history, showing the full sequence of a campaign being built in about sixteen minutes.
The change history above is, in a sense, the whole story compressed into a single screen. Seven actions, time-stamped over roughly sixteen minutes: a data source created, a conversion event defined, a campaign launched, two ad groups built, two advertisements submitted. It is a record of how quickly a person can now stand up something that, a decade ago, required a media plan, an agency and a week.
But the familiarity is a kind of trick. Look closer and the differences are the entire point.
There are no keywords
In the world Google built, an advertiser bids on words. You decide you want to appear when someone searches “running shoes,” and you compete, in a silent auction conducted in milliseconds, for the right to be seen. The skill of the profession, such as it is, lies in guessing which words people will type.
ChatGPT Ads does away with this entirely. There is nothing to bid on, because there is nothing to type. Instead, an advertiser writes what OpenAI calls context hints — short paragraphs, in ordinary prose, describing the kinds of conversations in which an ad should appear. You are not choosing words. You are describing situations.
Show ads in conversations where people are exploring new business ideas, startup concepts, side hustles, branding, naming, and turning an idea into a real business. Relevant users may be asking for help brainstorming, validating a concept, or taking the next step on a creative project. Do not prioritize conversations unrelated to entrepreneurship or business building.
That is roughly what I wrote. It reads less like an advertising directive than like instructions to a new employee, which is more or less what it is. The system treats the hints as guidance, not as a contract, and decides on its own which conversations qualify. The advertiser describes intent and surrenders control of the match. For people accustomed to the precise, auditable mechanics of search advertising, this requires a small leap of faith.
The bid that decides whether you exist
The one place where the old instincts still serve is money. ChatGPT Ads, at least in this form, sells impressions on a cost-per-thousand basis, and OpenAI has set a default ceiling of sixty dollars for every thousand times an ad is shown. The console will let an advertiser bid far less. It will not necessarily reward them for it.
This is the trap that quietly kills new accounts. Enter a cautious figure — a dollar, two dollars — and the campaign will appear to function while delivering almost nothing. The advertiser concludes the platform is broken. The platform is not broken. The bid is simply beneath the floor at which anyone is shown anything. I set two ad groups at two different levels precisely to watch this dynamic, and the lesson generalizes: on a new platform, the difference between a real test and an invisible one is often a single number.
Caption: Two ad groups, set at two bid levels, both serving.
Writing the ad with the machine that will run it
There is a tidy irony in advertising on ChatGPT, which is that ChatGPT is also a perfectly competent copywriter. I used it to write the ad that would run inside it.
The constraints are tight — a headline of fifty characters, a description of one hundred — so I asked the model to write to the limit and to point at my strongest offer rather than my homepage. The result was a headline of twenty-nine characters, “Get a Free Paid Media Audit,” and a single supporting line about finding wasted spend and the fixes that matter. I had it generate a clean square image, then build a second version to compete against the first.
Caption: The first creative, as it appears inside a ChatGPT conversation
Caption: A second creative, built to test against the first, with a clearer call to action.]
Both went live within minutes. Whatever one thinks of the broader trajectory — a single company writing the ad, hosting the ad, and deciding who sees the ad — the production friction has collapsed to almost nothing.
Two steps, and the part that actually matters
The most consequential decision in any advertising account is not the creative or the bid. It is whether the advertiser can tell, afterward, what happened. An account without working conversion tracking is a slot machine that never reports its payouts.
So before spending a cent, I wired up measurement. OpenAI provides a web data source and a snippet of tracking code. The conventional path would be to hand that code to a developer and wait for a release. I did not. I pasted it into Google Tag Manager as a custom tag, told it to fire when someone submits my contact form, and published. Two steps — paste, publish — and no engineer involved.
Within the hour the data source turned green and began counting. A form submission on my site now registers as a lead inside an OpenAI console, alongside the impressions, in a measurement model that is deliberately coarse — aggregated, privacy-conscious, with none of the person-level granularity that has made the older platforms both powerful and controversial. It is enough to answer the only question that matters: is this channel producing business, or merely noise?
Why being early is the whole point
None of this is finished. The reporting is sparse, the screens will change, and the strategic playbook that took fifteen years to develop for Google does not yet exist here. A reasonable person could decide to wait.
I would argue the opposite. The advantage of a new advertising channel accrues to the people who learn its grammar before it is crowded — before the cost of attention is bid up by everyone who waited for certainty. The mechanics I have described took less than an hour to learn. The fluency that hour buys is the kind of thing that, when this becomes ordinary, will look like foresight.
For now, it simply looks like a green dot next to the word Serving, which, in this business, has always been where the story starts.
John Williams is the founder of AHMEEGO and the practitioner behind Buddy, an open-source Google Ads agent. The technical, step-by-step version of this build — every screen, the exact bid guidance, and the Google Tag Manager setup — is published at ahmeego.com/blog/articles/25-how-i-launched-my-first-chatgpt-ads-campaign.







Really interesting. Would be nice to see a version of this with alexa for shopping ads!
https://substack.com/@calvinjonescinematheory/note/c-268346076?r=8dbojf&utm_medium=ios&utm_source=notes-share-action