Shopify tracking in Canada: why your purchase event fires three times

Insights banner: Shopify tracking in Canada, with one order showing three purchase events

Most Canadian direct-to-consumer brands run on Shopify, which makes sense given it’s built in Ottawa and the Canadian ecosystem around it is deep. It also means most Canadian e-commerce accounts share the same tracking problems, because Shopify’s own integrations, the apps layered on top, and whatever a previous agency added all fire at once and nobody has checked the overlap.

The double-counting problem

Open a typical Shopify store’s thank-you page with Tag Assistant and you’ll often find the purchase event firing three times, once from Shopify’s native Google & YouTube channel, once from a GTM tag someone added for GA4, and once from a pixel app. Google Ads then sees three conversions for one order, smart bidding learns that the account converts three times better than it does, and your reported ROAS is a fiction. The Meta side has the same shape, with the Shopify Facebook channel’s pixel plus a manually added pixel plus a CAPI app, with no deduplication between them because they don’t share an event ID.

I covered why this matters so much in The tracking audit nobody budgets for. On Shopify it’s the normal state of things.

Checkout extensibility changed the rules

Shopify switched off checkout.liquid for Plus stores in 2024, and in August 2026 it turned off the Additional Scripts box on the thank-you page for every other plan. Both were replaced by checkout extensibility. The practical effect for tracking is that the old way of pasting scripts into the checkout is gone, and tags fire through Customer Events (web pixels) instead, in a sandboxed environment with its own data layer. Stores that migrated without rebuilding their tracking are often firing nothing on the checkout steps and relying entirely on the native channels, which report into the platforms but not into your own GA4 properly. If your Shopify analytics and GA4 disagree by more than a few percent on orders, this is usually why.

The setup I use on Canadian Shopify stores

One source for each platform. Either Shopify’s native Google channel or a GTM tag for Google Ads conversions, never both. Either the native Facebook channel or a server-side CAPI feed with the browser pixel deduplicated against it, never two pixels. Remove every pixel app that duplicates something already in place.

A custom web pixel for GA4. Built in Shopify’s Customer Events, sending the standard e-commerce events with a consistent transaction ID, so GA4, Google Ads and Meta can all deduplicate against the same order.

Server-side for Meta. Shopify’s native CAPI integration is decent, but a Stape or Google Cloud server container gives you control over consent, parameter enrichment and event match quality, and it’s what moves Meta’s reporting from “roughly right” to “reconciles against Shopify orders”. Server-side tracking is now the price of admission explains the order to build it in.

Consent that works in Quebec. Shopify’s own privacy banner is adequate for some stores; most Canadian brands selling nationally need a proper consent platform that handles opt-in for Quebec and passes consent state to the web pixel and the server container. The Law 25 essay has the detail.

How to check your own store in ten minutes

Place a test order, or use a 100% discount code. On the thank-you page, open Tag Assistant and the Meta Pixel Helper. Count how many times “purchase” fires for each platform. Then compare the last 30 days of Shopify orders against Google Ads conversions and Meta purchases. If either platform reports more purchases than Shopify recorded, you’ve found the problem; if they report far fewer, the checkout migration probably broke something. Either way, the number you’ve been optimizing to was wrong, and fixing it is the highest-return work available on the account.

Working through something similar

This essay is one part of the measurement-first method. I’m always glad to compare notes on measurement and paid media. Get in touch → or find me on LinkedIn.

Share this article
Written byMurshidul HasanPerformance and demand-generation marketer with 11 years in digital marketing, across agency, B2B, e-commerce and live commerce, including Daraz (Alibaba Group) and the WPP Media network. Based in Windsor, Ontario.See the case studies →More insights →Connect on LinkedIn →