Shopify UTM Tracking:
The Complete Setup Guide
Stop guessing which campaigns drive sales in your Shopify store. This guide covers everything — UTM parameters explained, GA4 integration, channel-by-channel templates, and how to fix the Shopify vs. GA4 attribution gap.
In This Guide
What is UTM Tracking?
UTM tracking is the practice of adding small text snippets — called UTM parameters — to the end of any URL you share in your marketing campaigns. When a visitor clicks that URL, the parameters are captured by your analytics platform and stored against their session, telling you exactly which campaign, channel, and piece of content brought them to your store.
A UTM-tagged URL looks like this:
https://yourstore.myshopify.com/products/product-name?utm_source=instagram&utm_medium=paid_social&utm_campaign=summer_launch_may2026
The URL before the ? is your normal Shopify product URL. Everything after is UTM tracking data — invisible to the shopper, but invaluable to you.
Don't build UTM URLs by hand — typos in parameter names break tracking silently. Use the free UTM builder at findbest.tools to generate error-free tagged URLs for every campaign.
Why UTM Parameters Were Created
The name comes from Urchin Tracking Module — Urchin Software being the analytics company that Google acquired in 2005 to build Google Analytics. The five standard parameters have remained essentially unchanged since then, which is why every major analytics platform (GA4, Mixpanel, Amplitude, Heap, Adobe Analytics) recognizes and processes them automatically.
Why Your Shopify Store Needs UTM Tracking
Shopify merchants run marketing across more channels than almost any other type of business — paid ads on Meta and Google, organic social, email via Klaviyo or Shopify Email, influencer partnerships, SMS, affiliate programs, and more. Without UTM tracking, all of this activity produces the same result in your analytics: mystery.
Here's what happens to your traffic data without UTMs:
- Email clicks appear as "direct" traffic
- Instagram traffic is missing or wrong
- Can't compare paid vs organic social
- Influencer ROI is completely invisible
- Can't tell which ad creative drove sales
- Budget decisions based on guesswork
- Every channel attributed correctly
- Campaign-level revenue visible in Shopify
- Paid vs organic clearly separated
- Individual influencer performance tracked
- A/B test ad creatives by conversion rate
- Scale spend based on actual data
The Hidden Cost of Missing UTMs
The most damaging effect of missing UTM tags isn't just incomplete data — it's misattribution. When your email campaign drives 400 sessions and 30 purchases but those sessions are labeled "direct," you might conclude your email strategy isn't working and cut it. In reality, it's your highest-ROI channel.
For Shopify merchants spending on paid ads, this problem is especially acute. Every dollar of ad spend that can't be attributed is a dollar that can't be optimized.
The 5 UTM Parameters for Shopify
There are five standard UTM parameters. Three are required for meaningful tracking; two are optional but highly valuable for Shopify stores.
| Parameter | Required? | What It Tracks | Shopify Example |
|---|---|---|---|
| utm_source | ✅ Yes | Where traffic comes from | facebook, klaviyo, google |
| utm_medium | ✅ Yes | The marketing channel type | email, cpc, paid_social |
| utm_campaign | ✅ Yes | The specific campaign | summer_sale_jun2026 |
| utm_content | Optional | Which creative or link was clicked | hero_image, influencer_handle |
| utm_term | Optional | Keyword (paid search only) | buy+running+shoes |
utm_source — The Platform
This identifies the specific platform or publisher that sent the traffic. For Shopify stores, common sources include facebook, instagram, google, tiktok, klaviyo, newsletter, and the name of any affiliate or influencer partner. Always use the canonical, lowercase platform name.
utm_medium — The Channel Type
This is the type of marketing channel. For GA4 to correctly categorize traffic into its default channel groups, you must use specific medium values. GA4 only recognizes a fixed set of mediums by default — anything outside this list lands in "Unassigned" and disappears from channel reports.
GA4 recognizes: cpc, email, social, referral, organic, affiliate, display. Using paid instead of cpc, or paid-social instead of paid_social, will push traffic into "Unassigned" in GA4 while it appears correctly in Shopify Analytics — causing the infamous Shopify vs GA4 discrepancy.
utm_campaign — The Initiative
All links across all channels for a single campaign should share the same utm_campaign value. This lets you see total campaign performance (sessions, conversions, revenue) across every source in a single report view. Use descriptive, date-stamped names: summer_launch_jun2026 beats launch every time.
utm_content — Essential for Shopify Influencer & Ad Tracking
While optional in other contexts, utm_content is particularly valuable for Shopify merchants who work with influencers or run multiple ad creatives. Assign each influencer a unique utm_content value (utm_content=influencer_johndoe) — this lets you track individual influencer ROI even when all influencer campaigns share the same source and campaign tag.
How Shopify Reads UTM Parameters
Shopify has built-in UTM awareness, but it works differently from Google Analytics — and understanding this distinction prevents a lot of confusion.
What Shopify Stores on Orders
When a customer clicks a UTM-tagged link and completes a purchase in the same session, Shopify stores the UTM parameter values directly on the order record. You can see this in the Shopify Admin under Orders → [Order] → Conversion summary.
The UTM data appears in:
- Orders → Conversion summary: Shows the UTM source/medium/campaign for that order
- Analytics → Reports → Marketing: Campaign-level sales data
- Analytics → Reports → Acquisition: Traffic by source
Shopify Attribution: Last-Click, Same-Session
Shopify uses last-click, same-session attribution. This means:
- Only the final UTM tag before purchase gets credit
- If the customer closes the browser and comes back later, Shopify may not attribute the sale to the original campaign
- Cross-session journeys are credited to the last session source
This is why Shopify and GA4 numbers often disagree — they use different attribution windows and models. We cover how to reconcile this in the Attribution Gap section.
On Shopify Plus stores using a custom checkout domain, UTM parameters can be stripped during the checkout handoff. If you're on Shopify Plus, verify that UTM data survives checkout by test-purchasing with a tagged link and checking the resulting order's conversion summary.
Connecting GA4 to Your Shopify Store
For full UTM campaign analysis — multi-session attribution, engagement metrics, conversion funnels — you need Google Analytics 4 connected to your Shopify store. GA4 gives you everything Shopify Analytics doesn't: engagement rate, average session duration, user journeys, and full UTM dimension breakdowns.
-
1Create a GA4 Property
Go to analytics.google.com → Admin → Create Property. Select "Web" and enter your Shopify store URL. Note your Measurement ID (format: G-XXXXXXXXXX).
-
2Install via Shopify's Google & YouTube App
In Shopify Admin → Apps → Google & YouTube. Connect your Google account, select your GA4 property. The app automatically adds the GA4 tracking script to all Shopify pages including checkout (on Shopify Plus).
-
3Or install via Google Tag Manager
For more control: install GTM on Shopify (add GTM snippets to theme.liquid), then fire your GA4 tag through GTM. This gives you event-level flexibility without touching code for every new tag.
-
4Configure GA4 Ecommerce Events
Enable Enhanced Ecommerce to capture
purchase,add_to_cart,begin_checkout, andview_itemevents. Markpurchaseas a conversion. This connects UTM data to actual revenue. -
5Verify UTM Data is Flowing
Click a UTM-tagged link to your store, then check GA4 → Realtime → Traffic Sources. You should see your UTM source and medium appear within seconds of the click.
Finding UTM Data in GA4
Once GA4 is connected and you're generating UTM-tagged traffic:
- Reports → Acquisition → Traffic Acquisition: Change dimension to "Session source/medium" or "Session campaign"
- Reports → Acquisition → Traffic Acquisition → Session campaign: See revenue and conversions per campaign
- Explore → Free Form: Add "Session manual ad content" dimension for
utm_contentdata - Advertising → Attribution → Conversion Paths: See multi-touch journeys across campaigns
Build Your Shopify UTM Links in Seconds
Use the free UTM builder — enter your Shopify product or landing page URL, fill in the fields, copy the tagged link. No typos, no formatting errors.
Open UTM Builder → findbest.toolsUTM Templates by Channel
Copy these templates for every channel your Shopify store uses. Replace values in brackets. Build each URL at findbest.tools/utility/utm-builder.
Meta Ads (Facebook & Instagram)
| Surface | utm_source | utm_medium | utm_content |
|---|---|---|---|
| Facebook Feed Ad | facebook | cpc | carousel_v1 |
| Instagram Feed Ad | instagram | cpc | single_image_v2 |
| Instagram Story Ad | instagram | cpc | story_ad |
| Facebook Organic Post | facebook | social | feed_post |
| Instagram Organic Story | instagram | social | story |
| Instagram Bio Link | instagram | social | bio |
https://yourstore.com/products/item?utm_source=facebook&utm_medium=cpc&utm_campaign=summer_sale_jun2026&utm_content=carousel_v1
Meta's auto-generated UTM template sets utm_medium=paid — which GA4 does not recognize as Paid Social. This pushes all your Meta ad traffic into "Unassigned." Always override with utm_medium=cpc in the ad's URL Parameters field.
Email Marketing (Klaviyo, Shopify Email, Mailchimp)
| Email Type | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Newsletter / Broadcast | newsletter | email | newsletter_may2026 |
| Abandoned Cart Flow | klaviyo | email | flow_abandoned_cart |
| Welcome Series | klaviyo | email | flow_welcome_email1 |
| Post-Purchase Flow | klaviyo | email | flow_post_purchase |
| Win-Back Campaign | newsletter | email | winback_apr2026 |
https://yourstore.com/collections/sale?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_jun2026&utm_content=hero_cta
Google Ads
For Google Ads, enable auto-tagging in the Google Ads account settings — this adds the gclid parameter automatically. However, also set manual UTMs in your final URL suffix so Shopify Analytics can read campaign data (it doesn't read gclid).
https://yourstore.com/products/item?utm_source=google&utm_medium=cpc&utm_campaign=brand_search_jun2026&utm_term={keyword}
TikTok Ads
https://yourstore.com/products/item?utm_source=tiktok&utm_medium=cpc&utm_campaign=summer_ugc_may2026&utm_content=video_v1
Influencer Marketing
Give every influencer a unique utm_content value. This lets you compare revenue per influencer even when they're all promoting the same campaign.
https://yourstore.com/products/item?utm_source=instagram&utm_medium=influencer&utm_campaign=influencer_summer2026&utm_content=@janedoe
SMS Campaigns
https://yourstore.com/collections/sale?utm_source=sms&utm_medium=sms&utm_campaign=flash_sale_may2026
For SMS, always shorten the UTM URL. Long URLs look suspicious in text messages and reduce click rates.
Affiliate & Referral Partners
https://yourstore.com?utm_source=partner_name&utm_medium=affiliate&utm_campaign=affiliate_program_2026
Fixing the Shopify vs. GA4 Attribution Gap
The single most frustrating aspect of Shopify UTM tracking is the gap between Shopify Analytics numbers and GA4 numbers. The same campaign shows different sessions, conversions, and revenue in each platform. Here's exactly why — and how to minimize it.
Why the Numbers Disagree
| Factor | Shopify | GA4 |
|---|---|---|
| Attribution model | Last-click, same-session | Data-driven (or last-click) |
| Attribution window | Session only | Up to 90 days (configurable) |
| Bot/spam filtering | Minimal | More aggressive |
| Checkout tracking | Native (all orders) | Requires correct setup |
| Returns/refunds | Adjusts revenue | Doesn't auto-adjust |
Three Steps to Reduce the Gap
-
1Standardize medium values to GA4 defaults
Use only GA4-recognized medium values:
cpc,email,social,affiliate,referral,display. This single change closes 80% of the channel-grouping disagreements between Shopify and GA4. -
2Verify GA4 purchase events are firing correctly
In GA4 → Realtime, complete a test purchase and confirm the
purchaseevent fires with the correct revenue value. If purchase events are missing or undercounting, your GA4 conversion data will always be lower than Shopify. -
3Use Shopify as your revenue source of truth
Treat Shopify Analytics as the definitive revenue number (it processes actual payments) and GA4 as your campaign attribution and behavior analysis tool. Don't try to make them match exactly — use each for what it's best at.
UTM Naming Convention for Shopify Stores
Consistent naming conventions are what separate clean, trustworthy analytics from a fragmented mess. Here is a complete naming system optimized for Shopify merchants.
The Core Rules
- Always lowercase —
facebooknotFacebook - No spaces — use underscores:
summer_salenotsummer sale - No special characters — no &, #, %, !, @
- Date-stamp campaigns —
sale_may2026not justsale - Keep values consistent — one name per platform, forever
Shopify Campaign Naming Formula
[channel]_[description]_[month][year]
Examples:
email_abandoned_cart_flow (evergreen)
email_newsletter_may2026 (broadcast)
paid_summer_sale_jun2026 (paid ads)
social_product_launch_apr2026 (organic social)
influencer_collab_johndoe_may2026 (influencer)
Approved Source Values for Shopify
| Platform | utm_source | utm_medium |
|---|---|---|
| Facebook Ads | facebook | cpc |
| Instagram Ads | instagram | cpc |
| Google Shopping | google | cpc |
| TikTok Ads | tiktok | cpc |
| Pinterest Ads | pinterest | cpc |
| Klaviyo Email | klaviyo | email |
| Newsletter | newsletter | email |
| SMS | sms | sms |
| Organic Instagram | instagram | social |
| Influencer | instagram (or platform) | influencer |
| Affiliate | [partner_name] | affiliate |
Common UTM Mistakes Shopify Merchants Make
Never add UTM parameters to links that go between pages within your own Shopify store. If a visitor lands from an Instagram ad and then clicks an internal banner with UTM parameters, Shopify and GA4 reset their session — and your Instagram ad gets zero credit for the eventual purchase. UTMs are for external links only.
Using utm_medium=paid or utm_medium=paid-social instead of utm_medium=cpc pushes paid traffic into GA4's "Unassigned" channel. Always use cpc for any paid placement, regardless of platform.
Most Shopify merchants tag their broadcast emails but forget to tag automated flows — abandoned cart, welcome series, post-purchase. These flows are often your highest-converting traffic sources. Tag every link in every flow.
A typo like utm_souce instead of utm_source breaks tracking invisibly. The URL still works — the shopper lands on your product page — but zero tracking data is captured. Use findbest.tools/utility/utm-builder for every single UTM URL.
Your Instagram bio link is often one of your highest-traffic URLs. Without a UTM tag, all that traffic arrives as "direct" — completely invisible in your attribution reports. Tag it with an evergreen campaign and update the campaign name when actively promoting something specific.
Frequently Asked Questions
Start Tracking Your Shopify Campaigns Right Now
Every campaign you run without UTM links is invisible in your analytics. It takes 30 seconds to build a tagged link — and the data it gives you is worth far more than that.
Build Free UTM Links at findbest.toolsFree, no signup required. Works for any Shopify store URL.