Guide
Campaign naming convention: a template for campaigns, ad sets and ads
A naming convention is a fixed recipe for your names. Same parts, same order, same separator, every time. Here is one that works for Meta ads and most other platforms, and how it carries into your UTM links so Google Analytics shows which ad brought each visit.
The template in one look
| Level | Parts | Example |
|---|---|---|
| Campaign | Brand, platform, objective, geo, audience, launch month (YYYYMM) | acme_meta_sales_us_prospecting_202611 |
| Ad set | Targeting, placement | lookalike_auto |
| Ad | Format, concept, version | video_spring-hero_v1 |
The one rule: name each level for what changes there
Meta has three levels. The campaign holds the goal, the ad set holds who sees the ad and where, and the ad holds what people see. So each name only needs the parts that change at its level:
- Campaign name: the parts you report on most, like brand, platform, objective, country, audience type and launch month.
- Ad set name: the targeting (broad, interests, lookalike, retargeting) and the placement (automatic, feeds, stories, reels). Add an age range if you split by age.
- Ad name: the format (video, image, carousel), the idea or hook, and a version number. Add the length or size if you test those.
You don't need to repeat the campaign parts inside the ad set and ad names. Ads Manager already shows which campaign an ad sits in, and short names are easier to read in reports.
Five rules that keep names clean
- One separator between parts. Underscore is the most common. Use a hyphen for spaces inside a part, like
spring-hero, so a spreadsheet can split the name on the underscore. - One letter case. Lowercase is safest. Google Analytics treats
Metaandmetaas two different values. - No empty parts. A name like
acme__us_breaks every filter that counts parts. - No special characters. Characters like
? & # % /and quotes break links and exports. - A short list of allowed words for each part. Pick
prospectingorprosp, never both. Write the list down and share it with the team.
How the names go into your UTM links
UTM tags are the bits after the ? in a link that tell Google Analytics where a visit came from. A simple UTM naming convention template that matches the names above:
| Tag | What goes in | Example |
|---|---|---|
| utm_source | The platform | facebook |
| utm_medium | The type of traffic | paid_social |
| utm_campaign | The campaign name | acme_meta_sales_us_prospecting_202611 |
| utm_term | The ad set name | lookalike_auto |
| utm_content | The ad name | video_spring-hero_v1 |
With the ad name in utm_content, the Session manual ad content dimension in GA4 lists each ad by the same name you see in Ads Manager. That is a creative report without any extra setup.
On Meta you don't have to type the names into every link. In the ad's URL parameters field, use Meta's dynamic parameters and Meta fills in the real names when someone clicks:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}This is why the names matter: whatever you type as the ad name is exactly what shows up in your analytics. A messy name in Ads Manager is a messy row in GA4.
Google Ads and other platforms
Google Ads has the same three levels with different words: campaign, ad group, ad. Use the same template, with the ad group in place of the ad set. Google's own link placeholders fill in IDs, like {campaignid} and {adgroupid}, not names, so for readable reports put the names in the links as fixed text. TikTok, Microsoft Ads, DV360 and Campaign Manager 360 work the same way: the builder knows each one's placeholders.
Build it without typing every name
The free campaign naming and UTM builder does all of this for you. In step 1, tick the parts you want and switch on Also name ad sets and ads. In step 2, add one row for each ad. In step 3, copy the campaign, ad set and ad names and a tracking link for every ad. It runs in your browser, so nothing you type is sent to us.
Already have links? Paste them into the UTM link checker to catch capital letters, missing tags and names that break your convention before launch.
Building in Meta Ads Manager? The free Meta Ads Pre-Launch Checker Chrome extension checks your Meta build against your setup sheet before you publish, so a wrong name is caught in the draft.