The Campaign Naming Convention Guide

Jake Hodges · August 28, 2026

A campaign name looks like a small thing. It is not. It is the join key your entire reporting stack depends on.

UTMs inherit it. Dashboards filter on it. Pivot tables group by it. Blended reports across Google, Meta, and TikTok line up on it. When the name is sloppy, every one of those breaks quietly, and attribution goes with it.

This guide covers how naming breaks attribution, what a durable convention looks like, how to enforce it, and how to migrate old accounts without losing history.

Why naming breaks attribution

Attribution is mostly a matching problem. A click happens on a platform, a conversion happens on your site, and something has to connect the two in a report a human can read. Names are that something.

Here is how it falls apart in practice.

Inconsistent tokens silently drop rows. One buyer writes "Brand", another writes "brand", a third writes "BR". Your dashboard filters for campaigns containing "Brand" and misses a third of spend. Nobody notices, because the report still renders. It is just wrong.

Cross-platform reports have no common grammar. Google names read one way, Meta names another, TikTok a third. Blending them means hand-mapping every campaign into a spreadsheet, every month, forever. That manual step is where errors live.

Names carry no meaning. A campaign called "Summer Push v2 FINAL" tells you nothing about channel, audience, geo, or objective. Six months later, not even the person who launched it remembers. Every analysis starts with archaeology.

Handoffs multiply the damage. Every new hire or vendor adds their own dialect. Two years of turnover produces an account where no single filter can find all the brand campaigns. At that point, "what is brand search actually driving" becomes a research project instead of a saved report.

The anatomy of a convention that survives

Treat every campaign name as a row of structured data. Fixed tokens, fixed order, one delimiter.

Pick one delimiter and never change it

We recommend the underscore. It survives URLs, spreadsheets, and regex without escaping. Whatever you pick, reserve it for separating tokens and nowhere else. Inside a token, use a hyphen or nothing.

The tokens, in order

  1. Platform. A short fixed code: GGL, META, TT. Yes, the platform is obvious inside its own interface. It is not obvious in a blended dashboard or a data warehouse export.

  2. Campaign type or objective. SRCH, PMAX, SHOP, PROS, RTG, LEAD. This is what lets you compare like with like across platforms, prospecting against prospecting instead of everything against everything.

  3. Brand or non-brand. BR or NB. This token matters more than any other for attribution. Brand search converts people who already knew you, and mixing it into blended performance flatters every number. If you can split only one thing, split this.

  4. Geo. US, TX, DFW, or ALL. Multi-location brands live and die on this token. When every location's campaigns carry a geo code, per-market reporting is a filter, not a project.

  5. Date token. The launch year and month, like 2026-08. This distinguishes a relaunch from a continuation, ties the campaign back to your change log, and makes "what changed in March" answerable.

  6. Descriptor. A short free-text slug at the end for the human touch: water-heaters, spring-sale. Free text goes last so it can never corrupt the structured tokens in front of it.

Put together: GGL_SRCH_NB_US_2026-08_water-heaters.

Three rules that keep it parseable

  • Every token appears in every name. No skipping. If geo does not apply, write ALL. Parsers and pivot tables need the same number of columns in every row.
  • Fixed vocabulary. The allowed values for each token live in a written dictionary. If a buyer needs a new value, they add it to the dictionary first, then use it.
  • One casing rule. We use upper case for tokens and lower case for the descriptor. The specific choice matters less than having exactly one.

Write the whole spec on one page. Token order, allowed values, delimiter, casing. If the spec needs more than a page, it will not get followed.

Enforcement, because conventions decay

A convention without enforcement lasts about one hire. Plan for decay from day one.

Make the right name the easy name. Nobody should build names by hand from a spec. Give the team a form that outputs a conforming name from dropdowns. We built a free one you can use today at our campaign name generator. Pick your tokens, copy the name, done.

Audit on a schedule. A simple script or scheduled query can check every active campaign name against the pattern and flag violations weekly. We wire this into client reporting as its own tab, so a non-conforming name shows up in front of everyone within days, not quarters. This is the kind of self-checking plumbing we build in analytics and reporting systems.

Gate at launch. Add the name check to your launch checklist. No campaign goes live without a conforming name. Catching it before launch costs seconds. Catching it after a month of spend costs a migration.

Give it an owner. One person approves dictionary changes and resolves disputes. Shared ownership of a standard means no ownership.

Migrating without losing history

Most teams discover their naming problem in an account with years of history, and the fear of breaking that history keeps them from fixing anything. The fear is mostly misplaced.

On the major platforms, renaming a campaign does not reset it. The campaign ID stays the same, delivery continues, and platform-side history stays attached. What breaks is anything downstream that matched on the old name. So the migration is really a reporting migration.

Do it in this order.

  1. Export everything first. Pull every campaign name, active and paused, with its ID and platform. This snapshot is your safety net.

  2. Build a mapping table. Old name, new name, campaign ID, date changed. Keep this table permanently. It is the translation layer that lets you report across the changeover.

  3. Rename in place. Do not recreate. Pausing a campaign and launching a fresh copy under the new name resets platform learning and splits your history in two. Renaming keeps both intact.

  4. Move reporting joins to IDs where you can. Campaign IDs never change. Where your dashboards must join on names, point historical rows through the mapping table and current rows at the new convention.

  5. Update UTMs at the same time. Where a platform supports dynamic value insertion in tracking templates, use it, and future renames stop breaking tags at all.

  6. Leave dead campaigns alone. Renaming paused historical campaigns adds risk and no value. Map them in the table instead.

  7. Annotate the changeover date in your analytics platform and your change log, so anyone reading a trend line knows why the labels shift.

The name is the system showing through

Naming is not busywork. It is the smallest visible piece of the operational layer that paid media runs on, and across $100M+ in managed spend, it is one of the first things we check when numbers do not add up. If the names are chaos, the reporting built on them is chaos with a nicer font.

Our Performance Audit looks at naming, tracking, account structure, and reporting together, and hands you a dollar-weighted fix list you keep whether or not we do the work. If your attribution feels shaky and you suspect the plumbing, that is the place to begin.

Start with a Diagnostic Call

The operational letter

One useful idea, when we have one.

No schedule, no filler. When we write something worth your inbox, you get it. Unsubscribe any time.

Want this handled instead of read about?