Naming Your Ads, Not Just Your Links
Extending taxonomy governance to ad platforms for cross-platform analysis.
On this page
You’ve built a taxonomy for your UTM parameters: clean source values, governed mediums, structured campaign names. Then you open Google Ads.
Spring Sale - NEW. spring_sale_v2_FINAL. test_campaign_dont_delete.
Your ad groups are worse, and your ads are named whatever the person creating them typed at 4pm on a Friday.
The naming principles in this guide don’t stop at URLs. The same taxonomy structures (Structured, Key-Value, controlled vocabularies) work just as well on the campaigns, ad groups, and ads you create inside ad platforms. For teams spending real money on paid media, this may be where governed naming delivers the most value. This page extends your taxonomy to all three levels of every platform you buy ads on, so cross-platform questions become warehouse queries.
Why Ad Platform Naming Matters
URL parameters are one application of your taxonomy. The same naming principles should govern every marketing asset: ad creatives, ad groups and ad sets, audiences, landing pages, email templates, offline materials. A unified taxonomy across those assets is what makes cross-platform data joins reliable. Without it, linking performance data across platforms is manual, error-prone, and often flatly impossible.
The extension with the biggest payoff is ad platform naming: the campaigns, ad groups, and ads inside Google Ads, Meta, TikTok, LinkedIn, and the rest. Most paid media spend lives there, and inconsistent naming there causes the most expensive blind spots.
The Cross-Platform Naming Problem
Every major ad platform organizes ads in a three-level hierarchy. The platforms just refuse to agree on what to call the levels:
| Level | Google Ads | Meta (Facebook/Instagram) | TikTok | X/Twitter | |
|---|---|---|---|---|---|
| Top | Campaign | Campaign | Campaign | Campaign | Campaign |
| Middle | Ad Group | Ad Set | Ad Group | Ad Set | Ad Group |
| Bottom | Ad | Ad | Ad | Ad | Ad |
Same concept, different labels. The middle level, whatever a platform calls it, is where targeting is defined. LinkedIn was the classic trap here for years, calling that level a “Campaign” inside “Campaign Groups,” until an October 2025 renaming brought its labels in line with everyone else. The old names still live in LinkedIn’s Marketing API, so warehouse exports built on the API can speak “campaign group” while the person in Campaign Manager reads “campaign.” Teams that don’t pin this mapping down apply naming conventions inconsistently across platforms, and cross-platform analysis in the data warehouse becomes impossible.
Structured Ad Naming for Cross-Platform Analysis
The taxonomy approaches from Chapter 6 (Structured, Key-Value) aren’t just for utm_campaign values. Apply them to the names inside ad platforms, and every name becomes something a warehouse can parse: extract dimensions from any level, on any platform, and compare across all of them.
Governed naming, level by level:
Campaign level: encode strategic dimensions:
facebook-paid_social-summer_sale-shoes-us-2025_q2
[platform]-[channel]-[initiative]-[product]-[region]-[date]
Ad group / ad set level: encode targeting dimensions:
interest_running-women_25to44-prospecting
[targeting_type]-[audience]-[strategy]
Ad level: encode creative dimensions:
video-15s-testimonial-shoes-lifestyle
[format]-[duration]-[creative_type]-[product]-[theme]
With this structure, a warehouse query can parse any level and answer the cross-platform questions: “Do video ads outperform static across all platforms, or only on Meta?” “Which product line has the best ROAS regardless of channel?” “Are lookalike audiences more efficient than interest-based targeting, and does that hold across Facebook, TikTok, and Google?” None of these come out of a single platform’s dashboard. All of them come out of a warehouse where names follow one consistent, parseable taxonomy.
Those three levels are a template in the Hub. The builder below governs platform names rather than tagged URLs, which is the whole point of this chapter: run a campaign, an ad set, and an ad through it, and the same dimensions carry from the top level down to the creative.
Why Embedding Platform in Names Feels Redundant but Isn’t
The campaign name example above includes facebook-paid_social: the same information that utm_source and utm_medium already carry. In the context of GA4 reports, this is redundant. The redundancy is intentional. Understand why before you optimize it away.
UTM parameters and ad platform data serve different systems and travel through different pipelines:
Stream 1: Ad platform exports
- Campaign name
- Ad group name
- Ad name
- Spend, impressions, clicks
Stream 2: Web analytics (GA4)
- utm_source
- utm_medium
- utm_campaign
- Sessions, conversions, revenue
Export data from Meta Ads Manager or Google Ads into a warehouse and what arrives is campaign names, ad group names, ad names, spend, impressions, and clicks. Not UTM parameters. The UTM data lives in your analytics platform. These are two separate data streams, and connecting them requires a join key.
If the campaign name contains the platform (facebook-paid_social-summer_sale-shoes-us-2025_q2), any single row in your warehouse table is self-contained: you know what platform it ran on, what channel it used, and what initiative it supported, without joining against a separate metadata table. If the campaign name is just summer_sale-shoes-us-2025_q2, you need another column or another table to tell you which platform the row came from, and that metadata doesn’t always travel cleanly through ETL pipelines, CSV exports, or BI tool imports.
Self-contained names are a defensive design choice. The minor redundancy in GA4 is the small price you pay for every row being independently interpretable everywhere else.
Practical Considerations
- Platform character limits: Google Ads caps campaign and ad group names at 256 characters; LinkedIn caps ad names at 255; Meta publishes no ceiling at all. Design your structured naming to fit the most restrictive platform you use.
- Ad naming is a manual discipline. Unlike UTMs, where a builder tool can enforce conventions, most ad platforms don’t support templated or governed ad naming. That makes governance (approved values, naming guides, review before launch) more important here, not less.
- Start at the campaign level, extend downward. Most teams already have some campaign naming convention. Ad group and ad-level naming are where governance usually breaks down first. Prioritize in order: campaign → ad group → ad.
- Use the same taxonomy structures. If your UTM values use the Structured approach with the two-delimiter convention (underscores within segments, hyphens between; see Chapter 6), use the identical convention for ad platform naming. One parsing rule works everywhere.
Campaign Name as the Unit of Coordination
In larger enterprises, the taxonomy governs more than link tagging. It governs how campaigns are created and rolled out across the organization.
The common pattern: a central marketing strategy or campaign operations team creates the campaign name using the structured taxonomy. That name encodes the key dimensions (region, product, objective, quarter) into a single governed string, e.g., us-enterprise-awareness-2025_q2 or geo:us-prd:enterprise-obj:awareness-q:q2. This becomes the canonical campaign identifier.
That campaign name is then distributed to execution teams: the email team, the paid social team, the regional offices, the agency partners. They use it as their utm_campaign value, and often as their ad platform campaign name, email subject line tag, and creative file prefix. The execution teams don’t invent campaign names; they receive them.
One team defines, many teams execute. That separation of concerns is how taxonomy governance works at scale. It ensures that when the email team in EMEA and the paid social team in North America both run the same campaign, the data connects. Without it, you get spring_sale, SpringSale_EMEA, spring_sale_NA_social, and Q2-promo all representing the same initiative, and your cross-channel reporting falls apart.
The workflow typically looks like:
| Strategy / Campaign Ops | Execution Teams |
|---|---|
| Define campaign dimensions (region, product, objective) | Email team uses campaign name in ESP + UTM links |
| Build structured campaign name per taxonomy rules | Paid social team uses it as ad platform campaign name |
| Publish to shared system (platform, spreadsheet, or campaign brief) | Regional offices use it in their local channels |
| Agency partners use it in client work |
All of this happens before any URL is tagged. The campaign name is the unit of coordination. UTM parameters are just one of the places it ends up.
If you remember one thing: Ad platform exports land in your warehouse without UTMs attached, so the names themselves have to carry your taxonomy. Govern campaign, ad group, and ad names with the same structures you use for links, and cross-platform analysis becomes a query instead of a project.