Chapter 8
Server-side tracking in Shopify
Table of contents
Shopify has fundamentally rebuilt its tracking model over the last two years. Since 26 August 2026, no legacy scripts run on the Thank you page any more, including on the Basic, Shopify and Advanced plans. Stores that have not migrated their purchase tracking have been missing part of their orders ever since.
What has Shopify changed?
Merchants used to be able to add tracking code in several places: in the theme, in the "Additional scripts" of the Order status page or, for Plus stores, directly in checkout.liquid. That model no longer exists. For Plus stores, it ended on the Thank you and Order status pages in August 2025; for all other plans on 26 August 2026.
It has been replaced by the pixel manager under "Customer events". All tracking scripts run there in an isolated sandbox and receive events from Shopify: page views, product views, cart, checkout steps and the completed purchase.
What does the sandbox mean for tracking?
The sandbox protects the checkout but restricts tracking:
No access to the page: Pixels cannot read forms or clicks from the page. Such events have to be published as custom customer events.
Google Tag Manager in a pixel: GTM can be added as a custom pixel, but every tag it loads also runs in the sandbox. Preview mode is limited, and errors often only show up in live operation.
Built-in consent: In markets where consent is required, such as the EU, pixels only run if the visitor has granted the permissions the pixel requires. New pixels require marketing and analytics consent by default. The cookie banner must therefore be connected to Shopify's Customer Privacy API.
Which routes lead to server-side tracking in Shopify?
Shopify's channel apps. The Google & YouTube and Facebook & Instagram apps send purchases to Google and Meta server-side themselves. For a store with one domain and one or two ad channels, that is a solid start. One important limitation: the Google & YouTube app does not work cleanly when a store runs several languages or domains, for example a German and an international store. In that case, you need a feed tool such as ChannelPilot for the product feed and a separate solution for tracking.
A data layer app with a server container. Apps such as the TAGGRS Data Layer app provide Shopify's events to the GA4 standard for Google Tag Manager, including the purchase on the Thank you page, and send them to the server container. From there, all platforms are supplied from one source. This is the route for stores with several ad channels or several domains.
Running both in parallel is the most common source of errors. If you leave the Google app active and also send purchases to Google Ads via the server container, you count twice. Each platform needs exactly one route for the conversion.
What to watch out for in Shopify
Shopify Markets: Several countries and domains need a coordinated plan for containers, data streams and currencies.
Checkout events: Check whether begin_checkout, add_payment_info and purchase actually arrive. Especially after the August 2026 switch, they are missing in many stores.
User data: For Enhanced Conversions and the Meta Conversions API, email and phone number need to be passed from the checkout events, where consent is given.
Third-party apps: Review, upsell and subscription apps often bring their own pixels. They belong in the inventory.
What you can check today
Open Customer events in your Shopify settings and check which app pixels and custom pixels are active.
Place a test order and check whether the purchase arrives exactly once in GA4, Google Ads and Meta.
Check whether your cookie banner is connected to Shopify's Customer Privacy API.
Check whether exactly one route for the purchase conversion is active for each ad platform.
Frequently asked questions
Yes, but only as a custom pixel in Shopify's sandbox. Tags loaded by GTM also run in the sandbox and have no access to the page.
Your purchase tracking probably still ran via legacy scripts on the Thank you page. Since 26 August 2026, these no longer run on any plan. Tracking has to run via customer events.
Often yes for a store with one domain. With several languages or domains it reaches its limits; a server container is then the better solution.
)