Skip to content

How to set up UTM parameters on Shopify, step by step

Create a campaign in Shopify's Growth section, add one shareable link per placement with utm_source, utm_medium and utm_campaign, and keep Google Ads on auto-tagging. Then read the result in GA4's Traffic acquisition report and Shopify's Performance by UTM campaign report.

By , Founder & CEOUpdated 7 min read

Run the numbers for your store: the free UTM builder.

You usually set up UTM parameters on Shopify in three moves. Create a campaign under Growth > Campaigns and add a shareable link with utm_source, utm_medium and utm_campaign. Put that link in your emails, posts and ads, and leave Google Ads on auto-tagging. Then check GA4's Traffic acquisition report for clean rows.

Step by step

  1. Write the naming rules before you tag anything. Decide one lowercase source per platform, one medium per channel and one campaign name per push. GA4's own best practices ask for exactly that. Path: Analytics Help, URL builders, UTM best practices.
  2. Choose mediums GA4 can sort. Use email for newsletters, social for unpaid posts, paid_social for social ads and affiliate for creators paid per sale. Each one matches a rule in GA4's default channel group, so none of it drifts into Unassigned. Path: Analytics Help, Default channel group, Channels for manual traffic.
  3. Check your store can use Campaigns. Shopify needs the Basic plan or higher, an online store that isn't headless, and a desktop device. Staff also need the Marketing permission. Path: Shopify Help, Creating campaigns, Requirements for creating campaigns.
  4. Create the campaign. From your Shopify admin, go to Growth, click Campaigns, then Create campaign. Type a name in the Campaign name field and click Save. Path: Growth > Campaigns > Create campaign.
  5. Add one shareable link per placement. In the Shareable links section, click +, select a Destination and enter a Short link handle. Fill in the Additional UTM parameters section, then click Done. Path: Growth > Campaigns > your campaign > Shareable links > +.
  6. Use the right link type. The full URL carries your unique tracking ID, and Shopify says it is the one for ad managers. Short links and QR codes are public, so they suit posts, print and packaging. Path: Shareable links > click the link > Copy icon, or Download for the QR code.
  7. Catch traffic you tagged elsewhere. If a Klaviyo flow or an older ad already carries UTMs, add an auto-match rule with the same values. Shopify then matches those sessions to this campaign. Path: your campaign > Auto-match rule > + > Save.
  8. Leave Google Ads on auto-tagging. Click the Admin icon, then Account settings, then the Auto-tagging section. Keep "Tag the URL that people click through from my ad" checked, and click Save if you changed it. Path: Admin > Account settings > Auto-tagging.
  9. Click every link once before it ships. Open each one and check that the page loads with the parameters still in the address bar. Google's help warns that redirects must pass its click ID through to the final landing page, and your UTMs need the same courtesy. Path: none, just your browser.
  10. Read the result in GA4. From the left menu, select Reports, then Acquisition > Traffic acquisition. The report holds Session source / medium and Session campaign next to the default channel grouping. Path: Reports > Acquisition > Traffic acquisition.
  11. Read the result in Shopify. From your Shopify admin, go to Analytics > Reports, click the Category filter and click Marketing. Then open Performance by UTM campaign. Path: Analytics > Reports > Category > Marketing > Performance by UTM campaign.

A worked example

Take one store's export: Store A, 1 January 2024 to 21 August 2026. Its Channels sheet shows Direct at 57.7% of revenue and Paid Social at 0.0%, in last click, first click and touched views alike. Untagged or mistagged traffic can produce exactly that picture, though the export alone cannot say whether it did.

For illustration, say the store plans an autumn restock: a Klaviyo newsletter, a Meta ad and an unpaid Instagram post. First comes the naming sheet, so nobody improvises:

Placementutm_sourceutm_mediumWhere GA4 should file it
NewsletterklaviyoemailEmail
Unpaid Instagram postinstagramsocialOrganic Social
Meta adfacebookpaid_socialPaid Social
Creator paid per salethe creator's handleaffiliateAffiliates
Google Adsleave to auto-taggingleave to auto-taggingSet from the Google Ads campaign

Build the first three as shareable links in one Shopify campaign called autumn_restock, so the Meta ad can use the full URL. The UTM part of each link looks like this:

  • Newsletter: ?utm_source=klaviyo&utm_medium=email&utm_campaign=autumn_restock
  • Meta ad: ?utm_source=facebook&utm_medium=paid_social&utm_campaign=autumn_restock&utm_content=video_a
  • Instagram post: ?utm_source=instagram&utm_medium=social&utm_campaign=autumn_restock

Then add an auto-match rule for utm_campaign = autumn_restock, so any stray link with that name reports into the same campaign. Once the push runs, GA4 should show klaviyo / email, facebook / paid_social and instagram / social as three rows. Their channels should read Email, Paid Social and Organic Social.

Say the Channels sheet of a later export still showed Paid Social at 0.0% after a campaign like this. Then stop blaming the tags, and check in the ad account that the ad ran and its clicks reached the store.

What should I check when the report looks wrong?

(not set) under Session campaign. A link carried some UTM parameters but not all. GA4's help says missing UTM parameters produce (not set) values, so fill in source, medium and campaign on every link.

Two rows for one platform. Someone typed Facebook and someone typed facebook. GA4 parameter values are case sensitive, so fix the link at the source rather than the report.

Paid clicks under Organic Social or Paid Other. Paid Social needs a recognised social source and a paid-style medium. A social source with a medium like ads fails the second test. A paid medium with an unknown source lands in Paid Other.

Your Google Ads UTMs vanished. They did not vanish, they lost the argument. With auto-tagging on, GA4 gives auto-tagging priority and offers no override. That is by design, not a bug.

An empty Shopify campaign report. Look for the Data sync in progress badge and wait until it clears. Shopify says campaign report data might take some time to sync after you update a campaign.

Tagged traffic shows up as Direct. Click the link yourself and watch the address bar. If the parameters are gone when the page loads, a redirect or a link shortener stripped them on the way. Point the link straight at the final page.

An old link now opens an error page. Someone changed the short link handle or deleted the link. Shopify warns that both break old links, and a deleted link also takes its traffic out of the report. Add a new link instead of editing a live one.

What to do this week

  1. Add an auto-match rule for a campaign that is live now. In Growth > Campaigns, create a campaign for it. Add an auto-match rule with the utm_campaign value its links already use. Pass: its sessions appear in the campaign report after the sync. Fail: nothing appears, so the live links use a different spelling.
  2. Search GA4 for one campaign name. In Reports > Acquisition > Traffic acquisition, type the campaign name into the search bar above the table. Pass: one row, spelled one way. Fail: two spellings, or traffic you know you tagged sitting under (not set).
  3. Open Performance by UTM campaign in Shopify. Go to Analytics > Reports, filter the Category to Marketing and open the report. Pass: your campaign is listed with sessions. Fail: it is missing, so check that every link carried utm_campaign, since Shopify attributes that traffic to marketing.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: Creating campaigns (Shopify); Understanding Campaigns (Shopify); Marketing reports (Shopify); Measuring marketing performance (Shopify); URL builders (Google); Default channel group (Google). Traffic acquisition report (Google); About auto-tagging (Google)

Frequently asked questions

  • How do I tag a Meta ad for my Shopify store?
    Build it as a shareable link in a Shopify campaign and paste the full URL into the ad. Shopify says the full URL carries your unique tracking ID and is meant for ad managers. Add utm_medium=paid_social so GA4 can file the click as Paid Social.
  • Why does GA4 show (not set) for my campaign?
    Usually because the link carried some UTM parameters but not all. GA4's help says missing UTM parameters produce (not set) values in reporting. Set utm_source, utm_medium and utm_campaign on every link you send out.
  • What happens if I delete a Shopify campaign link?
    Its traffic leaves the campaign report, and anyone who clicks the old link lands on an error page. Shopify recommends adding a new shareable link instead of editing or deleting one that people already use.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.