UTM Parameters

UTM parameters (Urchin Tracking Module parameters) are standardized URL query string tags appended to destination URLs in advertising campaigns that enable web analytics platforms like Google Analytics to attribute website sessions, events, and conversions to specific marketing sources, mediums, campaigns, ad content variants, and keywords, providing campaign-level and channel-level attribution data independent of ad platform reporting, enabling cross-channel performance comparison and multi-touch attribution analysis.

Sam Flynn's profile

Written by Sam Flynn

2 min read

TL;DR

UTM parameters are tags you add to a URL (e.g., ?utm_source=google&utm_medium=cpc&utm_campaign=brand) so that your analytics platform (Google Analytics, Segment, etc.) knows exactly which campaign brought a visitor. Without UTMs, traffic from paid ads may show up in GA4 as "(direct)" or misattributed. With UTMs: you see campaign performance inside Google Analytics independently from the ad platform's own reporting,

useful for cross-channel comparison and attribution analysis. The five UTM parameters: utm_source (where the traffic comes from: google, meta, newsletter), utm_medium (the type of channel: cpc, email, social), utm_campaign (the campaign name), utm_content (ad variant or creative), utm_term (keyword, auto-populated for Google Search).

What Are UTM Parameters?

UTM parameters (Urchin Tracking Module parameters, named after Urchin Software, the company Google acquired to build Google Analytics) are five standardized URL query string parameters appended to destination URLs that instruct analytics platforms to classify, segment, and attribute website sessions to specific marketing sources and campaigns, enabling advertisers to see campaign-level, channel-level, and creative-level performance data inside analytics platforms independent from ad platform-native reporting, which enables cross-platform performance comparison and multi-touch attribution analysis beyond any single platform's last-click attribution model.

The five UTM parameters and their functions: utm_source, identifies the origin or publisher of the traffic: "google", "meta", "linkedin", "email", "newsletter", "podcast_sponsorship".

Should identify the platform or publisher sending the traffic; utm_medium, identifies the marketing channel or traffic type: "cpc" (paid search), "paid_social" (paid social media), "email" (email marketing), "organic" (organic search, typically not UTM-tagged), "display" (display advertising), "video" (video advertising).

Should follow a consistent controlled vocabulary across all campaigns; utm_campaign, identifies the specific campaign: "brand_search_exact", "summer_sale_2026", "competitor_conquesting". Enables comparison of performance across campaigns within the same source/medium; utm_content, identifies the specific ad creative, format, or placement variant: "headline_a", "carousel_v1", "image_testimonial".

Used for A/B testing attribution in GA4; utm_term, identifies the keyword that triggered the ad (auto-populated by Google Ads via ValueTrack parameter {keyword}. Not needed for social ads). For manual search campaign tracking, specifies the keyword.

UTM parameters and GA4 session attribution: when a user clicks a UTM-tagged URL, Google Analytics overrides its default session source with the UTM values. The session is attributed to utm_source / utm_medium with campaign data from utm_campaign. This session and any conversions within it are associated with the UTM data in GA4 reports; UTM data persists in GA4 for the session duration. A new UTM-tagged visit from a different campaign later overrides the previous UTM attribution for that user (last non-direct click session attribution in GA4's default model).

UTM parameters vs. ad platform click IDs: Google Ads auto-tags URLs with GCLID (Google Click Identifier), a unique ID that passes attribution data to Google Ads without requiring UTM parameters; UTMs provide analytics platform attribution (for GA4 reporting).

Both serve different purposes: GCLIDs connect to Google Ads bidding and conversion attribution; UTMs connect to GA4 cross-channel analysis. Neither replaces the other.

Recommended: use both simultaneously, enable auto-tagging in Google Ads (GCLID) and append UTMs for GA4 tracking.

UTM Parameter Standards and Naming Convention

ParameterRecommended Values (Examples)AvoidFormat Rules
utm_sourcegoogle, meta, linkedin, tiktok, email, direct_buyGoogle, Facebook, g (abbreviations)Lowercase; no spaces (use underscores)
utm_mediumcpc, paid_social, email, display, video, organicpaid, ad, campaign (too vague)Lowercase; consistent vocabulary across team
utm_campaignbrand_search_q2_2026, retargeting_abandoned_cartuntitled, test, campaign_1Descriptive; date or quarter for time-bound campaigns
utm_contentheadline_a, image_product_v1, video_15sad_1, variant_bDescribes the creative differentiation being tested
utm_term{keyword} (auto-populated ValueTrack)Manual keyword entry (maintenance burden)Auto-populate from Google Ads when possible

Common UTM Implementation Mistakes and Fixes

MistakeExampleImpactFix
Inconsistent capitalization"Google" vs. "google" vs. "GOOGLE"Three separate sources in GA4Standardize all to lowercase
Inconsistent medium values"cpc", "PPC", "paid_search", "paid" for same channelMultiple "paid search" rows in reportsCreate controlled vocabulary; document in wiki
Spaces in parameter valuesutm_campaign=summer saleURL encoding breaks tag; shows as "summer%20sale"Use underscores: utm_campaign=summer_sale
UTM on internal linksAll internal navigation adds UTM to URLEach click resets session source; inflates campaign sessionsRemove UTMs from all internal links
Missing utm_mediumOnly utm_source and utm_campaign setSessions attributed to wrong default channel groupingAlways include all three core parameters (source + medium + campaign)
No UTMs on email or social organic linksEmail links without utm_source=emailEmail traffic appears as "(direct)" in GA4Tag all non-organic links with UTMs

Common Mistakes

Not establishing a team-wide UTM naming convention with a documented controlled vocabulary, allowing different team members, agencies, and channel managers to use inconsistent values across campaigns, fragmenting analytics data into dozens of permutations of the same source or channel that must be manually reconciled. UTM parameters are case-sensitive and exact-match in Google Analytics: "google", "Google", "GOOGLE",

and "Google_Ads" appear as four separate sources in GA4 acquisition reports. Similarly, "cpc", "CPC", "paid-search", "paid_search", "paid search", and "PPC" all appear as different mediums. Without a documented naming convention, a company with 5 team members and 2 agencies managing campaigns will accumulate 15–20 permutations of "Google paid search" in GA4 by the end of a quarter,

making cross-campaign analysis impossible without manual data cleaning. Establish a UTM naming convention document before launching campaigns and enforce it as a prerequisite for campaign approval. The minimum required elements: the approved list of utm_source values by platform (e.g., google, meta, linkedin, tiktok, email_klaviyo, email_mailchimp, newsletter),

the approved utm_medium values by channel type (cpc, paid_social, display, video, email, organic_social), and the utm_campaign naming structure (typically: [channel][objective][audience][date] or [channel][campaign_name]_[year_quarter]).

Store the convention in a shared wiki page. Require anyone creating UTM-tagged links to reference the wiki. Audit GA4 acquisition source/medium report monthly for new inconsistencies. Implement URL builder tools (Google's Campaign URL Builder or a shared spreadsheet with dropdown menus) to enforce convention at link creation time.

**Adding UTM parameters to internal website links, navigation menus, blog post links, recommended products, or internal CTAs,

causing analytics to reset the session source attribution for internal navigation and artificially inflating the conversion count attributed to the UTM-tagged campaigns.** UTM parameters override session attribution in GA4 every time a UTM-tagged URL is loaded. When UTMs are applied to internal links (links from one page of the same website to another), every time a visitor clicks an internal UTM-tagged link,

GA4 starts a new session attributed to the UTM source, discarding the original external traffic source that actually brought the visitor to the site. For a website where the homepage links to blog posts with UTM tags, every visitor who clicks a blog link from the homepage has their session reset from "(referral) / google.com" or "google / cpc" to whatever source is in the internal UTM tag. This: inflates sessions attributed to internal UTM tags,

discards attribution for the actual traffic source, and makes acquisition reporting meaningless. The rule: UTM parameters belong only on external links (email links, ad destination URLs, social post links, partner links), never on links within your own website. Run a quarterly audit: search GA4 for any utm_source values that don't correspond to known external channels, internal UTM tags often show up as unexpected source values.

**Relying solely on UTM-based attribution in GA4 without recognizing that UTMs implement single-session last-non-direct-click attribution,

which misrepresents the multi-touchpoint customer journey for considered purchases and creates systematic underattribution of upper-funnel campaigns (display, video, social prospecting) that contribute to the path but rarely receive last-click credit.** UTM parameters tell GA4 which channel delivered the final session before a conversion,

not which channels contributed throughout the customer journey. A customer who saw three display ads over two weeks, clicked a Meta prospecting ad, subscribed to the email newsletter, then searched and clicked a brand search ad to purchase, GA4's default session attribution assigns 100% of conversion credit to "google / cpc" (the brand search).

The Meta prospecting ad and display ads receive zero credit despite contributing to the awareness and consideration that led to the search. This systematic bias causes: over-investment in lower-funnel channels that capture existing demand (brand search, retargeting), and under-investment in upper-funnel channels that create demand (awareness display, prospecting social),

because upper-funnel campaigns appear low-performing in last-click analytics even when they're driving incremental revenue. Mitigations: use GA4's multi-touch data-driven attribution model (available under Advertising → Attribution) for a less last-click-biased view, supplement with platform-level incrementality testing to measure the true business contribution of upper-funnel spend,

use MER (total revenue ÷ total marketing spend) as the channel-agnostic efficiency benchmark that captures all channel contributions, and avoid optimizing campaign budgets solely on GA4 last-click conversion data for channels operating above the last-click position in the funnel.

Key Takeaways

  • UTM parameters tag destination URLs with source, medium, campaign, content, and term values that analytics platforms use to attribute sessions and conversions to specific campaigns. They're essential for cross-channel performance visibility in GA4
  • Establish a team-wide naming convention (lowercase, underscores, controlled vocabulary for source and medium) before launching campaigns. Inconsistent capitalization and naming fragments GA4 reports into unusable permutations
  • Never apply UTM parameters to internal links; UTMs on internal navigation reset session attribution for every click, discarding original traffic source data and inflating internal UTM campaign stats
  • UTMs provide last-non-direct-click attribution. Upper-funnel channels (display, prospecting social) are systematically undervalued. Supplement UTM data with multi-touch attribution models in GA4 and holdout testing for true upper-funnel contribution measurement

Share: