You're running Meta ads, a TikTok campaign, a weekly email and a couple of influencer posts. Shopify shows a nice sales total, but when you ask "which of those actually brought people in?", the answer is a pile of "direct" and "unknown". The fix is cheap and boring and works: UTM tracking.
This guide shows how UTM tracking works on Shopify, where Shopify shows the data, how to tag links for each channel, and the handful of mistakes that quietly break it between the click and the checkout.
If UTMs are new to you, start with our plain-English guide to UTM parameters . The short version is below.
What UTM tracking is, in one minute
UTM parameters are labels you add to the end of a link so your analytics knows where a visitor came from. They look like this:
yourstore.com/products/candle?utm_source=instagram&utm_medium=paid_social&utm_campaign=autumn_launch
Everything after the ? is the tag. The common ones are:
utm_source: who sent the visitor, likefacebook,tiktok,googleorklaviyo.utm_medium: what kind of traffic, likepaid_social,cpc(paid search) oremail.utm_campaign: which campaign, likeautumn_launch.utm_content: which ad or link, useful when one campaign has several.utm_term: the keyword, mostly for search ads.
The tags don't change the page. The shopper sees the same candle. Your store just reads the labels when they arrive.
How Shopify uses UTM parameters
When someone lands on your store, Shopify starts a session (one visit, made up of all the pages viewed in one go) and remembers where that session came from: the referring site, the landing page, and any UTM parameters on the link. It keeps track of that visit with a cookie, which is a small note stored in the shopper's browser.
When the shopper later buys, Shopify connects the order to the sessions that came before it. So the UTMs only need to be on the link people land on. They don't have to survive on every page, and they don't need to be in the checkout address.
There's one condition worth knowing up front: where you show a cookie banner, Shopify only counts sessions from visitors who accept. Visitors who decline, or who browse in private mode with cookies blocked, can leave an order with little or no visit history attached.
Where to see UTM data in Shopify
Acquisition reports
In Analytics, open Reports and find Sessions by referrer. It shows how visitors arrived. You can add UTM columns, like the UTM campaign source and name, to see your tagged traffic.
Shopify also groups traffic into tidier dimensions: [referring channel](https://help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/analytics-fields) (Instagram, Google), referring platform (Meta, Google), referring medium (social, search, email) and traffic type (direct, organic, paid). Those are cleaned up and standardized. The UTM columns, by contrast, show the raw values exactly as you typed them, which is why consistent naming matters (more on that below).
These reports count visits, not sales.
Marketing reports
For sales, look at Shopify's marketing reports, such as [Performance by marketing channel](https://help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/default-reports/marketing-reports) and Performance by marketing campaign. Traffic that arrives with a utm_campaign on the link is treated as marketing, and the campaign report shows orders attributed to each campaign.
By default these reports use the last non-direct click model over the last 30 days. An attribution model is the rule for which visit gets credit for a sale. "Last non-direct click" gives all the credit to the last visit that came from somewhere other than typing your address directly. You can switch models inside the report, and it's worth doing before you compare Shopify's numbers with Google Analytics or an ad platform, because they often use different rules.
On each order
Open any order and look for the conversion summary. It shows how many orders that customer has placed, how many visits they made in the last 30 days, and where their first visit came from. Select View conversion details for a timeline, and View full sessions to see each visit's referrer, landing page and UTM tags.
This is the best place to sanity-check your tagging. Pick five recent orders from a campaign and see whether the UTMs you expected are there.
How to tag links for each channel
Meta (Facebook and Instagram) ads
In Ads Manager, each ad has a URL parameters field below the website URL. Put your UTMs there instead of in the URL itself, and use Meta's dynamic values so you never type a campaign name by hand:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
Meta fills in the real names when the ad is shown. Meta also adds its own click ID, fbclid, to every click. That's fine, leave it there.
TikTok ads
TikTok has a URL builder and an option to add UTM parameters to ad URLs automatically. If you write your own, TikTok's macros fill in the names for you: __CAMPAIGN_NAME__ for the campaign, __AID_NAME__ for the ad group, and __CID_NAME__ for the ad. For example:
utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__&utm_content=__CID_NAME__
Google Ads
Keep Google's [auto-tagging](https://support.google.com/google-ads/answer/3095550) on. It adds a click ID called gclid that Google relies on for its own reporting. If you also want UTMs, add them in the [final URL suffix](https://support.google.com/google-ads/answer/9054021) at the account or campaign level, using Google's ValueTrack values such as {campaignid} and {adgroupid}, so you don't have to tag every ad separately.
Email and SMS
Most email tools can add UTMs to every link for you. Klaviyo, for example, has a UTM tracking setting that does this. Check it's switched on, and that the source and medium come out as something sensible like klaviyo and email.
Influencers, link-in-bio and everything else
Give each partner their own link with their own utm_campaign or utm_content. A free UTM builder or a shared spreadsheet keeps the naming consistent. Test the final link yourself before you send it.
Five mistakes that break Shopify UTM tracking
1. Inconsistent names
Because the UTM columns show raw values, Facebook, facebook and fb show up as three different sources. Pick one spelling per source and medium, write it down, and use lowercase everywhere.
2. Redirects that drop the tags
A link shortener, a link-in-bio tool, or a redirect on your own store can send people to the right page but strip off everything after the ?. The shopper arrives fine, the UTMs don't. Click your own links and check the address bar when the page loads.
3. Tagging your own internal links
Never put UTMs on links within your own site, like a homepage banner pointing to a sale page. A tagged internal link tells your analytics the visitor just arrived from a new source, which overwrites where they really came from.
4. Landing on a different domain first
If your ad sends people to a landing page or quiz on another domain, and that page then links to your Shopify store, the UTMs stay behind on the first domain unless that page passes them along. Either link ads straight to your store or make sure the hand-off link carries the same tags.
5. Expecting UTMs to explain everything
UTMs tell you about the visit a shopper landed on, and Shopify's reports give credit by a fixed rule. Someone who clicked a TikTok ad on Monday and came back through a Google search on Thursday is one person with two sources. Which one "gets" the sale depends on the model. That's the question multi-touch attribution is built to answer, and our guide to marketing attribution models shows how the choice changes the numbers.
A simple Shopify UTM checklist
- Write a naming guide: one spelling per source and medium, all lowercase.
- Use dynamic values in Meta, TikTok and Google so campaign and ad names fill in on their own.
- Turn on automatic UTMs in your email and SMS tools.
- Test every new link by clicking it and checking the address bar.
- Leave internal links untagged.
- Check five orders a month in the conversion summary to confirm tags are arriving.
- Pick an attribution model on purpose in the marketing reports, and use the same one when you compare.
How Soran handles it
Soran reads the same kind of signals, and adds what Shopify's reports leave out.
- Visits land in the right channel. Clean UTM tags put your visits in the right channel in Soran too, and you see channel, campaign, ad set and ad levels together.
- Spend matched to the exact ad. Soran uses tracking parameters on your Meta and TikTok ad URLs and imports spend from those accounts, so each order is tied to the specific ad behind it, with ROAS at every level. Google Ads spend import is coming soon, so Google visits still rely on your UTMs for their channel.
- Credit split once per order. Each order's credit is shared across the visits that led to it, using the model you pick from ten, and every number updates when you switch. Totals add up to what your store actually took.
- Purchases recorded server-side, so ad blockers and closed tabs don't lose the sale even when the browser does.
- Honest gaps. If a channel shows revenue but no connected spend, Soran flags it as a probable unconnected ad account rather than showing a flattering ROAS.
Frequently asked questions
Does Shopify track UTM parameters automatically?
Yes. Shopify records the UTM parameters on the link a visitor lands on and ties them to that session. You still have to put the tags on your links: Shopify can only read what's there.
Where can I see UTM campaigns in Shopify?
In Analytics, the Sessions by referrer report lets you add UTM columns for traffic, and the marketing reports, such as Performance by marketing campaign, show orders by campaign. On a single order, the conversion summary shows each visit's UTM tags.
Do UTM parameters need to stay on the URL through checkout?
No. They only need to be on the landing page link. Shopify connects later pages and the order to that session.
Why are my Shopify orders showing as direct?
Common causes: links without UTMs, redirects that strip the tags, shoppers who declined cookies or browsed privately, and people who simply typed your address the second time. Shopify's default last non-direct click model already skips a final direct visit when there's an earlier tagged one in the window.
Should I use UTMs on Google Ads if auto-tagging is on?
You can, and many stores do. Keep auto-tagging on for Google's own reporting, and add UTMs through the final URL suffix so other tools that read UTMs see Google traffic correctly.
Want every Shopify order tied to the exact ad and visits that led to it? Book a demo and we'll walk through your numbers.