Naming conventions 4 min read
Meta Ad Set Names: Examples That Survive Reporting
Concrete ad set naming examples for Meta Ads, what each variable buys you in reporting, and the mistakes that make an export unreadable.
Contents
- What is the rule for naming an ad set?
- Which naming pattern holds up over time?
- What does each variable in the name buy you?
- What do ad set names look like by account type?
- Which naming mistakes cost the most?
- How do you fix an account that already drifted?
- What does an ad set naming convention not solve?
An ad set name is not a label. It is the only key your reporting has to group results by audience or by angle. Get it wrong and the export is a column of strings that nobody can pivot.
Most naming guides give you a template. The useful part is the rule behind it, so here is both.
What is the rule for naming an ad set?
Each level of the hierarchy names what that level decides. Nothing more.
The campaign decides the objective and the market. The ad set decides who sees the ad and where. The ad decides what they see. An ad set name that repeats the objective is spending characters on a variable the campaign name already carries, and pushing the useful part out of view in an interface that truncates.
This is the convention used across the rest of this site, set out in full in the Meta Ads naming convention guide, and it is worth stating here so the three levels sit together:
| Level | Pattern | Example |
|---|---|---|
| Campaign | [Objective]_[Market]_[Month] | Conversion_US_March2026 |
| Ad Set | [Audience]_[Concept]_[Placement] | Broad_UGC-Testimonial_AllPlacements |
| Ad | [Concept]_[Iteration]_[Format]_[Hook] | UGC-Testimonial_V3_Story_PriceSlash |
Which naming pattern holds up over time?
Broad-25-45F_SkincareRoutine_AllPlacements
Lookalike-Purchasers-1_SkincareRoutine_Feed-Story
Retargeting-14d_UsVsThem_AllPlacements
Interest-Skincare_BeforeAfter_Feed
Read left to right: audience, concept, placement.
Underscores separate the variables. Hyphens join words inside a variable. That one rule is what lets any tool, spreadsheet or script split the name back into three clean columns.

What does each variable in the name buy you?
| Variable | The question it answers |
|---|---|
| Audience | Broad against lookalike against retargeting, at equal creative |
| Concept | Which angle works, independent of the audience it ran on |
| Placement | Whether an angle carries on story as well as it does in feed |
Drop one and the matching question becomes unanswerable in an export. That is the entire test for whether a variable belongs in the name: name the question it lets you answer, and if you cannot, leave it out.
What do ad set names look like by account type?
E-commerce, one concept across three audiences:
Broad-25-45F_SkincareRoutine_AllPlacements
Lookalike-Purchasers-1_SkincareRoutine_AllPlacements
Retargeting-14d_SkincareRoutine_AllPlacements
This is the shape that lets you say an angle works on cold traffic but not on retargeting, which is genuinely useful and impossible to see when the audience is not in the name.
Lead generation, where the destination changes what the numbers mean:
Broad-30-55_ProductDemo_Form
Broad-30-55_ProductDemo_Site
Instant form leads and website leads do not produce comparable costs per result. Here the destination takes the placement slot, because it is the variable you actually filter by.
Agency accounts, where the client prefix goes on the campaign rather than the ad set:
ClientA_Conversion_US_March2026 campaign
Broad-25-45F_SkincareRoutine_Feed ad set inside it
Putting the client on every ad set repeats it dozens of times for no filtering gain, since ad sets are always read under their campaign. The campaign side is covered in campaign name examples, and the account layout behind it in agency account structure.
Which naming mistakes cost the most?
Dates inside the name. 03-03-26_Skincare looks harmless until a reporting tool reads 26 as a concept identifier and groups two unrelated ad sets together. Meta already stores the creation date and shows it as a sortable column.
The same concept spelled three ways. SkincareRoutine, skincare_routine and Skincare-Routine are three separate concepts to every aggregate that has ever been computed. This is the single most common cause of numbers that are quietly wrong rather than obviously broken.
Describing the creative instead of the targeting. The hook, the format and the iteration belong to the ad name, which usually starts from the creative file name. The ad set name is about who sees it.
Free text at the end. ..._SkincareRoutine_test2_NEW_final is where conventions go to die. If it is worth recording, it is a variable with a position. If it is not, it does not belong in the name.
How do you fix an account that already drifted?
You cannot fully repair this retroactively, and it is worth being clear why. Meta lets you rename ad sets, and new exports will carry the new names. Every export you already pulled keeps the old strings, so any historical comparison spans two conventions.
The pragmatic approach is to draw a line rather than rewrite history. Apply the convention to everything created from a fixed date, leave what exists, and note the cutover date somewhere your future self will find it.
What does an ad set naming convention not solve?
A good name makes results readable. It does not make them valid. Thirty ad sets sharing one budget still concentrate delivery on two or three, and no naming convention will tell you that the other twenty-seven never really ran.
Naming also does not survive people. A convention holds until someone types a name by hand at eleven at night, and it holds again only if the person who notices fixes it the next morning.