A UTM Naming Convention Your Team Can Actually Keep

Create consistent campaign, source, medium, term, and content values so analytics reports remain readable across channels, launches, and teammates.

By utilkit 4 min read Marketing
A laptop displaying analytics charts on a glass-top table
Photo by Carlos Muza on Unsplash

UTM parameters are easy to add and surprisingly easy to make unusable. If one person writes paid-social, another writes Paid Social, and a third writes facebook_ads, one channel appears as several rows. A naming convention prevents that fragmentation, but only if it is short enough to remember and specific enough to answer real reporting questions.

Build links with the utilkit UTM Builder, then store the finished URLs and their approved values in a shared campaign sheet. The tool prevents punctuation mistakes; the shared vocabulary prevents semantic ones. Both are necessary when many people publish links.

Give each parameter one job

Use utm_source for the platform, publisher, list, or partner sending the visit: google, linkedin, or customer_newsletter. Use utm_medium for the broad traffic mechanism: cpc, paid_social, email, or affiliate. Keeping platform and mechanism separate makes cross-channel reporting possible.

Use utm_campaign for the initiative you want to analyze together, such as 2026_fall_launch. Reserve utm_content for variants such as creative, placement, or call to action. Use utm_term only when a meaningful keyword or targeting label belongs in the analysis. Google’s URL-builder documentation describes how these parameters populate campaign dimensions.

Choose boring formatting rules

Lowercase every value, replace spaces with one agreed separator, and avoid punctuation that can be interpreted or encoded inconsistently. Snake case is readable in exports, so values such as spring_webinar and paid_social work well. The exact separator matters less than using it every time.

Decide whether dates belong in campaign names and use one format, preferably a sortable year-first form. Do not add every available detail to every value. A campaign string that repeats source, audience, creative, owner, region, and date becomes hard to scan and more likely to be mistyped.

Publish a controlled vocabulary

Write down the allowed media and the preferred source name for each major platform. Include examples and explicitly list aliases that should not be used. Give one person or team ownership of changes, because conventions decay when everyone invents new labels independently.

Before a launch, generate each destination link from the approved plan and test that it resolves to the intended page. Never place private customer data, email addresses, or other sensitive information in UTM values: the parameters appear in browser history, analytics systems, server logs, and copied links.

A compact starter convention

  • Source: lowercase platform or sender, such as linkedin.
  • Medium: controlled channel type, such as paid_social.
  • Campaign: stable initiative, such as 2026_fall_launch.
  • Content: optional differentiator, such as demo_video.
  • Term: optional search keyword or targeting label.

Govern the convention with a campaign registry

A naming guide becomes much more useful when it is paired with a small registry. Give each campaign one row containing the approved campaign value, owner, destination, launch dates, allowed source and medium combinations, and a plain-language purpose. Add generated URLs as child rows or a second sheet. This creates a place to check whether fall_launch already exists before someone invents autumn-launch.

Use validation lists for controlled fields, but allow a documented request process for genuinely new values. A vocabulary that can never change will be bypassed; one that changes without review will fragment. When a new channel is approved, record the date, definition, and any values it replaces. Never rewrite historical campaign values merely to make a current report look tidy, because that obscures what was actually deployed.

Before launch, test one link from every channel and confirm that the destination loads, its query string survives redirects, analytics records the intended dimensions, and no private data appears in the URL. After launch, review unexpected source, medium, and campaign strings. Fix the publishing workflow that created them, then add an alias only if historical reporting needs it. This feedback loop keeps the convention useful after the document announcing it is forgotten.

After publishing, check the acquisition report early enough to fix mistakes while the campaign is still running. Google documents the resulting fields in its manual campaign dimensions reference. A good convention will not make attribution perfect, but it will make the data internally consistent—and that is the prerequisite for any useful comparison.