{{campaign.id}}; in Google Ads, use the campaign-level Final URL suffix with ValueTrack tags like {campaignid}. Keep every value lowercase, tag utm_medium as cpc or paid_social, and test one live click before scaling. Shopify records the UTM-tagged URL on the order's landing_site field and attributes it over a 30-day lookback window — but correctly tagged traffic will never make your platform numbers match Shopify's order count, because Meta and Google credit themselves through separate windows.
What UTM parameters actually do for a Shopify store
UTM parameters are tags you append to an ad's destination URL so your store-side tools can classify where a visitor came from. There are five: utm_source, utm_medium, utm_campaign, utm_content, and utm_term.
Shopify and GA4 read those tags and file the session under the right channel. Without them, a paid Facebook click can land in Shopify as "direct" or "social" with no campaign detail, and you lose the ability to compare campaigns store-side.
One thing UTMs do not do: they don't change how Meta or Google credit themselves. Those platforms track clicks and views through their own pixels regardless of your tags. UTMs are for your attribution, which is exactly why they matter — and why they don't close the gap between platform-reported and store-side numbers.
How Shopify actually stores UTM data
A common misconception circulating in older guides is that Shopify preserves UTM values through cookies named _shopify_sa_p and _shopify_sa_t. According to WeltPixel (June 2026), those cookie names do not appear in Shopify's current cookie policy and are absent from Shopify's developer changelog — the only places they survive are a stale 2021-era third-party cookie database and uncited vendor blogs.
What Shopify actually does, according to the same source, is record the HTTP referrer at the moment an order is created and store it on the order in a field called landing_site. That full URL — including any UTM parameters you attached — is the durable attribution signal. A companion referring_site field captures the referrer of the session as well. Shopify's admin Marketing reports then apply an attribution model on top of those stored referrers, crediting orders over a 30-day lookback window.
Separately, as of January 1, 2026, Shopify began phasing out the _shopify_y visitor cookie and _shopify_s session cookie on storefronts in favor of the Web Pixels API, according to WeltPixel. Any guide telling you to read those cookies from the browser is now pointing at a moving target. The practical implication: UTM parameters you set in your ad platforms flow into landing_site on completed orders, and that is the signal your Shopify Marketing reports actually use.
If you want to capture UTM data for non-purchasing sessions — visitors who browse but don't buy — you need a third-party solution. Tools like Analyzify store UTM tags, click IDs, and consent data directly in Shopify order notes at checkout, giving you a per-order attribution record that survives cookie restrictions and ad blockers.
A naming convention that survives contact with real reports
Pick one format and never break it. Case and spelling matter because Facebook and facebook become two separate rows in every report.
- utm_source — the platform:
facebook,google,pinterest. Lowercase, no spaces. - utm_medium — the traffic type:
cpcfor paid search,paid_socialfor Meta. - utm_campaign — a human-readable campaign name or the platform's dynamic campaign tag.
- utm_content — the ad or creative, so you can tell variants apart.
- utm_term — keyword or ad-set ID, most useful on search.
Use underscores or hyphens inside multi-word values, never spaces. Both Analyzify and TrackBee recommend the same lowercase, no-space discipline, and it's the single most common thing merchants get wrong.
Meta (Facebook & Instagram) ads UTM setup
The mistake that breaks tracking is pasting UTMs onto the end of the Website URL field. Do not do that. Meta has a dedicated URL parameters box, and that is the only place your tags belong.
- Open your ad at the ad level in Ads Manager (UTMs are set per ad, not per campaign).
- Scroll to Tracking → URL parameters.
- Paste your parameter string without the leading
?— Meta adds it.
A dynamic string that auto-fills per ad looks like this:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.id}}
The {{campaign.name}}, {{ad.name}}, and {{adset.id}} are Meta's dynamic tags. They populate automatically for every ad, so you set the string once instead of hand-typing UTMs on each creative. That's the setup TrackBee documents at the ad level, and it scales cleanly across a large account.
When the customer completes checkout, that tagged URL lands in the order's landing_site field — which is exactly where Shopify's attribution model reads it. Getting the tag right in Meta means Shopify's 30-day lookback has the correct source to credit.
Google Ads UTM setup
Google is different because it can auto-tag with its own gclid, but you still want UTMs for consistent store-side reporting.
- Go to Campaign Settings (or Ad Group Settings for tighter control).
- Open the Tracking section and find Final URL suffix.
- Paste your string, again without a leading
?.
Use Google's ValueTrack tags so values fill in automatically:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}&utm_term={keyword}
Setting the suffix at the campaign level applies it to every ad below it, which keeps naming uniform. Google's own Campaign URL Builder is the fastest way to draft and sanity-check a string before you paste it.
Important for POD sellers on Google: if your store is missing ValueTrack tokens, Shopify's landing_site field receives a URL without UTM parameters and the order gets attributed to "direct." Google-channel attribution in your store reports becomes silently wrong. Always verify ValueTrack tags are firing before spending at scale.
Test before you scale
Never trust an untested UTM. Click one live ad yourself, complete the path to your store, and confirm the parameters appear in the browser URL. Then check the completed order in Shopify Admin — the landing_site field on the order should show the full tagged URL. After that, confirm the session shows the right source in Shopify Analytics within a day.
Skipping this step is how merchants discover a typo after a week of spend has already been misfiled.
The hard truth: UTMs won't make your numbers match
Here's what the setup guides skip. Even with flawless UTMs, Meta will report more purchases than Shopify shows orders — and that's by design, not a bug.
Meta's default window is 7-day click plus 1-day view, meaning it claims credit for a sale made within a day of merely seeing an ad, with no click at all. Shopify has no concept of a view — it records only completed checkouts, stamped with the landing_site from the click that actually reached your store.
GA4 diverges the other way. It runs on client-side JavaScript that ad blockers, tracking prevention, and consent declines can silence. According to Polar Analytics (July 2026), GA4's campaign revenue rarely matches what Shopify actually banked, because GA4 counts sessions its own way and credits the last touch — and that is not a bug you can fix with better UTMs; it is the ceiling of a session-scoped, last-click tool.
UTMs fix classification. They don't touch view-through credit, modeled conversions, or consent losses that quietly shrink your tracked conversions. Understanding that is the core of reconciling your ecommerce data across platforms.
A worked example: the number that actually matters is profit
Perfect UTMs tell you a click came from facebook / paid_social. They don't tell you whether that click made money. Watch what happens when you follow one order all the way to the bank.
Say you sell a print-on-demand mug. Retail price is $40 subtotal, plus $5 shipping and $4 tax, for a $49 order total. Now stack the real costs:
- Printify base cost + shipping to customer: an amount that varies by product and provider — check current base-cost breakdowns to get accurate figures for your catalog.
- Shopify Payments processing: a percentage of the order total plus a fixed per-transaction fee — check Shopify's current plan page for the rate on your plan.
- Ad cost to acquire the order: your actual spend divided by your actual order count for the campaign.
Revenue minus product cost, minus processing fees, minus ad cost equals your true per-order profit on that mug. Shipping and tax collected are pass-throughs, not margin. For a deeper look at how gross and operating profit differ in POD math, see gross profit vs. operating profit in print on demand.
Now here's the trap. Meta might claim it drove that sale and three others via view-through, reporting four purchases while your Shopify landing_site records only two paid-by-card orders that actually clicked through. Your UTM is a label — profit is the verdict.
Where PodVector fits
UTMs get your channels labeled correctly in Shopify's landing_site field. The next question — did each order actually make money after product cost, fees, and ad spend? — needs your platforms reconciled against real orders.
PodVector connects Shopify, Meta Ads, Google Ads, Printify, and Printful, reading live data across all of them into one warehouse. Victor, PodVector's AI employee, analyzes that data and proposes concrete moves — for example, repricing your worst-margin SKUs to a target margin, raising your free-shipping threshold, or pausing a Meta campaign — showing you old and new values before anything changes. Every action he executes is Shopify-side and only runs after you approve it. He reads your ad platforms but does not write to them. PodVector is not a dashboard — it's an AI employee that sits on top of the numbers your UTMs help produce.
If you want to see how ad-channel profit breaks down across your POD catalog, or understand whether a campaign's orders are actually margin-positive after Printify or Printful costs, that's exactly what Victor's read surface is built for. For context on what the platform covers, see the full PodVector overview. And if you want to pair strong attribution with a Klaviyo flow that recovers abandoned sessions, see Klaviyo browse-abandonment flow setup — email revenue is especially prone to misattribution when referrers are stripped.
Start with PodVector to see per-order profit across your connected channels.
FAQs
Where exactly do I put UTM parameters for Facebook ads on Shopify?
In the URL parameters field at the ad level in Meta Ads Manager, under the Tracking section — never in the Website URL field. Meta adds the ? for you, so paste the string starting with utm_source. Use dynamic tags like {{campaign.name}} so values fill in for every ad automatically. When checkout completes, Shopify records the tagged URL in the order's landing_site field, which is what your Marketing reports actually read.
What happened to the _shopify_sa_p and _shopify_sa_t cookies?
Those cookie names do not appear in Shopify's current cookie policy and are absent from Shopify's developer changelog, according to WeltPixel (June 2026). Shopify's marketing attribution runs on the order's landing_site field (the HTTP referrer captured at order creation) and its admin attribution models over a 30-day lookback — not on those named cookies. If you've read a guide telling you to read _shopify_sa_p for UTM data, that information is stale.
Do I still need UTMs if Google Ads auto-tags with gclid?
Yes, for consistent store-side reporting. The gclid powers Google's own conversion tracking, but UTMs are what Shopify and GA4 use to classify the channel in your reports. Set a Final URL suffix at the campaign level so both systems agree on the source, and verify the ValueTrack tokens are firing — missing tokens mean Shopify's landing_site receives a URL with no UTM data, and the order falls into "direct."
Why does Meta show more purchases than Shopify even with perfect UTMs?
Because Meta credits view-through conversions and modeled conversions that Shopify never counts. Shopify records only completed checkouts stamped with the click that actually reached your store. UTMs fix how traffic is labeled, not how platforms self-credit.
Should utm_medium be "cpc" or "paid_social"?
Use cpc for paid search like Google Ads and paid_social for Meta. The important part is consistency — pick one convention and apply it to every campaign, because a mismatched medium splits your reporting into duplicate rows that are painful to merge later.
Can I use the same UTMs for internal links on my store?
No. UTMs are for external links pointing into your store only. Tagging internal navigation restarts the session and overwrites the original source, which corrupts your attribution and inflates whichever internal link carried the tag.
Will UTMs help me reconcile my Shopify payout with my sales?
Not directly. UTMs classify traffic; they say nothing about fees, refunds, or chargebacks. Your payout is a batch of balance transactions, not a day's sales. Understanding the difference between what your channels report and what you actually keep comes down to per-order profit math — see gross profit vs. operating profit in print on demand for how the sales report and your real margin actually relate.
Is Printify or Printful worth the cost for a UTM-tracked POD store?
UTMs tell you which channel drove the order; they don't tell you whether the order was profitable after fulfillment costs. For Printful margin context, see the Printful review for POD sellers and Printful shipping rates for US t-shirts. For Printify, see whether Printify Premium is worth it. The cost structure of your fulfiller directly affects whether any given UTM-tagged campaign is margin-positive.