Six months in, every messy account looks the same: 47 campaigns named "Test 3", "Final v2", "ACTUAL FINAL", and "asdf." You can't filter, you can't compare, and you can't hand the account to anyone else without a 90-minute briefing. A naming convention takes 15 minutes to design and saves you forever.
The right hierarchy
Every account has the same structure under the hood:
- Account → your business or client.
- Campaign → one goal, one budget, one bidding strategy.
- Ad group → one theme of keywords, one set of ads.
- Ads / keywords → the actual content the user sees.
Campaign-level structure
One campaign per: { platform · network · audience · funnel stage }. So:
- "Google · Search · US · Brand"
- "Google · Search · US · Non-brand · Bottom"
- "Google · PMax · US · All"
- "Meta · Feed · US · Cold"
- "Meta · Feed · US · Retargeting"
- "Microsoft · Search · US · Non-brand"
- "Nextdoor · Local · 78201 · All"
Ad group naming
Ad groups represent themes, not products. Use the keyword theme as the name.
- "Emergency plumbing"
- "Drain cleaning"
- "Water heater repair"
- "Slab leak"
Avoid: "Group 1", "Test", "New", "Updated v2."
The four sins of account structure
1. One campaign for everything
A "main campaign" with 30 ad groups, mixed brand and non-brand, multiple audiences. You can never optimize budget — every dollar competes for every keyword. Always split.
2. Too many campaigns
The opposite extreme: 50 campaigns, each with one keyword. Budget too thin per campaign, none of them get enough conversions for auto-bidding to learn. Aim for ~5-15 campaigns per major channel for most businesses.
3. Mixing brand and non-brand
Brand keywords inflate CPA and conversion rate. Always separate. Full guide.
4. Inheriting client account chaos
You took on a client. Their account has 87 campaigns, 14 of which are running, 73 paused. Don't optimize what's there — duplicate the running ones into a clean structure with new naming, then pause the originals after 14 days of overlap.
Naming convention examples
For an in-house team
{platform} | {network} | {audience} | {funnel}
Examples: Google | Search | US | Bottom, Meta | Feed | Lookalike | TOFU
For an agency managing many clients
{client-code} | {platform} | {network} | {audience} | {funnel}
Examples: ACME | Google | Search | US | Brand, BETA | Meta | Reels | Retarget
Tagging campaigns with labels
Google Ads, Meta, and Microsoft all support labels. Use them for things that don't fit in the name:
- Quarter / month tag (Q2-2026)
- Promotion tag (BlackFriday)
- Test tag (Test-Bidding-2026-04)
- Owner tag (PM:Sarah)
Filter by label in reports. Way faster than regex on campaign names.
UTM convention should match
Map your campaign name to UTMs:
- utm_source = platform (google, meta, microsoft, nextdoor)
- utm_medium = network (cpc, social, display)
- utm_campaign = the audience/funnel slug (us-non-brand-bottom)
Now your CRM filters cleanly by source, your ad reports filter cleanly by audience, and the two are joinable.