Ad Creative Naming Conventions for Testing at Scale, With a Template
A naming convention for ad creative tests, with a copyable template, a code list, platform name limits, and the characters that break UTM tracking.
Senior Writer

In this article
Key takeaways
Why naming decides what a test can tell you
The ad name template
Build a code list
Versions, iterations, and AI variants
Platform rules that shape a name
Setting it up in Meta with name templates
Passing names into your analytics
When one ad holds many assets
What to leave out of a name
Keeping it clean
Frequently asked questions
Key takeaways
The ad name is the creative data that leaves the platform. Passed into URL parameters, it's how your analytics knows which hook, angle, and format drove a sale.
Split the fields by level. Campaign names carry market, funnel stage, and objective, ad set names carry audience and placement, and ad names carry the creative.
Use a fixed order, one separator, and closed code lists. A name a spreadsheet can split into columns is a name you can report on by attribute.
Get the name right before launch. Meta keeps the name used at first publish in its URL parameters, so renaming a live ad doesn't change what reaches your analytics.
Stick to letters, numbers, underscores, and hyphens. Spaces turn into %20, TikTok drops everything after a
#, and an&splits a value in two.
Why naming decides what a test can tell you
A creative test is only as useful as the report you can pull from it. Ads Manager will tell you which ad won. It won't tell you whether problem-callout hooks beat testimonials across the last 40 launches, or whether 15-second cuts outsell 30-second ones, unless those facts are written into the names.
That's the job of a naming convention. When every ad name puts the same fields in the same order, a spreadsheet can split the names into columns and you can group results by angle, hook, format, length, or creator. The empty cells in that grid (the angle you've never tried as a static, say) become the next brief.
Volume makes this harder. Meta allows 50 non-archived ads per ad set, a single ad can hold up to 10 images and videos, and AI tools can produce dozens of variants of one concept in an afternoon. Without a shared ID in the name, those variants can't be rolled back up to the idea that was actually being tested. Names also give agencies and in-house teams one vocabulary, so a handoff doesn't start with decoding someone else's shorthand.
The ad name template
Here's the template. It extends the pattern in our creative brief template, so a brief, its files, and its ads share one ID.
[TestID]_[Concept]_[Angle]_[Hook]_[Format]_[Ratio]_[Length]_[Creator]_[Version]_[Date]
For example, T047_DEMO_PROB_H2_VID_916_15s_UGC-JM_v1_20261026
# | Field | Example codes | What it records |
|---|---|---|---|
1 | Test ID |
| The row in your test sheet and the brief behind the ad |
2 | Concept |
| The idea being tested |
3 | Angle |
| The reason to buy the ad leads with |
4 | Hook |
| The opening, by type or by take |
5 | Format |
| Video, single image, or carousel |
6 | Ratio |
| 9:16, 4:5, or 1:1 |
7 | Length |
| Video length, zero-padded so it sorts |
8 | Creator |
| Who's on camera, as initials or a code |
9 | Version |
| A recut with the same fields |
10 | Launch date |
| YYYYMMDD, so names sort by date |
Underscores separate fields, and hyphens join words inside a field (UGC-JM). When a field doesn't apply, such as length on a static, fill its slot with NA instead of dropping it, or every field after it shifts a column.
Optional fields go at the end, after the date, so they don't shift the standard ones. Common ones are a CTA code (SHOP), a landing page (PDP, LP2), an offer (BNDL20), and a market (es-MX).
Campaign and ad set names
Keep creative detail out of the upper levels, and keep upper-level detail out of the ad name. Repeating the audience in every ad name is a common way names get long without getting more useful.
Campaign
US_PROSP_SALES_2026Q4(market, funnel stage, objective, period)Ad set
BROAD_ADVPLC_T047(audience, placements, test ID)Ad
T047_DEMO_PROB_H2_VID_916_15s_UGC-JM_v1_20261026
Build a code list
A convention won't work unless everyone uses the same codes. Keep a glossary tab in a shared sheet, with each code, a one-line definition, and the date it was added, and keep it short enough to fit on one screen. Eight to 10 angle codes are usually enough.
Hook codes can follow the 12 openers in our video ad hook formats guide, for example CALL (problem callout), Q (question), BA (before and after), TEST (testimonial), POV, and UNBOX. A hook code records the type only. If you're testing several takes of the same type, number them instead (H1, H2).
Creator codes should be initials or an internal code, never a full name. Flag AI presenters in the code (AI-MAYA) so you can compare them with human creators later.
Versions, iterations, and AI variants
Decide what counts as a new version before you launch, because it changes how results roll up. A new version (v2) is a recut where every field stays the same, such as new captions, a different music track, or a tighter trim. A new hook gets a new hook code instead, since the hook is the variable you're reading.
An iteration of a winner is a new test, so it gets a new test ID, and the test sheet logs which ID it came from ("T052 iterates T047"). AI variants of one asset keep the parent name and add a suffix to the version, such as v1-ai03, so all of them roll up to the parent.
Platform rules that shape a name
Platform limits are generous, so the real limit is how much of a name you can read in a report column. Put the fields you scan most often first.
Platform | Published name limit | Ad name in URL parameters |
|---|---|---|
Meta | 400 characters for ad sets (none published for campaigns or ads) |
|
TikTok | 512 characters for ads |
|
Google Ads | 256 for campaigns and ad groups | None, IDs only |
255 for ads | None in the standard list | |
Snapchat | 375 at every level |
|
200 bytes for campaign groups |
|
People don't see ad names in the ad itself. TikTok and Google both say the name is only for your reference. But once a name goes into a URL parameter, it shows up in the landing page address, so leave out anything you wouldn't want a customer to read.
Some characters break tracking, and you won't always notice until the report looks wrong.
Spaces become
%20in the URL.TikTok says everything after a
#in a URL is dropped.An
&ends a parameter, soPrice & Bootssplits into two values.UTM values are case sensitive, so
DemoandDEMOshow up as separate rows in analytics.Emoji and accented characters get percent-encoded.
That's why the safe set is letters, numbers, underscores, and hyphens.
Setting it up in Meta with name templates
Meta Ads Manager has a name template feature that builds names for you. You get one template per level (campaign, ad set, and ad) per ad account. Each template is a row of fields in the order you drag them into, with a field separator and an item separator you pick from a menu.
There are three kinds of field. Campaign fields fill in automatically from your settings, such as objective. Open text fields take whatever you type, which suits the test ID. Custom fields are dropdowns you build yourself, which is the best way to enforce your code list, since nobody can type an angle that isn't on it. Edits to a template only apply to new campaigns, ad sets, and ads.
Passing names into your analytics
Ad platforms export spend by name and ID, and your analytics sees UTM parameters. Passing names into the UTMs joins the two. On Meta, add this in the ad's URL parameters field.
utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}
On TikTok, the same pattern is utm_campaign=__CAMPAIGN_NAME__&utm_term=__AID_NAME__&utm_content=__CID_NAME__. Google Ads can't pass names through its ValueTrack parameters, only IDs such as {creative}, so match Google ads to your test sheet by ad ID.
One Meta rule decides when you name things. Its URL parameters page says name-based values are set to the name used when the ad was first published and can't change after that. Renaming a live ad changes what you see in Ads Manager but not what reaches your analytics, so a mistake means publishing a new ad, or fixing it in the test sheet against the ad ID.
When one ad holds many assets
Meta and TikTok now often put several images or videos in one ad and choose which to show. That breaks the "one ad, one creative" assumption a naming convention rests on.
Meta reports dynamic creative as one combined result across all variations and doesn't recommend it as a split test. When an ad carries several media files, Meta's Creative > Media breakdown shows results for each asset, where the feature is available. On TikTok's upgraded Smart+ campaigns, a creative's reporting name is its file name.
So it's worth naming the files too. Give each file the asset-level half of the ad name (test ID, concept, hook, ratio, length, creator, version), and name the ad for the concept. When a test needs a clean read on one variable, run one asset per ad instead. Our UGC creator brief template recommends adding a file-naming rule to the brief so creators deliver files named this way.
What to leave out of a name
Status words such as WINNER, FINAL, or SCALE. They're only true after launch, and Meta's URL values never update to show them.
Full names and personal details. Names can appear in landing page URLs.
Long audience descriptions. The ad set already carries them.
Ad copy. Use a hook code, not the first line of the script.
Anything the platform reports as a column, such as objective or placement.
Keeping it clean
Give the glossary one owner, and add new codes with a date instead of inventing them in Ads Manager. Once a month, filter the ad names created in the last 30 days for anything that doesn't match the pattern and fix the source before the next launch. Don't rename live ads to tidy up. Correct the record in the test sheet, keyed on the ad ID.
Frequently asked questions
What is a good naming convention for ad creatives?
Put a test ID first, then fixed fields for concept, angle, hook, format, ratio, length, creator, version, and launch date, separated by underscores. For example, T047_DEMO_PROB_H2_VID_916_15s_UGC-JM_v1_20261026.
Does Meta have a naming template feature?
Yes. Meta Ads Manager's name templates build campaign, ad set, and ad names from campaign fields that fill in automatically, open text fields, and custom dropdowns, with one template per level per ad account.
If I rename a Meta ad, does the UTM change?
No. Meta sets name-based URL parameters to the name used when the ad was first published, and they can't be changed afterward. To change the value, publish a new ad.
How long can an ad name be?
TikTok allows 512 characters for ad names, Snapchat 375, and Pinterest 255. Meta caps ad set names at 400 and doesn't publish a limit for campaign or ad names. Google Ads allows 256 for campaigns and ad groups.
Which separator should I use in ad names?
Underscores between fields and hyphens inside a field. Avoid spaces, &, #, %, +, and | in any name you pass into a URL.
Can Google Ads pass the ad name to analytics?
Not through ValueTrack. Google's tracking parameters pass IDs, such as {creative} for the ad ID, so you match Google ads to your test sheet by ID.
Written by
Claire Whitfield
Claire writes about AI image and video tools and judges them on output quality. Her first question for any tool is whether the product still looks right on the 10th generation.
Related articles


