What UTM parameters are and how Shopify uses them
By the AdZoom team · Published
UTM parameters are labels added to the end of a link that say where a visit came from. UTM tracking is reading those labels afterward, to see which email, post, or ad brought a visitor.
Shopify works with five: source, medium, campaign, term, and content. It records them on the visit and on the order that follows, so a sale can be traced back to the link that started it.
The five UTM parameters
UTM is short for Urchin Tracking Module, as Shopify's page on marketing reports spells it out. Each parameter is a name and a value joined by an equals sign, such as utm_source=newsletter. The names are fixed. The values are yours to choose.
| Parameter | What it says | Example values |
|---|---|---|
utm_source | Where the visit came from, such as a search engine, a social app, or your newsletter | google, facebook, newsletter |
utm_medium | The kind of marketing the link belongs to | cpc, email, social |
utm_campaign | The campaign, promotion, or sale the link is part of | spring_sale |
utm_term | The paid keyword | linen_sheets |
utm_content | Which ad, banner, or button was clicked, when one campaign has several | blue_banner |
The descriptions follow Google Analytics' page on URL builders and Shopify's page on campaigns, both read on 14 November 2026. Google's page lists four more. This article keeps to the five on Shopify's list.
Google's page says to always use source, medium, and campaign when you add parameters to a link. Term and content are there for when you need them.
A link before and after the parameters
Take a Shopify store that sells linen bedding. It emails its list about a spring sale, and the button at the top of the email leads to a duvet cover. The plain link looks like this.
https://www.example.com/products/linen-duvet-cover
The same link with UTM parameters looks like this.
https://www.example.com/products/linen-duvet-cover?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_content=header_button
| Part | What it does |
|---|---|
? | Ends the page's address and starts the parameters |
utm_source=newsletter | The visit came from the store's newsletter |
& | Separates one parameter from the next |
utm_medium=email | The newsletter is an email |
utm_campaign=spring_sale | The link belongs to the spring sale |
utm_content=header_button | The shopper clicked the button at the top, not a link further down the same email |
Google's page gives the same rules. A question mark goes before the parameters, an equals sign inside each pair, and an ampersand between pairs. The pairs can come in any order.
There is no utm_term here because no keyword is involved. The shopper lands on the same product page either way, and the labels travel with the address. If a link already contains a question mark, join your parameters to it with an ampersand, not with a second question mark.
How Shopify uses UTM parameters
Shopify reads the UTM values from the address the shopper lands on. It keeps them with the visit, and with the order when the visit leads to one. This is where you meet them afterward.
On the order
Go to Orders in your Shopify admin, click the order number, then open Conversion summary › View conversion details › View full sessions. The details of a visit can include where the shopper was referred from, the page they landed on, and the UTM parameters.
Shopify's page says the details can take up to 48 hours to appear. Some orders have none. Shopify gives three possible reasons: an app or a private browser blocked cookie tracking, the order started as a draft, or it came through a sales channel other than Online Store or Hydrogen.
In reports
Shopify's analytics fields include UTM source and UTM campaign for visits to your store. For orders there are five: Order UTM source, Order UTM medium, Order UTM campaign, Order UTM term, and Order UTM content. You can group or filter a report by any of them.
The marketing reports are Performance by marketing channel, Performance by marketing campaign, and Sales attributed to marketing. In the first two you can choose an attribution model, such as last click or first click. For why their figures and the ad platform's can differ, see why Ads Manager, Google Ads, and Shopify report different sales.
In Campaigns
Under Growth › Campaigns, Shopify can assign visits to a campaign through an auto-match rule. A rule names one or more parameters, for example utm_campaign with utm_source, and a visit has to match all of them. Shopify's page adds: "All additional parameters from the landing page are ignored."
In Shopify's own tools
Shopify Messaging tags the links in its emails by default with utm_source=shopify_email, utm_medium=email, and a utm_campaign made of the email's name and its activity ID. You change them under Apps › Messaging › Settings › UTM tracking. Visits the Shop app sends show shop_app as their UTM source in the Sessions by referrer and Sessions over time reports.
What apps receive
Shopify keeps five UTM values for each visit that leads to an order: source, medium, campaign, content, and term. Apps read those five from the order. The order does not carry the rest of the landing address, so an app reading it gets no click id such as gclid or fbclid.
AdZoom is one of those apps. It matches each order's UTM values to the ad that sent it, which is how it knows what a campaign's orders earned.
Values the ad platform fills in
On an ad you don't have to type every value. Ad platforms offer placeholders that they replace with the real value on each click. On Meta, {{ad.id}} becomes the id of the ad that was clicked. On Google Ads, {campaignid} becomes the campaign's id. Every ad or campaign then sends its own values without a separate link for each. The free UTM builder has a ready set for each platform, and the Meta guide and the Google Ads guide say where each one goes.
Mistakes that hide where a sale came from
No parameters at all
The order arrives with no UTM values. Its visit details can still list a referring source, but nothing names the campaign or the ad.
The same values on every ad
Suppose the bedding store runs three ads and types the same values into all of them, utm_campaign=spring_sale included. The ads bring 40 orders. All 40 carry the same values, so the UTM values can tell you the spring sale ads brought 40 orders and can't tell you which of the three ads brought them. One value that differs per ad fixes it. The builder's Meta preset puts the ad's id in utm_content.
One campaign spelled several ways
Shopify's analytics fields page puts a note on its UTM campaign field: "Requires consistent UTM naming conventions." Decide how you write each campaign's name before the first link goes out, and write it that way on every link.