Meta Ads Naming Conventions: A Simple System for Small DTC Accounts
If you cannot tell what an ad is from its name, you cannot tell what to keep. Here is a short naming system for campaigns, ad sets, and ads.
Meta does not require a naming format. The delivery system reads your budget, creative, audience, and optimization event. The name is for humans. Six months later, "Video 3 final FINAL" tells you nothing about the product, the angle, or whether the ad was a test or a scale push.
A small DTC account can stay readable with one pattern used the same way on every campaign, ad set, and ad. This guide gives you that pattern, shows what to encode and what to leave out, and covers how names should line up with UTM parameters. It is a convention you choose, not a Meta setting.
If you are still learning the account, start with Meta ads for beginners. If you are deciding CBO versus ABO, read CBO vs ABO before you bake budget structure into the name.
Why names break accounts
Three failure modes show up in almost every messy account.
You cannot compare tests. Two ads both called "UGC hook" might be different products, different offers, or the same video with a new caption. When CPA moves, you do not know which change caused it.
Reporting exports become useless. Ads Manager breakdowns and spreadsheet pulls use the name as the label. If the name has no product and no angle, every weekly review starts with someone opening the ad preview to remember what it was.
UTMs drift from the ad. The ad is "Spring sale static" and the UTM says utm_content=ugc_founder. Shopify and Ads Manager then disagree for a boring reason: the labels do not match. Our guide to why Shopify and Ads Manager numbers do not match covers the bigger attribution gaps. Naming will not fix attribution. It will stop you from adding a second, self-inflicted gap.
Names do not change delivery. Renaming an ad does not reset learning by itself. Changing the audience, the optimization event, the creative, or the budget enough to re-enter learning does. Keep those ideas separate. The learning phase guide is about delivery, not labels.
One pattern for all three levels
Use the same field order everywhere. Separate fields with underscores. Do not use spaces. Do not use emoji. Keep it lowercase so exports sort cleanly.
Campaign: meta_objective_funnel_product
Ad set: audience_geo_optimization
Ad: angle_format_hook_version
A hypothetical account, written as an example of the convention, not as a recommended structure for every brand:
| Level | Example name | What a human can read |
|---|---|---|
| Campaign | meta_sales_prospecting_serum | Sales objective, cold traffic, one hero product |
| Ad set | broad_us_purchase | Broad targeting, United States, purchase optimization |
| Ad | texture_static_3sec_v2 | Texture angle, static image, 3-second idea, second version |
Read the full path as one sentence: Meta sales prospecting for the serum, broad US, optimized for purchase, texture static, version 2. If you cannot read the path out loud, the name is too clever.
Campaign names
Encode only what is true for every ad set inside the campaign.
- Platform.
metais enough unless you also run a separate Advantage+ shopping campaign that you want obvious in exports. Then usemeta_ascor spell itmeta_advantage_plus. Pick one token and document it. - Objective.
sales,traffic,leads. Match the objective you actually selected. - Funnel job.
prospecting,retargeting,retention. If a campaign mixes jobs, the name should saymixedso nobody treats the CPA as a prospecting CPA. - Product or offer. The hero SKU or the offer family.
serum,bundle_starter,giftcard. Do not list five products. If the campaign holds the whole catalog, saycatalog.
Dates belong on tests you plan to end, not on evergreen campaigns. 2026q1 on a campaign you will still run in June becomes a lie. Put the launch date on the ad version instead.
Ad set names
Encode the thing you might change without changing the creative.
- Audience.
broad,ll1_purchasers,engagers_30d,exclude_customers. Write the exclusion in the name if the exclusion is the point of the ad set. Our guide to audience exclusions covers when to use them. - Geo.
us,us_ca,uk. Skip geo if the whole account is one country and you have written that down in a one-page account note. - Optimization.
purchase,value,atc,landing_view. This saves you from reading settings during a review.
Leave bid strategy out of the name unless you are actively testing bid types. A name full of costcap_27 goes stale the hour you edit the cap. If you do test bids, read bid strategies and put the strategy token only on the ad sets in that test.
Ad names
Encode the creative hypothesis.
- Angle. The message, not the mood.
ingrediantsis a typo.ingredient,texture,before_after,founder,review,offer_shipare angles. Keep a short list your team agrees on. The ad angle generator can propose options. Your name list should stay shorter than the brainstorm. - Format.
static,video,carousel,catalog. Format changes how you read thumbstop and hold rate. See creative metrics. - Hook or first frame. A two-word token is enough:
leak,3sec_pour,review_line. - Version.
v1,v2. Increment when the file changes. Do not reusev1for a new cut.
The offer can live in the ad name when the offer is the only difference: texture_static_shipfree_v1 versus texture_static_noship_v1. If every ad in the campaign has the same offer, do not repeat it on every row.
What not to put in the name
Internal jokes and file names from a designer. sarah_cut2_USE_THIS means nothing in April.
Full sentences. Names get truncated in Ads Manager columns. Put the sentence in the primary text, not the name.
Every targeting detail. Age, gender, placement, and interest stacks change. If you use Advantage+ placements, a name that says feed_only is a false record. Placement questions belong in breakdowns, which you can only trust if the name tells you which ad you are looking at. The placements guide is the reference for the setting, not for the label.
Promises. Do not name an ad winner or scale_this before it has earned the role. Names that predict an outcome bias the review.
Personal data. No customer names, no email addresses, no phone numbers. A custom audience can be named by the rule (purchasers_180d), never by a person.
Testing names versus scaling names
Keep tests and scale ads in different campaigns so the name and the budget job agree.
A test campaign might be meta_sales_prospecting_serum_test. Ads inside it use the angle and version tokens. When you move a creative into a scaling campaign, give it a new ad name that keeps the angle and adds scale: texture_static_3sec_v2_scale. Do not edit the test ad into the scale campaign and leave the old name. The history of the test stays in the test campaign. The scale ad is a new row with its own spend.
Our guide to creative testing on Meta covers spend thresholds. Naming does not replace those rules. It makes the rules possible to apply, because you can see which version spent.
When you refresh a tired ad, increment the version and note the date in a changelog, not only in the name. A simple sheet with columns for ad name, launch date, angle, and what you changed is enough. The creative refresh cadence guide covers how often to do the work. The sheet covers what you did.
Line the name up with UTMs
Pick the ad name as the source of truth for utm_content. If the ad is texture_static_3sec_v2, the content parameter is the same string. Then a Shopify order, a GA4 session, and the Ads Manager row share one key.
Suggested mapping, again a convention:
| UTM | Source |
|---|---|
| utm_source | meta or facebook / instagram if you split them |
| utm_medium | paid_social |
| utm_campaign | The campaign name |
| utm_content | The ad name |
| utm_term | Optional: the ad set name |
Build the links with the UTM builder so you do not hand-type a broken parameter. The UTM parameters guide explains what each field is for. If you use Meta's URL parameters at the ad set level, check that they do not overwrite the content token with a different pattern.
Catalog ads and dynamic creative make one-to-one names harder because the delivered combination may not match a single file. Name the ad for the template and the product set (catalog_serum_dp), and rely on product ID reporting for the SKU. Do not pretend a dynamic ad is one static concept. See catalog ads and dynamic creative.
How to clean an account that is already messy
Do not rename 200 ads in one afternoon and call it a strategy. Old names are the labels on historical rows. Mass renaming makes last quarter's exports impossible to match to this quarter's.
Use this sequence:
- Write the pattern on one page. Include the allowed tokens for angle, format, and funnel.
- Apply it to every new campaign from today forward.
- When you touch an old test, rename only the live ads you are still spending on, and record the old name in the changelog.
- Pause duplicates that exist only because nobody could tell them apart.
- Once a month, export names and look for spaces, mixed caps, and ads missing a product token. Fix the live ones.
Advantage+ sales campaigns give you fewer knobs and more bundled creative. The name still matters. Call the campaign what it is, and name each creative asset with the angle and version so the breakdown by creative is readable. The Advantage+ guide covers the campaign type.
A 30-minute setup
- List your live products and offers. Assign each a short token.
- List your angles. Cap the list at the messages you will actually test this month.
- Create one prospecting campaign and one retargeting campaign using the pattern, even if you only put one ad in each.
- Paste the same tokens into UTMs.
- Put the one-page legend where the media buyer and the founder can both see it.
If two people buy media, the legend is the whole system. A clever pattern that lives in one person's head is not a convention.
How SecondWin helps
SecondWin does not rename your Meta campaigns or manage Meta budgets. It uses the public Meta Ad Library to study the longest-running ads in your niche, then turns those angles into original ChatGPT ads: copy and AI images. You preview each card in a ChatGPT mockup. Launch goes through the OpenAI Ads API in your own OpenAI ad account, and OpenAI bills the media spend to you.
The naming habit still helps. When SecondWin pulls angles from ads that have stayed live, a clean account of your own makes it obvious which of those angles you have already tested. Run a free analysis of your site. Plans start at $99 a month, month to month, on the pricing page. SecondWin is independent and is not affiliated with OpenAI. ChatGPT is a trademark of OpenAI.
FAQ
Does Meta care what I name my campaigns?
No. Names are for your team, your exports, and your UTMs. Delivery depends on settings, creative, and the optimization event. A clear name does not improve auction rank. It makes your decisions faster.
Will renaming an ad reset the learning phase?
Renaming by itself does not change the audience, the creative file, or the optimization event. Those edits can affect learning. If you only change the name string, treat delivery as unchanged and confirm in Ads Manager rather than assuming a reset. See the learning phase guide.
Should prospecting and retargeting share a campaign name?
Give them different campaign names and, usually, different campaigns. A blended CPA hides whether new customers are getting more expensive. The name should say prospecting or retargeting so a spreadsheet sort does the first cut for you.
How short should tokens be?
Short enough to read in a truncated column, long enough that a new teammate can guess the meaning. texture is better than tx. 3sec_pour is better than h7. Write the legend down so the short form stays defined.
What if I use Advantage+ and have less structure?
Still name the campaign for the product and the job, and name each creative for the angle, format, and version. You will have fewer ad sets. The creative name does more of the work when you read results by asset.