Analytics • 8 min read

Why your Shopify conversion tracking breaks silently

Your ads keep spending, your dashboard shows sales, and Google Ads swears you had four conversions this week. Here are the five ways Shopify purchase tracking dies without an error message — and how to catch it before your ROAS math falls apart.

The nastiest property of broken tracking: it looks like a slow week

When your payment provider goes down, you know in minutes. When your Meta Pixel stops firing Purchase events, nothing visible happens. Orders keep coming in. The only symptom is a slowly widening gap between what Shopify reports and what your ad platforms see — and by the time you notice, the damage is compounding: smart bidding algorithms have been optimizing on starved data for weeks, and every campaign decision you made was based on numbers that were quietly wrong.

Merchants usually discover the breakage from the money side: ROAS "collapses", they cut budgets, revenue actually drops — and only then does someone check the pixel. Let's reverse that order.

The five silent killers

1. Checkout Extensibility replaced your checkout scripts

Shopify's migration to Checkout Extensibility removed script access to the checkout and thank-you pages. Anything you had pasted there — Google Ads conversion snippets, affiliate postbacks, custom analytics — stopped executing the moment your store was upgraded, with no error shown to you. If your conversion counts dropped around a checkout upgrade date, this is the first suspect.

2. The Additional Scripts shutdown (deadline: August 26, 2026)

The legacy Order status page → Additional Scripts box — where a decade of tracking snippets lives — is being turned off for non-Plus stores on August 26, 2026. After that date, every pixel still living there fires zero events. It doesn't degrade; it just goes dark. The replacement is the Web Pixels API (Custom Pixels), and the snippets are not copy-paste compatible — they need to be rewritten against Shopify's sandboxed analytics.subscribe events. Our deep dive on the deadline: what exactly stops working and when, and per-platform migration guides for Google Ads and Meta.

3. Consent mode eats your events

If you run Shopify's privacy banner (or any CMP), pixels wait for consent before firing. Misconfigure one region setting and entire countries' worth of purchases silently vanish from your ad reporting — while Shopify, which records orders server-side, still shows them. The gap looks random until you segment it by geography.

4. A theme or app update breaks the DOM your pixel depends on

Legacy snippets love to scrape the page: reading totals from .cart__total, hooking "Add to cart" buttons by CSS class. One theme update renames a class and the snippet keeps running — it just reports nothing, or worse, reports zeros. Sandboxed Custom Pixels avoid this failure mode by consuming structured event data instead of scraping, which is one more reason to migrate before you're forced to.

5. Duplicate pixels poison deduplication

The opposite failure: tracking that works twice. An official channel app (Google & YouTube, Facebook & Instagram) plus a leftover manual snippet means double-counted purchases — until the platform's deduplication kicks in and starts discarding events, sometimes the wrong ones. Symptom: conversion counts that are unstable in both directions.

The 10-minute audit

  1. Pick last week. Compare Shopify Orders against purchases/conversions reported in Google Ads, Meta Events Manager and GA4. A healthy setup tracks 90–100% of orders. Below ~85% — you have a gap worth diagnosing.
  2. Check where your snippets live. Settings → Checkout. Anything still sitting in Additional Scripts is on a countdown to August 26, 2026.
  3. Run a real test event. Shopify's Customer Events "Test" tool shows live pixel activity through checkout. Place a test order and watch whether checkout_completed reaches your pixel.
  4. Segment the gap. Missing only EU orders → consent config. Missing only mobile → theme/app conflict. Missing everything since a specific date → check what shipped that day.

Fixing it is half the job — the other half is knowing when it breaks again

Every cause above can recur: another theme update, another app install, another platform policy change. A one-time fix without monitoring just resets the clock on the next silent outage. The pattern that works: migrate the snippets to Custom Pixels once, then have something watch event flow continuously — pageviews, checkouts, purchases — and alert you the day a tracker goes quiet, not the month your ROAS report does.

Migrate once. Get alerted if it ever goes silent.

PixelWard converts your Additional Scripts into working Custom Pixels in minutes, then monitors every tracker and pings you (email, Slack, Telegram) the moment purchase events stop flowing.

Meet PixelWard