Skip to content

UTM naming conventions that keep campaign reports readable

Clicktag campaign reports are easier to read with consistent source, medium and campaign labels. Keep values within 256 characters, choose one naming convention, and leave UTM tags off internal links.

Why UTM governance matters for analytics

Campaign reports group the strings you send. If the same newsletter uses email, Email, and e-mail, you have three labels to reconcile instead of one.

Choose a small convention, share it with everyone creating links, and reuse it. Lowercase hyphenated labels are a practical choice, not a technical requirement. Existing teams using underscores consistently do not need to rename their entire history.

The core anatomy: source, medium, and campaign

To build a readable convention, define strict semantic roles for each parameter before distributing tracking links.

1. utm_source: The origin platform

The source answers: Where was the user sitting when they clicked this link? Use the specific platform, domain, or publishing channel. Avoid broad descriptions like "paid" or "social" in the source field.

Examples: google, newsletter, linkedin, github, reddit, partner-acme.

2. utm_medium: The distribution mechanism

The medium answers: What high-level vehicle delivered the message? Keep your mediums list short and bounded across the entire organization. Five to eight mediums should cover nearly all digital marketing operations.

Recommended standard mediums:

  • cpc: Paid search and click-based search engine ads.
  • paid-social: Sponsored feed posts and paid social ads.
  • social: Unpaid, organic posts on social networks.
  • email: Marketing emails, product announcements, and recurring broadcasts.
  • referral: Partner links, guest editorial features, or co-marketing placements.
  • qr: Physical collateral, print flyers, or conference booth badges.

3. utm_campaign: The strategic context

The campaign answers: Why are we running this effort? Use a structured token format that combines the project name with an optional date or lifecycle phase.

Examples: spring-launch-2026, q2-retargeting, onboarding-series, free-tier-sunset.

Actionable naming guidelines

Adopt five fundamental rules to guarantee reporting integrity across every marketing campaign:

  1. Enforce lowercase text universally: Never use capital letters. URLs are case-sensitive regarding query parameters. Standardize on lowercase across all teams and tooling.
  2. Use hyphens to separate words: Never use spaces, plus signs, underscores, or camelCase. Hyphens ensure readable breakdown charts and clean URL encoding.
  3. Keep parameter values under 256 characters: In Clicktag, campaign fields support up to 256 characters each in the collector payload. Exceeding this limit results in truncation.
  4. Do not use punctuation or special characters: Avoid slashes, question marks, exclamation points, colons, or percent-encoded characters in parameter values.
  5. Maintain an internal naming glossary: Keep a single shared spreadsheet or link generator that locks options to approved dropdown choices.

Standard naming reference table

The following table illustrates correct and incorrect usage across common marketing channels. All metrics and URLs shown are hypothetical examples.

Channel Parameter Good Example Bad Example Why It Fails
Paid Search utm_medium cpc GoogleAds Merges platform with medium; uses PascalCase
Monthly Email utm_source newsletter Weekly Email Contains spaces and uppercase characters
Organic Social utm_medium social Three spellings for the same channel Fragments one channel across multiple labels
Summer Promotion utm_campaign summer-sale-2026 summer%20sale! Special characters cause percent-encoding noise
Partner Directory utm_source partner-docs https://partner.com Contains protocol and domain punctuation

Worked URL examples

Review these hypothetical URL examples across representative distribution scenarios:

Paid Google search ad targeting European product signups:

https://example.com/signup?utm_source=google&utm_medium=cpc&utm_campaign=eu-growth-2026

Weekly product announcement email to existing subscribers:

https://example.com/features/reporting?utm_source=newsletter&utm_medium=email&utm_campaign=v2-launch

Sponsored LinkedIn feed post:

https://example.com/pricing?utm_source=linkedin&utm_medium=paid-social&utm_campaign=b2b-pipeline-q2

Conference booth display banner:

https://example.com/demo?utm_source=devcon-berlin&utm_medium=qr&utm_campaign=conference-spring-2026

A common analytics mistake is tagging internal website links with UTM parameters. For example, placing utm_source=banner&utm_campaign=homepage on a button leading from your homepage to your pricing page ruins attribution integrity.

When a visitor arrives at your site from an external Google search ad, their session begins with acquisition attribution linked to that external ad. If the visitor clicks an internal banner containing UTM parameters, the collector parses those query parameters for the subsequent pageview. This overwrites the original campaign attribution or creates an artificial campaign touchpoint mid-journey. Same-site navigation is intentionally excluded from external referrers, but explicit UTM query values supersede referrers.

To track clicks on internal buttons, banner promotions, or navigation elements, do not use query parameters. Trigger custom client-side events via window.tt_event instead, keeping acquisition UTMs reserved exclusively for incoming links from external channels.

Short aliases and the data-strict-utm setting

By default, the Clicktag client script recognizes both standard UTM parameters and common short aliases:

  • utm_source accepts source or ref
  • utm_medium accepts medium
  • utm_campaign accepts campaign
  • utm_term accepts term
  • utm_content accepts content

According to the collector reference, the collector always prefers explicit utm_<name> parameters over shorter bare names. For source attribution, the collector evaluates utm_source, then falls back to source, then ref. When present, these short aliases populate the corresponding internal utm_* fields.

While convenient for quick links, short aliases can cause unintended attribution if your application uses query parameters like ?source=app or ?ref=affiliate_123 for internal state routing or partner tracking. To prevent bare aliases from populating campaign fields, configure data-strict-utm="true" on your tracker script tag, as detailed in the installation guide:

<script
  async
  src="https://clicktag.io/latest.js"
  data-hostname="example.com"
  data-verify="YOUR_SITE_VERIFY_TOKEN"
  data-strict-utm="true"
></script>

With strict UTM mode enabled, automatic campaign extraction ignores bare aliases and processes only keys prefixed with utm_, including utm_source, utm_medium, utm_campaign, utm_term, and utm_content. Strict mode does not require all five parameters to exist on every incoming link; single keys like utm_source=newsletter are still collected. If your application needs to forward custom query parameters separately, use data-allow-params to whitelist extra keys for pageview recording.

Understanding stored term and content fields

Clicktag stores utm_term and utm_content, but its Stats API does not expose breakdowns for those fields. Do not design a reporting workflow that depends on filtering or grouping by them in the dashboard. The supported campaign breakdowns are source, medium, and campaign; see the Stats API for the exact dimensions.

Before launching links across advertising networks, marketing automation tools, or partner sites, follow this QA workflow:

  1. Verify lowercase formatting: Ensure no accidental spaces, PascalCase tokens, or typos exist in parameter keys or values.
  2. Test redirection handling: If the target link passes through a redirect (such as an apex-to-www redirect or HTTP-to-HTTPS redirect), verify that the server preserves query strings through to the final destination.
  3. Confirm URL fragment placement: Place the URL fragment anchor after all query parameters (https://example.com/page?utm_source=newsletter#details), never before them.
  4. Inspect query string delimiters: The first parameter must follow a question mark (?), and subsequent parameters must be separated by an ampersand (&).
  5. Check live capture in staging: Open the link in a test browser session and confirm that the pageview attributes as expected in your reporting dashboard at clicktag.app.

Frequently asked questions

Do UTM parameters change how unique visitors are calculated?

No. Unique visitors are calculated using daily rotating hashes derived from visitor IP addresses, user agents, site identifiers, and a daily salt. Campaign parameters associate pageview activity with specific marketing sources, but they do not alter visitor hash calculation.

The collector records whatever string values arrive in the query string up to the 256-character limit. If someone uses utm_medium=banner-ad, that exact string appears as a row in your utm_mediums breakdown. The ingestion pipeline does not coerce or reformat custom string values.

Can I filter breakdown reports by specific UTM parameters?

Yes. Both the overview and breakdown API endpoints accept filter parameters matching f=utm_source:<value>, f=utm_medium:<value>, and f=utm_campaign:<value>. The filter value must match the exact row name returned by the breakdown query, case-sensitively.

Why does my acquisition source show direct when I expected a campaign?

If query parameters are stripped before the browser loads the tracker script, which frequently happens during misconfigured web server redirects or URL shorteners, the collector cannot record them. Always test that external redirects preserve incoming query strings intact.

Last updated