Google Ads

Set up a campaign naming convention

Name your Google Ads campaigns with one consistent, parseable pattern so Buron can split your reporting by stage, audience, offer, geo, and language.

Your campaign name is the one string that travels across your whole stack: Google Ads, your UTMs, GA4, and your CRM. It's the join key that ties spend to sessions to closed deals, and it's the cheapest thing in the system to get right. Buron reads it too, so a name a machine can parse is the difference between reporting that segments itself and reporting you re-key by hand.

This guide gives you a convention to copy, shows where each dimension belongs, and explains how Buron parses your names. The examples use a fictional product, Acme; swap in your own brand, competitors, and markets.

Why the campaign name matters

A campaign name isn't a label. It's the taxonomy that decides whether your data can join up later. Encode every reporting dimension in one consistent string and each of these becomes a filter instead of a project:

  • You can join your data sources. The name, and the click IDs alongside it, is what stitches Google Ads spend to GA4 sessions to closed deals in your CRM. Inconsistent names mean no clean join.
  • You can segment your reports. If the name encodes market, stage, audience, and offer, every report you'll ever want, by country or by campaign type, is already a filter.
  • Buron can read and act on it. Buron parses the campaign name to split branded from non-branded traffic, group by country, and surface findings in your audit. A consistent name is what lets the Agent work your account without stopping to guess.

Get it wrong and you pay twice: now, because you can't tell which campaigns make money, and later, because you can't relabel the past. A year of Brand campaign (new) and test FINAL is a year of history no analysis can use.

The convention: eight dimensions in a fixed order

Preserve eight reporting dimensions in the campaign name, joined by underscores, in a fixed order:

Platform_Channel_Stage_Audience_Offer_Geo_Language_Date
FieldMeaningExample values
PlatformBuying platformGOOGLE, META, MICROSOFT, LINKEDIN, TIKTOK
ChannelMedia channel or campaign typeSEARCH, SOCIAL, DISPLAY, VIDEO, PMAX
StageFunnel stage or intentBRAND, AWARE, DEMAND, RETARGET
AudienceWho or which intent groupDEVELOPERS, STARTUPS, ENTERPRISE, COMPETITOR
OfferTopic, competitor, or value propACME, ANALYTICS, DASHBOARDS, RIVALCO
GeoMarket targetedUS, DE, GB, FR
LanguageAd and landing-page languageEN, DE, FR
DateLaunch or version period2026Q3, 2026Q4, V01

A few campaign names built this way:

GOOGLE_SEARCH_BRAND_DEVELOPERS_ACME_US_EN_2026Q3
GOOGLE_SEARCH_DEMAND_COMPETITOR_RIVALCO_US_EN_2026Q3
GOOGLE_SEARCH_DEMAND_STARTUPS_ANALYTICS_US_EN_2026Q3
GOOGLE_SEARCH_DEMAND_STARTUPS_ANALYTICS_DE_DE_2026Q3

You can read every one of those without a legend. That's the test.

Include Platform and Channel from day one, even on a Google-only, single-country account. A name that opens with GOOGLE_SEARCH_ looks redundant until the day you launch Meta or a second market and want one clean report across all of it, without renaming anything.

Put each dimension at the right level

The most common mistake is cramming everything into the campaign name. Spread the detail across the three levels Google Ads already gives you.

LevelFormatHolds
CampaignPlatform_Channel_Stage_Audience_Offer_Geo_Language_DateManagement dimensions
Ad groupAudience_Offer_MatchTypeKeyword, audience, or match-type theme
AdOffer_CreativeVariant_Version_DateCreative variant and version

One campaign across its three levels:

Campaign:  GOOGLE_SEARCH_DEMAND_COMPETITOR_RIVALCO_US_EN_2026Q3
Ad group:  COMPETITOR_RIVALCO_EXACT
Ad:        RIVALCO_LOWER_PRICE_V01_2026Q3

Nothing is lost. Full detail is preserved for reporting, just filed at the level where it belongs, which keeps the campaign name readable.

Follow the same hygiene rules everywhere

Apply the same rules across campaigns, ad groups, ads, and UTM values:

  • Uppercase inside the ad platforms, lowercase in UTMs.
  • Underscore (_) as the only field delimiter. No spaces, ever.
  • No special characters. & % / , and similar break URLs and exports.
  • A hyphen (-) is fine inside a single value, so LOWER-PRICE stays one field.
  • Consistent field order and consistent casing, every time.
  • One market and one language per campaign. Never mix them inside one campaign, because you can't un-mix them after the fact.
  • 150 characters maximum.

You can abbreviate, but only when the meaning stays obvious: AWARE for awareness, RETARGET for retargeting. Never abbreviate load-bearing business values. Brand names, competitor names, and offer themes stay spelled out. A name nobody can read defeats the point.

How Buron reads your names

Buron parses the campaign name by position. It splits the name on the delimiter, then maps each part to a reporting dimension by its place in the order. The default pattern matches the convention above:

Platform_Channel_Stage_Audience_Offer_Geo_Language_Cohort

A name matches a pattern only when its number of parts equals the number of slots in the pattern. Names that match populate every dimension; names that don't show up as Unassigned until you fix the name or adjust the pattern. You manage all of this on the Settings tab of your Google Ads workspace:

  • Branded detection. Buron scans your names for branded terms to split Search into brand and non-brand, one of the most useful cuts in Search reporting. Auto-detect infers your brand from campaign names. If your naming is unusual, switch to a manual pattern.
  • Geographic grouping. Set grouping to a campaign name pattern and Buron reads Geo straight from the name.
  • Coverage. The reporting settings show how many of your live campaigns match the pattern, so you can see exactly which names need fixing. Buron can also infer a pattern from your existing names for you to review.

Consistent names are what let this run unattended. See Configure your Google Ads workspace for the full settings walkthrough.

Mirror the name into your UTMs

Readable names and reliable tracking do different jobs, and you want both. Mirror the campaign name into utm_campaign in lowercase, put the ad variant in utm_content, and keep the platform's auto-tagging on so the click ID (Google's gclid) rides along:

utm_source=google
utm_medium=paid_search
utm_campaign=google_search_demand_competitor_rivalco_us_en_2026q3
utm_id={campaignid}
utm_content=rivalco_lower_price_v01_2026q3
utm_term={keyword}

The readable UTMs make your reports legible in GA4 and your CRM. The click ID makes the machine join work, and it's what lets you fire a conversion back to Google when a lead becomes a customer days later. To set that side up, see Set up your conversion tracking.

Run a check before every launch

Before any campaign goes live, run down this list. It turns the convention into a habit instead of a document nobody opens:

  1. The name follows the required field order.
  2. Platform and Channel are both present.
  3. One market and one language, not two.
  4. The name is under 150 characters.
  5. The ad group names a specific keyword or audience theme.
  6. The ad name includes the creative variant and version.
  7. utm_campaign mirrors the campaign name in lowercase.
  8. utm_content identifies the ad or creative variant.
  9. Google Ads auto-tagging is on.
  10. Click IDs and UTMs are captured before the lead enters your app flow.

Retrofit a messy account

You don't have to rename everything at once, and you shouldn't. Do it in order:

  1. Define the schema. Write down the field order and the allowed values for your account. This is the source of truth.
  2. Apply it to every new campaign immediately. Stop the bleeding first, so nothing new gets a bad name.
  3. Fix your highest-spend live campaigns next, using tracking templates so you change the tracking without touching the final URL.
  4. Migrate the rest gradually. Start with your largest platform, test the change on one campaign, confirm the data still joins to GA4 and your CRM, then roll out the rest.

Rewriting tracking on a live campaign can reset the bidding algorithm's learning. Change tracking through account- or campaign-level tracking templates rather than editing the final URL, and migrate one campaign at a time.

The honest part: the hard bit isn't the setup, it's getting everyone to use the same names. A written schema and this launch checklist are how you win that.

Why it compounds

A naming convention feels like housekeeping. It actually decides what analysis is available to you later, and some of the most valuable analysis can only look backward. Marketing mix modeling, incrementality tests, and any year-over-year comparison all need clean, consistently labeled history, the same channels and markets segmented the same way, for years on end. You can't relabel the past. A model can only see what you labeled clearly while it was happening.

So the payoffs sit on two clocks. The click IDs you capture today teach the bidding algorithm this week. The consistent names you apply today are what make look-back analysis possible later. The cheapest moment to make your data clean is the moment you create it.

Was this page helpful?

On this page