Trackproof articles

7 Shopify Tracking Mistakes Burning Ad Spend

Anurag Chandra9 min read

Your pixel is green. The test order went through, the event appeared, the platform recorded a purchase. Nothing is red anywhere. And the revenue figure you are bidding against is wrong by a margin nobody in the building can see.

The Shopify tracking mistakes that cost real money are not outages. An outage shows a zero and gets fixed by lunch. These seven keep firing. They produce a plausible number, off by just enough to make you pause a profitable campaign and scale a losing one.

Every one below is something I have found on a live store. What it corrupts, and how to spot it in about a minute.

Why do Shopify tracking mistakes survive an audit that says everything is fine?

Because almost every audit is a presence test. It asks whether the event fired and whether the required fields were there. It never asks whether their contents were true.

  • A green tick means received, not right. A purchase value of 1 is a perfectly valid number.
  • You audit as the wrong customer. One browser, one consent choice, one country, one currency, one storefront. Most of these faults live in a segment you never test as.
  • The fault arrives inside an unrelated change. A theme publish, an app install, a new market. Nobody connects it back to tracking.

The audit that does catch them takes about twenty minutes.

  1. Open your live storefront in a fresh browser profile. No extensions, no prior session.
  2. Open the network tab, place one real order, and keep the outgoing payload. It holds the value, the currency, the product IDs and the destination ID.
  3. Read the value the way a machine reads it. Number or string? Currency code attached? Does it match the admin total?
  4. Repeat with consent declined, then from a second market or storefront if you run one.
  5. Compare one closed day, a week old, against the Shopify admin. That ratio is your baseline.

Mistake 1: Is your purchase value a formatted string instead of a number?

The order was 1,299.00. Your tag sent the text "1,299.00" and the platform read the number 1.

  • Thousand separators truncate. A numeric field parses up to the first character it does not recognise. Every order above 999 collapses, and only those. Small orders stay perfect, which is why nobody catches it. A leading currency symbol does the same.
  • A missing currency code gets assumed. The platform falls back to the account currency, so a store selling in three currencies reports three amounts as one. Shopify's market rounding keeps converted prices stable rather than exact, and those rules cannot be customised per Shopify. If you sell in more than one currency, our post on Shopify multi currency covers what the platform is actually storing.
  • The order count stays flawless. Count and value fail independently, so every sanity check based on volume passes.

Fix this first. Value based bidding reads the value field and nothing else. Open the payload: if quotes wrap the value, or a comma sits inside it, you have found it.

Two versions of this, and the expensive one is not the one your lawyer worries about.

  • Banner says denied, tag fires anyway. A snippet hardcoded into the theme never asked the consent layer anything. Your compliance story is wrong, your data is complete.
  • Banner says granted, tag never fires. The money version. A tag waits for a signal a misconfigured banner never sends, and a region stops reporting while the storefront keeps taking orders.
  • It is scoped by region, so totals hide it. The hole sits inside one country. Global revenue just looks like a soft month.

Run the flow twice, accepting once and declining once, and read the payload both times.

Mistake 3: Are you optimising toward add-to-cart because purchase looked noisy?

Purchase volume was thin, the campaign kept dropping out of learning, so somebody switched the optimisation event. It stabilised, cost per action fell, the dashboard got prettier.

  • You are now buying a proxy. The bidder does not know you want customers. It finds people who add to cart, a different population.
  • Most of that population never buys. Baymard's review of fifty studies puts average documented cart abandonment at 70.22 percent across their aggregated research.
  • Reported efficiency improves while real cost per order rises. Only one of those is on the screen you check daily.
  • It is sometimes right. Under the learning threshold, a higher funnel event is a legitimate bridge. Write down the date you switch back, and treat the carts as a recovery problem instead. Our post on Shopify cart abandonment covers that.

Mistake 4: Do catalogue product IDs and event product IDs disagree?

Shopify hands you a product ID, a variant ID, a SKU and a handle. Your feed is keyed on one, sometimes with a prefix. Your events send another.

  • Dynamic retargeting quietly stops working. The event arrives, the IDs match nothing, and the campaign falls back to generic creative or underdelivers.
  • The event still validates. The ID field is present, non empty, correctly shaped. Nothing for a presence test to flag.
  • Partial matches are worse than none. Some products match, so diagnostics show a match rate, and a match rate always looks like something to improve later.

Take one ID out of a real event and search that exact string in your catalogue.

Mistake 5: Is one pixel ID serving two storefronts?

This arrives the moment a store grows: a second store for another country, a wholesale storefront, a headless build, a staging theme published and never taken down.

  • Audiences blend. Two customer bases, different price points and intent, merged into one signal the bidder cannot separate.
  • Currencies blend. Value arrives from both stores and is summed as one currency.

One destination ID, one domain. Filter events by source URL and confirm a single hostname appears.

Mistake 6: Are you comparing platforms across attribution windows that were never comparable?

The weekly report puts Meta, GA4 and TikTok in adjacent columns and somebody moves budget on the difference. That difference is largely manufactured by the windows, not by performance.

  • The models answer different questions. A click and view window is not a last non direct model. Neither is wrong. You subtract one from the other anyway.
  • The browser caps the window in practice. Safari deletes all script writable storage after seven days of Safari use without interaction on the site per WebKit. A twenty eight day setting cannot observe twenty eight days of that traffic.
  • Late events may not attribute. GA4's Measurement Protocol expects events within forty eight hours of the original client side timestamp, and the client ID must match the one the tag generated per Google. A slow retry queue lands events that still do not count.

Pick one window per decision, write it on the report, and never compare two columns whose definitions you cannot state out loud.

Mistake 7: Did a theme or app update silently remove your tracking code?

Nothing announces this. One channel just gets quieter.

  • A theme publish from an older duplicate. Somebody duplicated the theme in March, worked on it for weeks, published in June. The tracking added in April was never in that copy.
  • Checkout code changes shape. Shopify's Web Pixels API runs your code in a Lax or Strict sandbox with a controlled set of APIs as documented by Shopify, so a snippet reading the DOM stops working even where it still loads.
  • It reads as a soft decline. Conversions sag instead of hitting zero, and a sag is something everyone waits out for a fortnight before escalating.

If tracking lives in a theme file, treat publishing a theme as a deploy and re-run the payload check after.

What does each mistake cost per month at your order volume?

I cannot give you a number, and anyone who does is guessing at your data. What I can give you is the field each fault corrupts and the decision it distorts. Those set the bill.

MistakeWhat it corruptsWhat the bidder then doesDirection of the error
Formatted value stringRevenue on large ordersStops chasing high value buyersUnder reports, worst at the top
Consent mismatchWhole regions of eventsTrains on a partial marketUnder reports by geography
Optimising to add to cartThe target itselfBuys cart behaviour, not ordersLooks better, costs more
Product ID mismatchCatalogue matchingUnderdelivers dynamic adsSilent underdelivery
Shared pixel IDAudience and currencyBlends two businessesDistorts both stores
Window mismatchCross channel comparisonNothing, you do itMisallocates budget
Removed tracking codeEvent volumeLoses the segment entirelySharp, dated drop

Which of these seven does Trackproof make impossible?

Four of them, honestly. Not seven. Trackproof is free and has no reviews yet on the Shopify App Store, so judge it on what it does, not on social proof it has not earned.

  • Formatted values and missing currency codes: impossible. The payload is built from the Shopify order object, so value is always a number and the currency code always travels with it.
  • Product ID mismatch: prevented, once you pick the key. It sends the identifier your catalogue is keyed on, and holds it constant across every event and channel.
  • One pixel across two storefronts: impossible. It installs per store and binds to that store's destinations.
  • Theme updates deleting your code: mostly solved. Nothing lives in your theme, so publishing one cannot take it with it. It cannot protect a snippet an agency hardcoded three years ago.
  • Consent mismatch: partly. It honours the signal it receives. It cannot fix a banner that reports the wrong state to begin with.

The last two stay yours. The optimisation event lives in your ad account, and nothing installed on your store can stop you pointing a bidder at add to cart. Window discipline is reporting practice, not software. No app can decide which column your weekly report is allowed to compare.

If you need warehouse grade attribution modelling with a team behind it, this is not the right tool. Elevar's Core plan is 225 dollars a month for 2,000 orders on the App Store and Littledata's Scale plan is 199 dollars a month for 1,500 orders with a 30 day trial. Both are built for that depth. If you already run a server side GTM container and only need the Shopify half wired into it, Stape's app is free and does that one job well.

Pricing and features checked on 22 August 2026. App Store listings change without notice, so verify on the listing before you commit to a plan.

Questions people ask next

How do I tell a silent tracking fault from real performance decline?

A real decline moves together. Sessions, add to carts, orders and revenue all bend the same way over days. A tracking fault moves one number while its neighbours stay flat, and it usually starts on a single date rather than sloping. If platform revenue stepped down overnight while Shopify orders did not, that is a code change, not a market.

Why does my platform show the right order count but the wrong revenue?

Count and value are separate fields in the same event and they break separately. Every order can arrive while the money attached to it is truncated, missing, or in a currency the platform has assumed. This is the most expensive state to sit in, because value based bidding reads the value and never checks the count.

Is it safe to optimise campaigns toward add to cart while purchase volume is low?

As a temporary bridge, yes, but write down the date you will switch back. Baymard's review of fifty studies puts documented cart abandonment at 70.22 percent on average, so most of the add to carts you buy will never become orders. You are paying a bidder to find people who behave like carts, not customers.

Source
Do longer attribution windows just capture more conversions?

Not on every browser. Safari deletes all script writable storage after seven days of Safari use without interaction on your site, so a twenty eight day window cannot actually observe twenty eight days of that traffic. The window you configure is a ceiling, not a promise, and it differs by browser in ways your report never mentions.

Source
How often should I re-run these checks?

Quarterly, plus after anything that can move code: a theme publish, an app install or removal, a checkout change, a new market, a consent banner swap. Nearly every fault I find was introduced by a change nobody thought of as a tracking change, then left alone for months because the dashboard never went red.

Anurag Chandra

Founder, Edgecoms

Anurag runs Edgecoms, a studio of Shopify apps. He spends most of his week inside merchant stores working out why a number is lower than it should be.

Connect on LinkedIn

Read this on your assistant

Opens with a summary request for this page already written.

Read next

Supercharge the traffic you already have

See why Shopify brands run Edge to raise order value, lift conversion, and keep customers coming back.