A client emailed me the morning after our call to say he'd gone through his own tracking setup, and that he'd found something. Then he wrote the sentence that this whole email is about. "I would like to agree how we handle that before we publish rather than after." Most people would have pushed the fix live and dealt with the fallout on Monday. He saw the second-order problem before he touched anything, which is the only reason this story has a good ending. What he'd found was this. His purchase event was firing twice. Once from the store's native platform integration. Once from a separate server-side container. Both configured correctly. Both doing exactly what they were built to do. Together, counting every order as two.
Why nobody catches this There's no broken thing to find. Neither source is a bug. A brand adds server-side tracking to improve match quality, which is the right call, and the original integration stays switched on because nobody wants to be the person who turns off tracking. Both fire. Both are correct in isolation. The piece that would normally save you is a transaction ID, which lets the platform recognise two reports of the same order and discard one. If it isn't being passed, deduplication can't happen, and the platform has no way of knowing. So it counts what it's told. Twice. And the reason it survives for months is that everybody already expects platform numbers to be wrong in this direction. When your dashboard flatters you, it confirms what you hoped rather than contradicting what you believed. Nobody opens a ticket because ROAS looks good.
The part that makes this urgent rather than interesting Now think about what happens the day you fix it. Reported conversions halve. Reported ROAS halves. Every dashboard, every weekly report, every screenshot in the founder group chat. And if a meaningful share of your budget sits in campaigns bidding to a target return, the machine sees the value of every conversion collapse and does exactly what you told it to do. It bids down. Immediately, automatically, and without asking you. So an accurate fix, published without preparation, is indistinguishable from a performance crash, and it triggers a real contraction in delivery on the same day, in the same week you were planning to scale into Q4. That's why his sentence was the right one. Agree the handling before you publish it.
The playbook, in the order it has to happen
One more thing he found, which is the general lesson The double count wasn't sitting there on its own. Once he started pulling the setup apart, he found a tag still firing against a conversion action that had been deleted months earlier, and a server-side endpoint that had been quietly returning errors for weeks. None of those had ever produced an alert. Tracking degrades the way a roof leaks: slowly, invisibly, and only obvious once you go up and look. Which is why the habit worth building is a calendar one. Open the whole measurement setup twice a year and reconcile it end to end, the same way you'd reconcile a bank account against your own books. Most brands have never done it once.
The 15-minute version for your own account Pull last week's platform-reported purchases and put them next to the actual orders in your store backend for the same dates. They will not match, and they aren't supposed to. Attribution windows, view-through, cross-device: all of that legitimately moves the number by a bit. You're not looking for a bit. You're looking for something close to double. For calibration, the accounts I audit usually land somewhere between 1.1x and 1.3x, and that range is healthy. Once I see about 1.8x or above, I stop looking for attribution explanations and start looking for a second system. Then check three things:
Most of what I audit is the opposite problem: platforms taking credit for demand you already had. This is the rarer and more expensive version, because a generous number misleads the humans and then trains the algorithm to chase volume that was never real. The full walkthrough of reconciling platform conversions against your store, including the thirty-minute process for stripping brand terms out of the comparison, is here.
Before Q4, not during it There is a right week to discover that your reported numbers are twice reality, and it isn't the last week of November. If you run that comparison and the gap looks structural, I'd rather you fix it now with eleven weeks of runway than find it while your budget is at its annual peak. That's a free 30-minute call if you want a second read on the numbers before you touch anything, for brands past $1M a year and $30K a month in spend. And if the comparison comes back clean, you've spent fifteen minutes buying certainty about the number every other decision this quarter depends on. Talk soon, PS: Reply "double" and I'll send you the deduplication checklist plus the exact target-reset math, so the algorithm never sees the cliff. |
Join my newsletter for up-to-date ecom growth plays from the trenches. Ads, offers, CRO and everything in-between. So you can finally scale profitably.
Hey, Three brands told me the same thing in one week, and none of them said the words I expected. Not one of them said they needed more creative. They all had plenty. What they said was that they'd run out of ideas. One of them put it almost exactly like this. The quality is good. Everything is well made. There's just nothing creative in it. That's a founder describing their own content, and it's a much more useful diagnosis than "we need more volume." Here's how a brand gets there, and it...
Hey, A founder told me something a couple of weeks ago that I keep coming back to. They sell online and through their own stores. At one point they turned the ads off. Online sales fell. Everybody expects that. But then... the shops went quiet too. Sit with that for a second. It's the most valuable number in their business, and it exists by accident. No report inside Meta or Google can produce it. The platforms simply measure something else. A platform measures attribution. It tells you which...
Hey, Have you heard that on the 1st of July the EU removed the €150 duty-free threshold? If you ship into Europe, your landed cost changed three months ago. And most brands I talk to still haven't repriced. Here's the mechanic. It's stranger than a flat fee. A €3 duty now applies per four-digit tariff heading. That's charged per product category, not per parcel. So one parcel with three different product categories carries €9. Bundles and mixed baskets get hit hardest. Those are usually the...