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

LevelPartsExample
CampaignBrand, platform, objective, geo, audience, launch month (YYYYMM)acme_meta_sales_us_prospecting_202611
Ad setTargeting, placementlookalike_auto
AdFormat, concept, versionvideo_spring-hero_v1

Build these names in bulk, free

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:

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

  1. 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.
  2. One letter case. Lowercase is safest. Google Analytics treats Meta and meta as two different values.
  3. No empty parts. A name like acme__us_ breaks every filter that counts parts.
  4. No special characters. Characters like ? & # % / and quotes break links and exports.
  5. A short list of allowed words for each part. Pick prospecting or prosp, 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:

TagWhat goes inExample
utm_sourceThe platformfacebook
utm_mediumThe type of trafficpaid_social
utm_campaignThe campaign nameacme_meta_sales_us_prospecting_202611
utm_termThe ad set namelookalike_auto
utm_contentThe ad namevideo_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.

Open the builder Check existing links

FAQ

Questions, answered

Naming conventions and UTM tags, in plain words.

Still stuck? Email hello@weekendproof.com

What is a campaign naming convention?

A fixed recipe for naming campaigns, ad sets and ads: the same parts, in the same order, with the same separator and letter case every time. It lets you filter and group results in Ads Manager, spreadsheets and Google Analytics without cleaning names by hand.

What is a good Meta ads naming convention?

Name each level for what changes at that level. Campaign: Brand_Platform_Objective_Geo_Audience_YYYYMM, like acme_meta_sales_us_prospecting_202611. Ad set: who sees it and where, like lookalike_auto. Ad: what it shows, like video_spring-hero_v1. Use one separator, lowercase, and no spaces or special characters.

What is a UTM naming convention template?

A rule for what goes in each UTM tag. A simple one: utm_source is the platform (facebook, google), utm_medium is the type of traffic (paid_social, cpc), utm_campaign is the campaign name, utm_term is the ad set name and utm_content is the ad name. Keep every value lowercase, with underscores instead of spaces.

Should utm_content be the ad name?

Usually yes. 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. On Meta you can type {{ad.name}} and Meta fills in the ad name when someone clicks.

Underscore or hyphen in campaign names?

Either works, as long as you pick one and never use it inside a part. A common choice is underscores between parts and hyphens inside a part, like acme_meta_spring-sale_us. Then a spreadsheet can split the name on the underscore.