SKAGs for OpenAI Ads: single-intent ad groups
The single keyword ad group is one of the most argued-over ideas in paid search. It was a standard for years, then most experts moved on. The interesting part is that the reasons it fell out of favour in Google are exactly the reasons it belongs on OpenAI Ads, where there are no keywords to bid on and almost no reporting to read.
The structure that turns aggregate reporting into a signal you can act on
What a SKAG really was, underneath the tactic
A single keyword ad group, or SKAG, did exactly what the name says. Instead of putting a dozen related keywords in one ad group, you gave each keyword its own ad group, usually with the keyword repeated in a couple of match types and an ad written to mirror it word for word. At its peak, a serious Google account might have run thousands of them.
The clever part was never the keyword count. It was isolation. When an ad group holds one keyword, that ad group's spend, clicks, and conversions are that keyword's spend, clicks, and conversions, with nothing else mixed in. You could look at a single line in your account and know, precisely, what one search query was doing for your business. You could write an ad that matched that query so closely it lifted your click-through rate and, through Quality Score, lowered what you paid. And you could set a bid for that one query without dragging twenty others along with it.
Strip away the Google-specific machinery and what is left is a simple, durable idea: isolate one unit of demand per ad group so its numbers tell you the truth about that unit. That idea does not depend on keywords, or on Quality Score, or on Google at all. It depends only on wanting clean attribution and direct control, which is to say it depends on the thing every advertiser wants. Hold onto that, because it is the whole reason SKAGs are about to matter again.
Why SKAGs fell out of favour in Google Ads
If the principle is so sound, why did the industry walk away from it? Three forces, and all three were specific to Google rather than to the idea itself.
The first was close variants. Through 2018 and 2019, Google steadily widened what an exact or phrase match keyword would trigger on, folding in synonyms, reordered words, and queries it judged to share your intent, with no way to opt out. The day exact match stopped meaning exact was the day a single keyword stopped mapping to a single query. The isolation that made SKAGs work leaked away, because the platform was now matching your ad to things you never typed.
The second was automated bidding. Smart Bidding strategies like Target CPA and Target ROAS are hungry for data, and they learn best when a lot of it pools in one place. Spread that same volume across a thousand thin ad groups and each one starves, so the algorithm cannot find a pattern. Google's own guidance shifted toward fewer, broader, intent-based ad groups for exactly this reason, and the industry followed it into single theme ad groups, where you group by intent and let the machine sort the queries.
The third was simply the labour. Building and maintaining thousands of near-identical ad groups by hand, writing the ads, adding the negatives that stopped them stealing each other's traffic, keeping it all tidy, was brutal, ongoing work. Even advocates admitted the overhead was the weakest part of the case. By around 2020 the consensus had settled: SKAGs were a relic of a more manual, more transparent era of search.
Why an opaque platform flips the logic back
Here is the part worth slowing down for. Read those three reasons again with OpenAI Ads in mind, and every one of them either disappears or reverses.
Close variants cannot blur your isolation, because there are no keywords to blur. OpenAI matches ads to the meaning of a conversation, so the leak that undid SKAGs in Google has no equivalent here. There is nothing to opt out of and nothing quietly expanding underneath you.
Automated bidding cannot punish you for fragmenting data, because there is no rich, signal-fed bidding engine to feed. The platform gives you aggregate clicks and little else. Pooling everything into a few broad campaigns does not buy you a smarter algorithm the way it does in Google. It just averages your results together and hides which part of the campaign actually worked. On a platform this opaque, consolidation does not buy intelligence. It buys ignorance.
And the labour, the one objection that was genuinely fair, is the one that technology has quietly removed. The reason nobody wanted to hand-build ten thousand ad groups is that a human had to do it. An assistant connected to your account does not mind. It will create the structure, write an ad for each intent, and run the weekly upkeep without complaint. The single strongest argument against SKAGs was an argument about human effort, and that argument expired the moment an AI could do the work.
So the scorecard inverts. The forces that retired SKAGs in Google are absent or reversed on OpenAI Ads, and the thing they were always good at, clean attribution and direct control on a platform that hides both, is precisely what OpenAI's opacity demands. You cannot isolate a keyword, because there are none. So you isolate the next best unit: intent. One topic or use case per ad group, in one place, with an ad written for it. Call them single-intent ad groups. They are the SKAG, rebuilt for a platform with no keywords, and they may be the single most important structural decision you make on OpenAI Ads.
How to build single-intent ad groups
The shape is a grid: every intent you care about, multiplied by every place you sell. Build one ad group per cell.
List your intents
Write down the distinct topics, products, problems, and use cases you want to be present for. Resist the urge to lump similar ones together. Each becomes its own ad group, so the more honestly you separate them now, the more your reporting will tell you later.
Choose your geographies
Split by country at the very least, and by region or state if OpenAI Ads exposes that level, because cost and conversion rate genuinely differ by place. A buyer in one market is not worth the same as a buyer in another, and you want to be able to see and bid each separately.
Create one ad group per intent and place
Lay the intents down one axis and the geographies across the other, then fill the grid. This is where the count climbs, and that climb is the feature, not the bug. The finer the grid, the more precisely the aggregate numbers will point you at what is working.
Write creative that mirrors the intent
Because each ad group is a single intent, the ad can speak to that one thing directly instead of hedging across several. That sharpens relevance for the match, and it sharpens your own read, because you are never wondering which of three messages earned the click.
Set a starting bid and leave it alone
Give each ad group a sensible opening bid based on what a conversion is worth to you, then let it run untouched long enough to gather real data. The discipline of not reacting on day two is part of the method, and the bid guide picks up exactly where this step ends.
What the grid looks like in practice
Suppose you sell a project management tool. Your intents are not one fuzzy idea of project management software. They are a set of distinct demands: a gantt chart tool, a task tracker for small teams, a Trello alternative, software for agency resource planning, a simple to-do app for freelancers, and so on. Each of those is a different person with a different problem, and lumping them together would average a high-intent buyer searching for resource planning in with a freelancer who wants a free checklist.
Say you land on forty such intents and you sell in three markets, the United States, the United Kingdom, and Canada. Forty intents times three countries is a hundred and twenty ad groups, each one a clean little experiment. After a few weeks you will not be staring at one blended cost per acquisition for the whole account. You will see that the gantt chart intent pays beautifully in the United States and poorly in Canada, that the freelance to-do intent burns money everywhere, and that agency resource planning is your quiet star. None of that would be visible in a consolidated campaign. The structure is what makes it visible.
A hundred and twenty is a modest example. Add states or regions, or a longer list of intents, and you are quickly into the high hundreds or thousands. That scale is exactly why this was impractical to do by hand and exactly why it is practical now.
Where this goes wrong, and how to keep it honest
The strategy has one real failure mode, and it is the mirror image of its strength. Narrow ad groups split your traffic into small pieces, and a piece that is too small never gathers enough data to judge. An ad group with four clicks in a week is not telling you anything, no matter how cleanly it is isolated. Push the grid too fine and you end up with a thousand ad groups that each say nothing.
So treat granularity as a dial, not a switch. Split as far as your volume can support a readable signal, and no further. When an intent simply never accumulates enough traffic to evaluate, fold it back in with a couple of its closest neighbours and judge the combined group instead. Lengthen your measurement window for the thinner ad groups rather than reacting to a handful of clicks. And hold the line on the one rule that makes the whole thing work: one intent, one place, one message per ad group. The moment you let two intents share a group to save effort, you have given up the only thing the structure was buying you.
It is also worth being honest about what this is and is not. OpenAI Ads matches on conversation context, so single-intent ad groups are not literal keyword targeting and never can be. What they are is structural isolation, an arrangement of your account that forces the platform's aggregate reporting to resolve down to one readable unit at a time. That is a humbler claim than keyword-level control, and it is also the most control the platform allows you to have.
Build and run thousands without doing it by hand
Create and manage with an assistant
Describe the grid and let Claude or ChatGPT create the ad groups, write the matched creative, sync the latest state, and edit in bulk, all over the MCP.
Managing campaigns over MCP →Then push and pull the bids
The structure produces the signal. The bid loop turns that signal into decisions, raising what converts and starving what does not.
Read the bid guide →SKAGs for OpenAI Ads, answered
Is this keyword targeting on OpenAI Ads?
No, and it cannot be, because OpenAI Ads has no keywords. It matches ads to the context of a conversation. Single-intent ad groups are a structural workaround that isolates one intent per ad group so the platform's aggregate numbers become readable, which is a different and humbler thing than the keyword control you had in Google.
How many ad groups should I actually build?
As many as you have genuinely distinct intents multiplied by the places you sell, but no more than your traffic can fill with a readable signal. Hundreds or thousands is normal for an account with real volume. The honest limit is data: if an ad group never gathers enough to judge, it is too fine, and you should consolidate it.
Did the experts not decide SKAGs stopped working?
In Google, largely yes, because close variants blurred the keyword isolation and Smart Bidding rewarded consolidated data. Both of those are Google problems. OpenAI Ads has no keywords for close variants to blur and no rich automated bidding to feed, so the reasons SKAGs were retired do not apply, while the clean attribution they provided is exactly what an opaque platform needs.
Won't thousands of ad groups be impossible to maintain?
It was, when a human had to do it, and that was the strongest argument against the approach. It is no longer true. Over the MCP, an assistant creates the ad groups with matched creative, keeps them in sync, edits them in bulk, and runs the bid loop, so your job becomes setting the policy and reviewing the outcomes.
Build your single-intent ad groups with the MCP
Analytics, dayparting, audiences and the MCP in one console. Build the structure, read the signal, and act on it at scale.