How UTMs work (in practice)
- UTMs are appended to a URL (after a
?). - When a user clicks that URL, analytics tools record those parameters for the visit/session.
- When the user purchases, SourceMedium uses the available attribution signals (including UTMs) to assign attribution (see Attribution Source Hierarchy).
The UTM fields (and what they mean)
SourceMedium primarily uses these fields:utm_source: Where the traffic came from (e.g.,google,meta,klaviyo,podcast_partner)utm_medium: How it got there (e.g.,cpc,paid_social,email,affiliate)utm_campaign: Which campaign (e.g.,bfcm_2025,spring_launch)utm_content: Optional creative/variation (e.g.,video_15s,carousel_a)utm_term: Optional keyword/targeting (often paid search)utm_id: Optional internal campaign identifier
What each value should represent
Here’s a practical mental model that prevents messy reporting:- Put the platform/publisher in
utm_source(where the traffic is coming from) - Put the marketing motion in
utm_medium(how you’re buying/sending it) - Put the initiative in
utm_campaign(what you’re running) - Put the creative/variation in
utm_content(what version)
Avoid putting highly-granular values (like ad IDs) in
utm_source or utm_medium. Those tend to explode your reporting into thousands of rows.Recommended naming conventions
Consistency matters more than the “perfect” taxonomy. Pick rules your team will actually follow. Recommended defaults- Lowercase values (avoid
Facebookvsfacebook) - Use
_for separators (avoid spaces) - Keep sources stable over time (campaigns can change; sources shouldn’t)
How to tag links (step-by-step)
- Start from the clean destination URL (no UTMs).
- Use the official Google Campaign URL Builder to ensure correct formatting.
- Decide values for
utm_source,utm_medium,utm_campaign(and optionallyutm_content,utm_term). - Append parameters to the URL:
- If the URL has no query params, start with
?utm_source=... - If it already has query params, append with
&utm_source=...
- If the URL has no query params, start with
- Click your own tagged link and confirm the landing page retains UTMs.
- Reuse the same conventions everywhere (ads, emails, affiliates, QR codes).
Setup checklist (by channel)
1
Paid social (Meta, TikTok, Snapchat, etc.)
Ensure every ad destination URL has UTMs. If the platform supports templates, use a single template so your whole account stays consistent.
2
Paid search (Google, Microsoft)
Tag final URLs with UTMs. If you use auto-tagging (click IDs), still set UTMs for human-readable reporting.
3
Email / SMS (Klaviyo, Attentive, etc.)
Tag every link, including buttons and image links. Email/SMS is a common source of
(direct) / (none) if links aren’t consistently tagged.4
Affiliates / influencers
Give each partner a tagged URL (or short link that redirects to a tagged URL). Decide whether you want partner-level detail in
utm_source or utm_content.5
Partnerships, PR, podcasts, offline
Use tagged vanity URLs/QR codes that redirect to your UTM-tagged landing page. Pair with a post-purchase survey to validate discovery.
Examples (copy/paste)
Paid social adStandard Channel Groupings
Adopting a standard taxonomy helps ensure your data maps correctly to channels in SourceMedium and Google Analytics.| Channel | utm_source | utm_medium |
|---|---|---|
| Paid Social | facebook, instagram, tiktok | paid_social, cpc |
| Paid Search | google, bing | cpc, paid_search |
klaviyo, mailchimp | email | |
| SMS | attentive, postscript | sms |
| Affiliate | shareasale, impact | affiliate |
| Organic Social | instagram, tiktok, youtube | social, organic |
QA: how to verify UTMs are working
- Click a test link with UTMs and confirm the landing page URL includes the UTM parameters.
- Add a product and proceed to checkout; confirm UTMs aren’t dropped during the journey (cross-domain and checkout flows are common break points).
- In SourceMedium, spot-check recent orders to confirm expected
utm_source/utm_mediumvalues appear (and aren’t falling back to(direct) / (none)).
If checkout or privacy features drop UTMs, Shopify Plus teams often add a server-side backup by capturing UTMs into order attributes at checkout.
Common mistakes (and how to avoid them)
- Inconsistent casing (
Metavsmeta) → standardize to lowercase - Overlapping meanings (
utm_source=paid_social) → keepsourcefor the platform,mediumfor the motion - Untagged email/SMS links → tag all links (buttons + images), not just one CTA
- Changing conventions mid-stream → don’t rename sources/mediums without a migration plan (reporting will split)
UTMs vs click IDs (gclid, fbclid, etc.)
Click IDs can help identify an ad click, but they don’t replace a consistent UTM taxonomy. In SourceMedium, click IDs can act as a fallback-only inference for the channel-level source when explicit UTMs are missing.External resources
- Google Campaign URL Builder — Official tool for generating tagged URLs
- Google Analytics: Custom URL collection — Google’s official UTM documentation
Related resources
What is last-click attribution?
How UTM-based last-click attribution works in SourceMedium.
Improve Last-Click Attribution
Practical best practices and common pitfalls.
Attribution Source Hierarchy
How SourceMedium selects the winning source when multiple signals exist.
Attribution Health
Diagnose common attribution gaps like
(direct) / (none).Backfilling UTM Attribution via Order Attributes
Developer guide for Shopify order-attribute capture and backfills.

