Tools Solutions Pricing Blog
Log in Start for free
← All articles

How to Standardise UTM Parameters Across Your Marketing Team

When multiple people build UTM links independently, attribution splits into fragments. Here's how to define a naming convention and enforce it without a style guide nobody reads.

Your GA4 report shows LinkedIn driving 47 conversions this quarter. Except that’s just one spelling. Scroll down and you’ll find linkedin with a lowercase L, LinkedIn Ads, LI, and linked-in each with their own row. The actual number is closer to 140 conversions, fragmented across five source values that all mean the same platform.

Nobody made a mistake. Three people on the team built UTM links independently. Each one used what made sense to them. The result is attribution data that can’t be trusted at the channel level.

Standardising UTM parameters across a team is less a technical problem than a process problem. The naming convention is easy to write. Keeping everyone on it is where it falls apart.

How to standardise UTM parameters in four steps

The short version, before the detail:

  1. Define your canonical value list for utm_source and utm_medium. These two cause 90% of fragmentation.
  2. Choose one casing convention (lowercase with underscores is the most common) and document it somewhere everyone can find.
  3. Save the approved values somewhere everyone pulls from when building links, not a PDF nobody opens.
  4. Review and clean on a schedule. Even with a shared list, drift happens. Quarterly is enough for most teams.

Why UTM fragmentation happens in the first place

UTM parameters are freeform strings. Nothing in GA4, HubSpot, or Salesforce prevents LinkedIn, linkedin, Linked-In, and LI from all being valid utm_source values. The platform accepts whatever you send. The fragmentation only shows up later, in the reports.

Common triggers:

  • A new hire sets up their first campaign without seeing the existing conventions
  • Someone copies a UTM link from a colleague’s email and edits just the campaign name, keeping whatever casing they started with
  • An agency or contractor builds links in isolation and uses their own naming conventions
  • An old campaign gets cloned and the UTM values get adjusted inconsistently

Every new person who builds UTM links without a shared reference is a fragmentation risk.

What to include in a UTM naming convention

A UTM naming convention only needs to cover three things:

Source values. The complete list of approved utm_source values, one per channel. Include every platform you run campaigns on: google, linkedin, facebook, twitter, newsletter, partner, etc. The fewer sources on the list, the less room for drift.

Medium values. The approved utm_medium values and what each means. Common examples: cpc, paid_social, email, organic_social, affiliate, referral, display. The convention should be explicit about whether you’re using paid_social or cpc for LinkedIn Ads, because both are defensible and teams split on this.

Formatting rules. Lowercase only? Underscores or hyphens? How to handle multi-word campaign names? Pick one and write it down. Lowercase with underscores (paid_social, q2_product_launch) is the most widely used convention, partly because it avoids the URL-encoding issues that come with spaces.

utm_campaign is also worth standardising, but it changes every campaign so a full list isn’t practical. A naming template works better: [year]_[quarter]_[product_or_theme], for example 2026_q2_csv_normalizer.

Why a Google Doc naming convention doesn’t hold up

Most teams document UTM conventions in a shared doc. Two problems:

Nobody looks at it when they’re in the middle of building a campaign. The doc exists, but checking it requires remembering it exists, finding it, and reading it before doing the work. The friction is low but it’s still friction, and under time pressure it doesn’t happen.

The list also goes stale. Someone adds a new source mid-year without updating the doc. The doc says google but three campaigns this quarter used google-ads. Neither is wrong enough to trigger a correction, so both persist.

The fix isn’t a better doc. It’s making the approved values available at the moment someone is building a link.

How to build a shared UTM source and medium library

The library approach puts the approved values in the tool where links get built, not in a separate reference. When someone types a source value, the approved options appear as suggestions. They pick from the list rather than typing from memory.

This solves the doc problem: the convention is enforced at build time, not at documentation time.

A simple version works in a spreadsheet. Maintain a single sheet with two columns: Source and Medium, one value per row, one sheet per channel type. Share it across the team. When someone builds a UTM link, they copy from the sheet rather than typing. This is a significant improvement over a doc because the data is structured and copy-pasteable.

A more robust version uses a purpose-built UTM builder where the library is built in. Approved sources and mediums are saved once, show up as autocomplete suggestions everywhere in the tool, and the same list is available to everyone on the team. New values get added to the library and are immediately available to everyone. See Asphorem’s UTM Builder for how this works in practice.

Using UTM templates to standardise recurring campaigns

For campaigns that run on a recurring schedule (monthly newsletter, always-on paid social, quarterly product launch), a named template handles the standardisation automatically.

A template stores: source, medium, and optionally campaign. Someone building a UTM link for the Q3 newsletter picks the newsletter template. The source and medium fill in automatically, using the approved values. They type the campaign name and the link is done.

Templates remove the decision about which source and medium to use for a given channel type. The decision was made once when the template was created. Everyone who uses that template gets the right values without thinking about it.

This matters most for teams with multiple people running similar campaigns. One person setting up paid social campaigns in January might use paid_social. A different person taking over in March might use cpc. A template locks the medium to whichever was agreed at setup, regardless of who runs the campaign.

If your team also does bulk UTM generation before launches (tagging all pages with the same campaign), the same template applies to the whole batch. See the Asphorem UTM Builder’s bulk generate feature for handling this in one pass.

Auditing existing UTM data for fragmentation

Before you standardise going forward, it’s worth seeing what’s already in your analytics data. The audit tells you which values need to be consolidated, which are the canonical ones to keep, and which are one-off mistakes.

In GA4:

  1. Go to Reports → Acquisition → Traffic Acquisition
  2. Change the dimension from “Session default channel group” to “Session source / medium”
  3. Sort by sessions descending
  4. Export the full list to a spreadsheet

In HubSpot (if you’re passing UTMs through to contacts):

  1. Go to Reports → Analytics Tools → Traffic Analytics
  2. Filter by source and look for duplicate channels with different capitalisation
  3. Export as CSV

Once you have the full list, group similar values manually:

Variants in dataCanonical value to keep
LinkedIn, linkedin, LI, linked-inlinkedin
paid_social, Paid Social, paidsocialpaid_social
Email, email, newsletteremail or newsletter (pick one)
google, Google, google-ads, Google Adsgoogle

You can’t retroactively fix historical attribution data in GA4. But you can use this audit to define the canonical list, set up the library from today forward, and watch the fragmentation stop in next quarter’s reports.

Checking your UTM data for naming inconsistencies before a CRM import is also worth doing. If UTM values pass through to contact records in HubSpot or Salesforce, you’ll want to normalise them before they get imported alongside everything else. Asphorem’s CSV Normalizer can clean UTM source and medium columns as part of a broader contact normalisation pass.

UTM naming convention checklist

Before your team’s next campaign:

  • Define the canonical source list and write it down in a place the team pulls from, not just reads
  • Define the canonical medium list with guidance on what each value covers
  • Choose a casing convention (lowercase + underscores is the default)
  • Set up templates for every recurring campaign type (newsletter, paid social, retargeting)
  • Do a one-time audit of existing UTM data to map the variants you’re already dealing with
  • Review quarterly: new channels, new campaigns, new team members all introduce drift

UTM standardisation: frequently asked questions

What UTM naming convention should I use?

Lowercase with underscores is the most common and least error-prone. paid_social over Paid Social because spaces get URL-encoded to %20, which makes links look messy. linkedin over LinkedIn because capitalisation differences create duplicate rows in GA4. The specific convention matters less than consistency: pick one and apply it everywhere.

How many UTM source values should a team use?

One per platform or publisher you send traffic from. Most teams run campaigns on 5 to 10 sources. The fewer values on the list, the less room for variants to creep in. If you find yourself adding a new source for every campaign, the list is too granular.

What’s the difference between utm_source and utm_medium?

utm_source identifies the specific platform or publisher: linkedin, google, newsletter, partner_name. utm_medium identifies the channel type: cpc, paid_social, email, organic_social. The same source can have multiple mediums (LinkedIn has both paid_social for ads and organic_social for posts), which is why both parameters are needed.

How do I fix fragmented UTM data in GA4?

You can’t retroactively change what GA4 recorded. Going forward, set up the shared library and templates so new links use the canonical values. For reporting purposes, create a custom channel grouping in GA4 that maps the variant values (LI, linked-in, LinkedIn) to the same channel. This doesn’t fix the raw data but it fixes the reports.

Can I standardise UTM parameters without a dedicated tool?

Yes. A shared spreadsheet with the approved source and medium values, combined with a UTM builder that people copy-paste from, is significantly better than no shared reference. The limitation is that a spreadsheet isn’t integrated into the link-building workflow, so people still have to remember to check it. A tool with the library built in removes that step.

Should I standardise utm_campaign values?

Partially. A naming template helps ([year]_[quarter]_[theme]) but a full canonical list isn’t practical since campaign names change. The higher-value standardisation is on source and medium, which appear in every campaign. Get those consistent first. Campaign naming conventions are worth documenting but less critical to enforce.

Stop fixing the same CSV problems every week

Asphorem maps your columns, standardises picklist values, and normalises dates so your next import works first time. Free plan included.

Start for free →