UTM parameters are simple. Keeping them consistent across a team is not.

One marketer writes LinkedIn, another writes linkedin, a third uses LI, and suddenly one campaign is split across several reporting values. The problem is rarely the URL syntax. It is the naming system.

The free KairoxBuild UTM Campaign Builder generates GA4 campaign URLs while preserving existing destination parameters and fragments. This guide gives you a practical convention to use before the team starts generating links.

The minimum convention to define

For most manually tagged campaign URLs, agree on rules for at least:

  • utm_source
  • utm_medium
  • utm_campaign

Google Analytics also supports parameters including:

  • utm_id
  • utm_source_platform
  • utm_term
  • utm_content
  • utm_creative_format
  • utm_marketing_tactic

Google currently notes that utm_creative_format and utm_marketing_tactic are not reported in Google Analytics properties, so do not build critical reporting around those two fields without re-checking the current documentation.

Recommended naming rules

A simple system is easier to enforce than a perfect taxonomy no one follows.

Use these defaults:

  1. Lowercase values unless there is a strong reason not to.
  2. Use one separator style, preferably underscores for campaign-style identifiers.
  3. Keep source and medium vocabularies controlled.
  4. Do not put personal data in URL parameters.
  5. Use stable campaign names, not whatever wording happens to be in one ad.
  6. Document exceptions instead of inventing them during link creation.

The KairoxBuild builder can lowercase values and normalize whitespace for campaign-style identifiers.

utm_source: who sent the traffic?

Use utm_source for the specific source of traffic.

Examples:

newsletter
linkedin
facebook
partner_acme
community_slack

Avoid values that mix source and campaign logic:

linkedin_august_launch_video

That makes the source field harder to compare over time.

A better split would be:

utm_source=linkedin
utm_medium=social
utm_campaign=seo_tools_launch
utm_content=demo_video

utm_medium: what kind of traffic is it?

Use utm_medium for the broad marketing method or channel convention your team uses.

Examples might include:

email
social
cpc
referral

Be deliberate here because medium values can affect how traffic is grouped in analytics reporting.

Do not casually alternate between:

paid_social
paidsocial
social_paid

unless your reporting design intentionally treats them as different values.

The important rule is consistency with your GA4 reporting model and any channel-grouping logic you rely on.

utm_campaign: what initiative is this link part of?

Use a stable campaign identifier that can survive across several channels and creatives.

Good:

seo_tools_launch
q3_product_update
black_friday_2026
visual_calculus_launch

Less useful:

amazing_new_campaign_final_v2

A campaign name should help an analyst group related traffic six months later without asking the person who built the URL what it meant.

utm_content: which link or creative variant?

Use utm_content to distinguish links or creative variants inside the same source, medium, and campaign.

Examples:

hero_cta
footer_link
demo_video
carousel_02
cta_variant_b

This is useful when the same campaign has several links in one email, landing page, or social campaign.

Do not use utm_content as a dumping ground for every creative detail. Include only the distinction you expect to analyze.

utm_term: keyword or targeting context

Google documents utm_term for paid keyword context. Some teams also use it for a controlled targeting dimension, but that should be a deliberate reporting choice.

Examples:

technical_seo
html_to_markdown

If the field has no real reporting purpose, leave it blank. More parameters do not automatically create better analytics.

utm_id: stable campaign ID

utm_id is useful when you have an internal campaign identifier or import campaign metadata into Analytics.

Examples:

cmp_2026_08_017
seo_launch_01

A human-readable campaign name can change; a stable ID helps preserve identity across systems.

utm_source_platform: the platform responsible for traffic

Google Analytics supports utm_source_platform as a manual traffic-source dimension.

Examples:

linkedin
meta
partner_network

Only add this when it helps answer a real reporting question. If utm_source=linkedin already gives you everything you need, duplicating the same idea into several fields may add more maintenance than value.

A practical naming template

For a campaign promoting the KairoxBuild GSC Opportunity Finder on LinkedIn:

Destination: https://kairoxbuild.com/seo-tools/gsc-opportunity-finder.php
utm_source: linkedin
utm_medium: social
utm_campaign: gsc_tools_launch
utm_content: demo_post_cta
utm_id: gsc_launch_01
utm_source_platform: linkedin

Generated URL:

https://kairoxbuild.com/seo-tools/gsc-opportunity-finder.php?utm_source=linkedin&utm_medium=social&utm_campaign=gsc_tools_launch&utm_content=demo_post_cta&utm_id=gsc_launch_01&utm_source_platform=linkedin

You can generate this without manually joining query parameters using the UTM Campaign Builder.

Preserve existing query parameters

A destination may already contain a useful parameter:

https://example.com/guide?ref=nav

Your campaign builder should add UTMs without deleting ref=nav:

https://example.com/guide?ref=nav&utm_source=newsletter&utm_medium=email&utm_campaign=seo_launch

The same applies to URL fragments such as #pricing or #demo.

Manual copy-and-paste is where teams often produce malformed links with duplicate ?, lost parameters, or inconsistent encoding. Use a URL-aware builder instead of concatenating strings by hand.

Keep UTM values out of internal site navigation

UTM parameters are primarily for campaign acquisition tracking. Adding them to ordinary internal links can overwrite or distort acquisition context in analytics workflows.

For internal navigation, use your analytics event model or another purpose-built internal attribution method rather than treating every click as a new campaign.

Do not put personal data in UTM parameters

UTM values are part of the URL. URLs can appear in:

  • browser history;
  • web server logs;
  • analytics systems;
  • screenshots;
  • copied messages;
  • referrer data in some contexts.

Do not add names, email addresses, phone numbers, or other personally identifiable information to campaign parameters.

The KairoxBuild builder includes a basic warning for values that look like email addresses or long phone-like numeric strings, but the person creating the link remains responsible for what goes into the URL.

Naming mistakes that fragment GA4 reporting

Mixed capitalization

These can become separate values:

LinkedIn
linkedin
LINKEDIN

Choose one convention. Lowercase is usually easiest.

Inconsistent separators

These values are visually similar but different strings:

seo_tools_launch
seo-tools-launch
seo tools launch

Pick one format for campaign identifiers.

Changing the campaign name by channel

Avoid:

linkedin_seo_launch
email_seo_launch
facebook_seo_launch

if all three belong to one campaign.

Prefer keeping the campaign stable and letting source/medium identify the channel:

utm_campaign=seo_tools_launch
utm_source=linkedin
utm_medium=social

Overloading one field

Avoid values such as:

linkedin_social_august_post_blue_button_variant_b

Break meaningful dimensions into their own fields instead.

A lightweight UTM governance sheet

For a small team, you do not need a complicated campaign-management platform. A simple controlled dictionary is enough:

Field Rule Example
source lowercase source name linkedin
medium approved channel vocabulary social
campaign lowercase + underscores + stable initiative gsc_tools_launch
content creative/link distinction only demo_post_cta
term keyword/targeting context when needed technical_seo
id stable internal campaign ID gsc_launch_01
source_platform platform dimension when useful linkedin

Then add a short approved list of medium values and campaign naming examples used by your organization.

QA every campaign URL before publishing

Before a link goes live:

  1. Open the final destination URL.
  2. Confirm the page loads correctly.
  3. Check that existing query parameters remain intact.
  4. Verify source, medium, and campaign spelling.
  5. Confirm capitalization and separators follow your convention.
  6. Remove any personal or sensitive data.
  7. Test the actual clickable link in the channel where it will be published.

The cost of checking one URL is small. Cleaning six months of fragmented campaign dimensions is not.

Build once, reuse the convention

The most useful UTM system is boring:

same source names
same medium names
same separators
same campaign naming logic

Once those rules are stable, generating campaign links becomes mechanical instead of interpretive.

Use the KairoxBuild UTM Campaign Builder to generate the URL, and use the GSC Opportunity Finder when you want to prioritize organic search work rather than campaign traffic.

Sources

Google documents manual traffic-source parameters and their Analytics dimensions in Traffic-source dimensions, manual tagging, and auto-tagging. Google also provides parameter definitions in its URL builder guidance and recommends consistent naming to avoid fragmented campaign reporting in its campaign data import documentation.