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).
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.
| Parameter | Recommended Values (Examples) | Avoid | Format Rules |
|---|---|---|---|
| utm_source | google, meta, linkedin, tiktok, email, direct_buy | Google, Facebook, g (abbreviations) | Lowercase; no spaces (use underscores) |
| utm_medium | cpc, paid_social, email, display, video, organic | paid, ad, campaign (too vague) | Lowercase; consistent vocabulary across team |
| utm_campaign | brand_search_q2_2026, retargeting_abandoned_cart | untitled, test, campaign_1 | Descriptive; date or quarter for time-bound campaigns |
| utm_content | headline_a, image_product_v1, video_15s | ad_1, variant_b | Describes the creative differentiation being tested |
| utm_term | {keyword} (auto-populated ValueTrack) | Manual keyword entry (maintenance burden) | Auto-populate from Google Ads when possible |
| Mistake | Example | Impact | Fix |
|---|---|---|---|
| Inconsistent capitalization | "Google" vs. "google" vs. "GOOGLE" | Three separate sources in GA4 | Standardize all to lowercase |
| Inconsistent medium values | "cpc", "PPC", "paid_search", "paid" for same channel | Multiple "paid search" rows in reports | Create controlled vocabulary; document in wiki |
| Spaces in parameter values | utm_campaign=summer sale | URL encoding breaks tag; shows as "summer%20sale" | Use underscores: utm_campaign=summer_sale |
| UTM on internal links | All internal navigation adds UTM to URL | Each click resets session source; inflates campaign sessions | Remove UTMs from all internal links |
| Missing utm_medium | Only utm_source and utm_campaign set | Sessions attributed to wrong default channel grouping | Always include all three core parameters (source + medium + campaign) |
| No UTMs on email or social organic links | Email links without utm_source=email | Email traffic appears as "(direct)" in GA4 | Tag all non-organic links with UTMs |
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.