Meta is no longer scaling reach for you off targeting rules; the algorithm leans heavily on diverse creative inputs, so when your assets look too similar, reach suffers, CAC rises, and it presents as a media buying problem. At one luxury lifestyle brand that's exactly how it presented, and the media buying was fine. Creative diversity had stalled, and nobody could see it because of how the ads were named.
The old rhythm
Each month, performance and creative reviewed results, flagged winning and losing ads, and drew sweeping takeaways: "ASMR works", "design-process stories don't". The judgments were based on that month's surface results, with no structured learning across assets, so the same debates repeated quarterly with different winners.
Why the naming couldn't answer anything
The tagging lived in underscore-separated UTM names, and it failed in three predictable ways. Categories overlapped, so two totally different assets carried identical values. Fields were either/or when ads are both/and: an ad had to be "design" or "quality" when it was both. And positional parsing ("the fifth underscore is ad format") fell apart the first time an optional value like motion type needed to exist. The same ad, tagged both ways:
which underscore is format? where does motion type go?
The ontology
We designed a structured taxonomy covering every dimension that plausibly drives performance: strategy (prospecting vs retargeting), format (UGC, animation, product demo, static), story, visual strategy, claims and value props (multi-select, because ads make more than one), production and delivery details. Then we built a UTM generator that enforced it, so structure wasn't a convention people could drift from, it was the only way to ship an ad.
What changed
With assets structured, the first finding was that despite heavy creative output, true diversity in spend was lacking.. lots of ads, few kinds of ads. Investing into genuinely different categories (UGC, relatable lifestyle with models, authentic human moments) improved performance, and the monthly winner/loser meeting became a learning loop tracking which creative categories drove reach and CAC. Reach reversed its decline over ~2 quarters and CAC pressure eased.
You can't optimize what you can't define, and the naming system is the analytics. Happy to walk through how we'd structure it for your creative library.
Common questions
Can't AI just tag my creative now?
AI is genuinely good at applying tags at scale, and it still benefits from you doing the design first. Off-the-shelf tagging tools ship generic taxonomies that aren't mutually exclusive or complete for your brand: "lifestyle" and "UGC" overlap on the same ad, and the dimensions that actually drive your performance, your specific claims, stories and production splits, usually aren't in the schema at all. The division of labor that works: you design the dimensions and values (a day of work with performance and creative in one room), AI applies them at scale including backfilling old assets, and the UTM generator enforces them going forward. Handing the design over is how you end up with tags that are technically complete and analytically useless.
How many dimensions should an ontology have?
We often have 20+ to truly capture all attributes of a creative asset, but usually 6-9 are the most critical ones used all the time, and two tests keep it honest. The MECE test per field: if two values can both be true of one ad, that field is multi-select or it's actually two fields. And the brief test per dimension: if no analysis on this field would ever change what you brief next, cut it. Start from the structure your creative team already briefs with, strategy, format, story, visual, claims, production, delivery, rather than inventing categories the team won't recognize.
Where should the tags live?
In the ad's UTMs (or ad name fields) at creation time, enforced by a generator, so structure is the only way to ship an ad. Backfill projects rarely survive their first quarter because backfilling is nobody's job; generation-time tagging survives because nothing ships without it. The generator is also where optional fields stop breaking things, which is exactly where underscore conventions fall apart.
This kind of structure-first measurement is core to our Acquisition & Creative work.
See how it works →