TrackFunnels

UTM Parameters

Chapter 8 — Creating a UTM Naming Convention

Shad Malik
By Shad Malik Updated on Feb 16, 2026

A tight UTM naming convention prevents broken attribution and messy reports. These rules define allowed values, construction patterns, and alignment with GA4 so every link speaks the same language.

Myth Debunk:
Medium values are not free-form. If you use nonstandard utm_medium values like “cpm,” GA4 may place traffic in Unassigned. Use a controlled list (e.g., paid-social, cpc) to lock clean channels.

The Four Locks Framework (keep decisions simple)

  • Lock 1 — Vocabulary: Approve a finite utm_medium list.
  • Lock 2 — Sender: Define how utm_source names platforms and partners.
  • Lock 3 — Pattern: Standardize utm_campaign with fields and separators.
  • Lock 4 — Detail: Set patterns for utm_content and utm_term for creative and targeting depth.

What a good naming convention answers

  • What values are allowed for each parameter
  • How values are constructed (order, separators, casing)
  • How to avoid collisions and ambiguity
  • How values align with analytics channel groupings (GA4)

Lock the vocabulary for utm_medium

Decide a finite list. Treat it like a controlled dictionary.

utm_medium (approved) When to use
email All marketing and sales emails (newsletters, nurtures, sequences). Example: a nurture series to MSSP prospects.
social Organic social posts. Example: a product tip on a LinkedIn company page.
paid-social Paid ads on social platforms. Example: LinkedIn Sponsored Content to CFOs.
cpc Paid search and keyword-targeted ads. Example: Google Ads for “manufacturing MRP software.”
display Programmatic/banner placements. Example: placements on industry news sites via DV360.
affiliate Affiliate or partner-driven traffic. Example: a reseller’s tracked link.
referral Sponsored listings that behave like referrals. Example: a G2 profile button using UTMs.
video Paid or sponsored video placements. Example: YouTube pre-roll.
audio Podcast ads and audio networks. Example: a sponsored CFO podcast episode.
events Traffic from event QR codes or event portals. Example: a trade show banner QR to a demo page.
direct-mail Offline mail or printed collateral. Example: a brochure QR to a landing page.

Rules

  • Use lowercase only.
  • Do not invent new mediums mid-campaign. Propose updates centrally and version your list.
  • If a platform could map to multiple mediums, choose one based on objective and buying method, then stay consistent. For example, LinkedIn Ads = paid-social; organic LinkedIn posts = social.

Define utm_source: who sent the traffic

Use the platform, publisher, or partner name—never the campaign.

Medium utm_source examples Notes
email hubspot, marketo, salesloft Use the sending system for marketing or sales emails.
social linkedin, twitter, github, mastodon Organic posts from brand handles or communities.
paid-social linkedin, meta, x-ads, reddit Use the ad platform’s canonical name.
cpc google, bing Search engines for paid search.
display dv360, thetradedesk, industry-daily DSPs or named publishers.
affiliate impact, cj, partner-name Network or partner slug (e.g., northtech-partners).
referral g2, capterra, stackshare Directories and software review sites.
video youtube, vimeo Video platforms for paid placements.
audio megaphone, spotify, podbean Podcast networks.
events rsa-conference, dreamforce Event sites or portals.
direct-mail postcard, brochure, catalog Print format if no platform exists.

Rules

  • Lowercase; use hyphens for multiword sources (e.g., search-engine-journal).
  • Use the canonical platform name your team agrees on; do not switch between linkedin and li.

Set a single utm_campaign pattern—then never break it

Pick one pattern and apply it universally.

  • Enterprise ABM: [fy][yy]_[q#]_[objective]_[product]_[audience]_[region]
  • Always-on demand gen: [fy][yy]_[objective]_[product]_[region]
  • Launches/time-bound: [fy][yy]_[q#]_[launch-name]_[product]_[region]

Field guidance

  • objective: awareness, demand, abm, retention, upsell
  • product: short code for the solution (erp, siem, cdn, bi-cloud)
  • audience: role or segment (cxo, secops, devops, smb, enterprise)
  • region: ISO country (us, de) or geo cluster (na, emea, apac)
  • q#: q1–q4 aligned to your fiscal calendar

Sample values that fit the pattern

  • fy26_q1_abm_erp_cxo_us
  • fy26_demand_siem_emea
  • fy26_q2_launch_edge-analytics_cio_na

Rules

  • Lowercase, words separated by underscores; use hyphens only inside product names if required.
  • Use consistent dictionaries for objective, product, audience, and region.

Standardize utm_content and utm_term

This section sets naming patterns, not analytics behavior.

utm_content pattern: [format]_[variant]_[cta]

  • format: banner, carousel, singleimage, textad, email, webinar, pdf
  • variant: v1, v2, a, b (tie to your creative sheet)
  • cta: demo, ebook, pricing, contact
  • Example: carousel_v1_demo or email_v2_pricing

utm_term pattern (when used): [keyword-or-list] or [segment-id]

  • For search: the-keyword or a token like kw_erp_software
  • For lists/segments: abm-list-a, list_enterprise-50
  • Example: siem-software or abm-list-chemicals

Case, separators, and special characters

  • Case: all lowercase across every parameter.
  • Separators: underscores between fields; hyphens within multiword values (edge-analytics). This improves readability and reduces channel misclassification.
  • No spaces; no punctuation beyond hyphen/underscore.
  • Length: keep each field concise (ideally under 25 characters).

Dates and timeframes

  • Put fiscal year first (fy26) to keep reporting consistent across calendar differences.
  • Quarters are optional for always-on programs; required for bursts and launches.
  • For monthly specificity in email or social, append mmm (mar, apr) when needed.
  • Example: fy26_q1_demand_siem_emea_mar

Geography and language

  • Use ISO 3166-1 alpha-2 for countries (us, de) and standard region clusters (na, emea, apac).
  • Add language only when content differs by language (en, de, fr) as a suffix to campaign or content.
  • Example: fy26_demand_bi-cloud_dach + utm_content=pdf_de

Product and solution codes

  • Maintain a short, unambiguous product code list.
  • Avoid synonyms (siem vs security-analytics). Pick one and enforce it.

GA4 default channel grouping alignment

If mediums do not match GA4 expectations, traffic can land in Unassigned. Align your utm_medium values as follows.

Use case Recommended utm_medium Example utm_source GA4 default channel
Google/Bing search ads cpc google Paid Search
Organic social post social linkedin Organic Social
Paid social ad paid-social linkedin Paid Social
Programmatic/banner display dv360 Display
Email marketing email hubspot Email
Affiliate program affiliate impact Affiliates
Sponsored directory/referral referral g2 Referral
Podcast ad audio megaphone Audio (may require custom rule)
Video ad video youtube Video (may require custom rule)
Event QR events rsa-conference Other (consider custom rule)
Direct mail QR direct-mail postcard Other (consider custom rule)

Note: GA4 channel rules evolve. Align with current GA4 documentation and keep a short translation table in your playbook.

Document the convention (the one-page UTM playbook)

Keep it short and enforceable.

Section What to include Example snippet
Purpose & scope Where this applies “Applies to all links leaving TrackFunnels properties.”
Parameter rules Medium, source, campaign, content, term utm_medium must be one of: email, social, paid-social, cpc, display, …”
Dictionaries Approved values for objective, product, audience, region objective: awareness, demand, abm; product: siem, erp, …
Patterns Regex or templates for utm_campaign and utm_content utm_campaign: fy[0-9]{2}_(q[1-4]_)?(awareness|demand|abm|retention|upsell)_[a-z0-9-]+_([a-z0-9-]+)
GA4 mapping Medium-to-channel table See mapping above
Examples 6–10 complete parameter sets paid-social + linkedin + fy26_q1_abm_erp_cxo_us
Change log Dated changes to dictionaries “2026-03-15: added product code ‘edge-analytics’.”

Complete parameter sets that obey the rules

LinkedIn ABM ad

  • utm_source=linkedin
  • utm_medium=paid-social
  • utm_campaign=fy26_q1_abm_erp_cxo_us
  • utm_content=carousel_v1_demo
  • utm_term=abm-list-a
  • utm_source=google
  • utm_medium=cpc
  • utm_campaign=fy26_demand_siem_emea
  • utm_content=textad_a_demo
  • utm_term=siem-software

Email nurture wave 2

  • utm_source=hubspot
  • utm_medium=email
  • utm_campaign=fy26_q2_retention_bi-cloud_customer_na
  • utm_content=email_v2_pricing
  • utm_term=—

Event QR code at RSA

  • utm_source=rsa-conference
  • utm_medium=events
  • utm_campaign=fy26_q2_awareness_soar_secops_na
  • utm_content=qr_v1_demo
  • utm_term=—

Quick decision checklist

  • Have we chosen a fixed utm_medium list that maps to GA4?
  • Is utm_source the platform/publisher only?
  • Does utm_campaign follow a single documented pattern?
  • Are objective/product/audience/region values from approved dictionaries?
  • Are all values lowercase with allowed separators?
  • Do complete parameter sets exist in the playbook?
TrackFunnels Expert Tip:

Embed validation where UTMs are created. Use dropdowns for utm_medium and your dictionaries (objective, product, audience, region). Enforce a regex for utm_campaign so bad values never reach production. Example regex for the ABM pattern:

JAVASCRIPT
^fy[0-9]{2}_(q[1-4]_)?(awareness|demand|abm|retention|upsell)_[a-z0-9-]+_[a-z0-9-]+_(us|ca|uk|de|fr|es|it|nl|se|no|dk|pl|cz|in|au|nz|jp|sg|hk|cn|kr|br|mx|ar|za|ua|ru|na|emea|apac)$

Keep a tiny translation map for legacy values (e.g., paidsocial → paid-social) to auto-correct entries.
Try This Now Assignment
  • Open a regex tester and paste the following ABM regex:
  • JAVASCRIPT
    ^fy[0-9]{2}_(q[1-4]_)?(awareness|demand|abm|retention|upsell)_[a-z0-9-]+_[a-z0-9-]+_(us|ca|uk|de|fr|es|it|nl|se|no|dk|pl|cz|in|au|nz|jp|sg|hk|cn|kr|br|mx|ar|za|ua|ru|na|emea|apac)$
    
  • Test these utm_campaign values:
    1. fy26_q1_abm_erp_cxo_us (should match)
    2. FY26_Q1_ABM_ERP_CXO_US (should fail: casing)
    3. fy26_q1_demand_edge_analytics_cio_na (should fail: extra underscore vs hyphen)
    4. fy26_abm_siem_cxo_emea (should match if quarters are optional per your pattern)
  • Adjust your product codes and region list in the regex, then retest.
  • Save the final regex into your UTM builder.

Test your knowledge

Loading quiz questions...