Campaign
{client}_{platform}_{objective}_{country}_{audience}_{date}
NIKE_META_PUR_NL_BRD_20260826
Everything you would ever filter a campaign list by, in the order you would filter it.
Your first client is free. Set up your naming system in two minutes.
A convention for all three levels of a Meta account, the reasoning behind each field, and a live example you can change.
{client}_{platform}_{objective}_{country}_{audience}_{date}
NIKE_META_PUR_NL_BRD_20260826
Everything you would ever filter a campaign list by, in the order you would filter it.
{country}_{audience}_{age}_{placement}
NL_BRD_18-45_ADV
What actually varies between ad sets. Repeating the client here buys nothing.
{format}_{angle}_{hook}_{creator}_{version}
UGC_PAIN_HOOK03_SARAH_V2
The variables under test, so a winning ad explains itself.
Country and audience appear at two levels. A convention only works if they stay in step.
Country and audience appear at two levels. Change one and both names follow, which is the only reason the ad set name is worth filtering on.
Only if you run more than one. Inside a single-brand account it is the same word on every campaign, which costs characters and tells you nothing.
Same rule. In a Meta-only account it is redundant. Keep it if the same convention also has to cover Google and TikTok, because then the export from all three still sorts.
Worth keeping almost always. It is the fastest way to separate prospecting spend from retargeting spend when someone asks where the budget went.
These earn their place at two levels: on the campaign for filtering, on the ad set because that is where they are actually set. Redundant on paper, useful in practice.
YYYYMMDD, at the end. It sorts correctly as text, which no other date format does, and putting it last keeps names grouped by client rather than by launch day.
Ad set only, and only while you are testing them. A field that never varies is a field to remove: the convention should describe the decisions, not the defaults.
Uppercase for names in Ads Manager, lowercase for the UTM values that mirror them. Ads Manager is case-sensitive when you filter, GA4 is case-sensitive when it groups, and picking one rule per surface avoids both traps.
Underscores between fields. If a value itself needs a separator, use a hyphen, as in 18-45. That way splitting a name on _ always gives back exactly the fields.
Write them down once and make them shared. Two to four characters, no vowel-dropping games, and never two abbreviations for the same thing. PUR, not PURCH and PU.
Use this convention in UTMConfig.
Save it as a template, set your own abbreviations, and generate all three names plus the tracking URL from one screen.