UTM parameters
Also called UTM tags, UTM codes, campaign parameters
UTM parameters are tags added to the end of a link, like ?utm_source=newsletter&utm_medium=email, that tell analytics tools where a visit came from. Always set source, medium and campaign. Shopify, GA4 and attribution tools all read them to decide which channel gets credit for a visit and, later, a sale.
Sailesh B · Last updated
What a tagged link looks like
https://yourstore.com/products/linen-shirt?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_content=hero_button
Everything after the ? is for tracking. The page loads exactly the same with or without it. When the visitor lands, your analytics tools read the tags and record the visit as: from the newsletter, by email, for the spring sale, via the hero button.
UTM stands for Urchin Tracking Module. Urchin was the analytics company Google bought in 2005 and turned into Google Analytics. The name stuck, and today almost every analytics and attribution tool reads the same tags.
The parameters
Google lists nine (GA4 help):
| Parameter | What it records | Example |
|---|---|---|
utm_source | Who sent the visit | newsletter, instagram, google |
utm_medium | The type of traffic | email, social, cpc |
utm_campaign | The promotion or launch | spring_sale |
utm_content | Which link or creative | hero_button, video_15s |
utm_term | The paid search keyword | linen shirt |
utm_id | A campaign ID that matches your cost data | sp26_001 |
utm_source_platform | The platform that bought the traffic | dv360 |
utm_creative_format | The kind of creative | video |
utm_marketing_tactic | The targeting approach | prospecting |
Google says to always set source, medium and campaign. A visit missing them shows (not set) in GA4. The last two aren't reported in GA4 yet, so most stores can skip them.
Values are case-sensitive. utm_source=Instagram and utm_source=instagram become two separate sources in your reports. Use lowercase for everything.
How each tool reads them
The same link gets read three different ways.
GA4 sorts every visit into a channel (Email, Paid Social, Organic Search and so on) using source and medium. It matches the medium against a fixed list, so utm_medium=email lands in Email, but a made-up medium like newsletter usually lands in Unassigned (channel rules).
Shopify reads the UTMs on the page a visitor lands on and uses them in its marketing reports, alongside the referring site for visits without tags. Shopify reorganised these reports in September 2026: Performance by marketing campaign replaced the old UTM campaign report, and Performance by marketing channel now includes organic and referral traffic, so its totals may be higher than before (Shopify Help).
Attribution tools like Prism read the UTMs on every landing visit, store them with the visitor's journey, and use them to credit the order when it comes in. Here the medium matters most: it's usually what separates a paid click from an organic one.
Ad platforms add their own tags
You don't always type UTMs by hand.
- Google Ads adds a
gclidto every ad click when auto-tagging is on. By default GA4 uses thegclidand ignores manual UTMs on those clicks, so your Google Ads campaign names come through anyway (Google Ads Help). Agclidonly means something to Google, though. It tells other tools the click was a Google ad, not which campaign, so add UTMs (or a campaign ID) to Google Ads too if you want them to see it. - Meta has a URL parameters field on each ad where you can use dynamic values like
{{campaign.name}}and{{ad.name}}. Meta fills them in on every click. Meta also adds its ownfbclid, which tells you a visit came from Facebook or Instagram but not whether it was an ad. - TikTok supports macros like
__CAMPAIGN_NAME__and__CID_NAME__in the URL (TikTok Help).
Dynamic names are filled in from the ad's current name, so renaming a campaign mid-flight can split its reporting. Many teams pass IDs ({{campaign.id}}) as well as names for that reason.
Mistakes that move sales to "direct"
A bad UTM doesn't throw an error. It quietly changes where your sales are counted.
- No UTMs on an email, SMS or influencer link. Mobile apps often hide the referrer, so the visit shows up as direct.
- A redirect or link shortener that drops the tags before the page loads. Click your own link and check the address bar.
- UTMs on your own internal links. A homepage banner tagged
utm_source=newsletterrelabels every visitor who clicks it, halfway through their visit. - Inconsistent naming.
Facebook,facebookandfbbecome three sources, and none of them looks big enough to matter. - Personal data in a tag. Never put an email address in a UTM value.
Our free UTM builder lowercases values, keeps your existing link parameters, and won't add a second set of tags.
How this shows up in Shopify
Untagged traffic is the main reason Shopify shows a large share of orders as direct or unattributed. Each Meta or Google ad, email or text message without tags is a sale Shopify can't credit to its channel. Tagging every link you send is the single cheapest fix for messy Shopify attribution. Our UTM setup guide lists the exact values to use on each ad platform.
How Prism handles it
Prism reads UTMs and click IDs on every landing visit and keeps them with the visitor's journey, so a Shopify order is credited to the tagged visits that led to it, even when the buyer comes back days later without tags.