Skip to content

Multi-channel attribution on Shopify: a setup walk-through

Four steps, in order: a purchase event with a unique transaction ID, a consent setting that decides who is measured, UTM tags on every link, and GA4's channel rules. Reconcile one closed week of Shopify orders to GA4 after each.

By , Founder & CEOPublished 6 min read

Run the numbers for your store: the free multi-channel budget calculator.

Attribution on Shopify rests on four things, and each has a documented way to fail: a purchase event that fires, a consent rule that decides who is measured, UTM tags that reach GA4 intact, and a channel grouping that turns them into channels. Shopify's documentation says its purchase event "isn't triggered at all" if the page it runs on fails to load, and that pixels wait for consent where visitors must give it, so GA4 can run below your Shopify orders for reasons that are not lost sales. Set the four up in order, and reconcile one closed week after each.

Which event counts a purchase?

Shopify pixels subscribe to customer events, and checkout_completed "logs when a visitor completes a purchase". It fires "once for each checkout, typically on the Thank you page"; for upsells and post-purchase offers it fires on the first offer page instead. If that page fails to load, the event "isn't triggered at all".

A merchant configures a custom pixel in the pixel manager in the Shopify admin. Code in its sandbox "cannot access the top frame", so it reads the page address and referrer from the event's context, and Shopify recommends apps over custom pixels "for greater integration". However GA4 is installed (an app, a custom pixel or a tag manager), the purchase event must carry a unique transaction_id, such as the order number, because Google deduplicates on it and warns: "Don't send an empty string as the transaction ID."

Makes visible: that a purchase happened, and which order it was. Check: place a test order after accepting the consent banner and look for the purchase in GA4's Realtime report, which Google lists as a way to "verify that the measurement code is working on your site or app". Once the data is processed, add Transaction ID as a dimension in an Exploration and confirm it maps to the Shopify order.

Who does the pixel measure?

Shopify app pixels follow the visitor's consent choice. In regions where visitors must consent, they run "only after consent is given", and earlier events are replayed. Where tracking is on by default, they run until the visitor opts out. The pixel manager "will only load your pixel if there is visitor permission for all of the settings that your pixels declares as required", and a custom pixel sets its required privacy settings in the pixel manager's own interface. Shopify records every order whatever the visitor chose, so the gap between orders and GA4 purchases is a measurement gap, not lost sales.

Makes visible: the share of buyers your tools can follow.

How do UTM tags and channels get into GA4?

Tag every link you control with utm_source, utm_medium and utm_campaign. Google says to "always use" all three, that values are case sensitive ("utm_source=google is different from utm_source=Google"), and that missing parameters "will result in (not set) values". If you use auto-tagging and manual tags together, Analytics "uses the auto-tagged values" for source and medium. Shopify records visits on its side too, with the landing page, referral source and UTM parameters of each session.

GA4's default channel group then turns source and medium into channels by rule. For manually tagged links, Paid Social needs a social source and a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$, so a paid campaign with utm_medium=social lands in Organic Social and one with paid-social lands in Paid Social. Anything no rule matches is "Unassigned".

Makes visible: which channel each session came from, and how much is Unassigned or (not set).

What does the multi-channel view show once it is set up?

GA4's attribution paths report "helps you understand the different paths users take to complete key events, such as purchases or form submissions, and how credit is assigned to each touchpoint along those paths". Shopify's own journey summary records the first and last session before an order and counts days to conversion from "the first session within the 30 day attribution window". GA4's key event lookback window defaults to 90 days for most key events. The two windows differ by default, so do not expect the two views to match.

Expect gaps in both. Google says that without consent, Analytics "can't detect if the events are the action of the same user", and neither view can credit a touchpoint that was never tagged.

How do you reconcile after each step?

Reconcile one closed week, three days old or more, after each step:

  1. Count Shopify orders for the week, without test orders and cancellations.
  2. Count GA4 purchases for the same week. Google says Analytics reports in the property's time zone and Google Ads in the account's, so compare in one time zone.
  3. List the reasons you can see for the gap: consent, pages that failed to load, time zone edges, test orders.
  4. In GA4, open Reports, then Acquisition, then Traffic acquisition, and read the Unassigned and (not set) rows.

Pass: GA4 purchases differ from Shopify orders by a gap you can explain line by line, and Unassigned is small next to your named channels. Fail: GA4 shows far fewer purchases than you can explain, which points to empty transaction IDs (Google deduplicates all purchases with an empty ID into one), or more purchases than Shopify has orders, which points to repeated events, or Unassigned is large, which points to tagging.

Sources, 30 September 2026: checkout_completed (Shopify Web Pixels API, 2026); About web pixels (Shopify, 2026); Web Pixels API (Shopify, 2026); Pixel Privacy (Shopify, 2026); CustomerVisit and CustomerJourneySummary (Shopify GraphQL Admin API, version 2026-07); Minimize duplicate key events with transaction IDs (Google Analytics Help, 2026); Realtime report (Google Analytics Help, 2026); Analytics dimensions and metrics (Google Analytics Help, 2026); URL builders (Google Analytics Help, 2026); Traffic-source dimensions, manual tagging, and auto-tagging (Google Analytics Help, 2026); Default channel group (Google Analytics Help, 2026); Key events attribution paths report (Google Analytics Help, 2026); Select attribution settings (Google Analytics Help, 2026); Behavioral modeling for consent mode (Google Analytics Help, 2026).

Frequently asked questions

  • How do I set up multi-channel attribution on Shopify?
    Set up four things in order: a purchase event with a unique transaction ID, a consent setting that decides who is measured, UTM tags on every link you control, and GA4's channel grouping. After each step, reconcile one closed week of Shopify orders to GA4 purchases and explain every gap.
  • Why are my GA4 purchases lower than my Shopify orders?
    Shopify records every order, while pixels measure only visitors the consent rules allow, and Shopify says its purchase event is not triggered at all if the page fails to load. Time zones and empty transaction IDs add gaps. Explain the gap line by line before changing anything.
  • Why is my traffic Unassigned in GA4?
    No channel rule matched the source and medium. Google uses Unassigned when no rule matches, and missing UTM parameters produce (not set). Tag links with source, medium and campaign, and use a paid medium such as paid-social for paid campaigns so they reach Paid Social.

Go deeper: Incrementality testing, 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.