DATALYR
Attribution6 min read

Why your ad platforms never agree on revenue

Meta says 40 sales. Google claims 35. TikTok wants credit for 18. Shopify shows 22 orders. You spent one budget and got one set of customers — so why does every dashboard tell a different story?

MikaGrowth @ DATALYR
Attribution

If you run paid acquisition, you’ve lived this. At the end of the month you open four tabs, add up the “conversions” each ad platform reports, and the total is comically larger than the orders that actually hit your bank account. Nobody is lying, exactly. They just each count the same sale, in their own favor, under their own rules.

Everyone grades their own homework

Each ad platform’s pixel only sees the clicks and views that touched its ownads. When a purchase happens, the platform checks “did this person interact with me recently?” and, if yes, claims the conversion. It has no idea the same shopper also clicked a Google ad on Tuesday and saw a TikTok on Thursday.

Three mechanics blow up the numbers:

  • Overlapping windows. Meta’s default is a 7-day click / 1-day view window. Google and TikTok run their own. One purchase can fall inside all three at once, so all three claim it.
  • View-through credit. Platforms count conversions from people who merely sawan ad and never clicked. Useful signal — but it means a sale gets attributed to an impression the customer doesn’t even remember.
  • Last-touch bias. Your own analytics usually credit whoever was last in line, erasing the campaigns that did the expensive early work of creating demand.
Four tools, four windows, four definitions of “a conversion.” The disagreement isn’t a bug — it’s the architecture.

Why the platform pixel can't be the source of truth

Even setting double-counting aside, the browser pixel is the wrong place to measure revenue. Safari’s ITP caps client-side cookies, ad blockers drop the script entirely, and consent banners gate it before it fires. The conversions that dosqueak through are the client-side ones — which are exactly the events you shouldn’t trust for money. A browser sees an add_to_cart; it does not see the refund, the failed payment, or the canceled trial that follows.

Revenue lives in your systems of record — Shopify orders, Stripe charges — not in a marketing tag. If your source of truth for “did we make money” is a pixel, you’re measuring intent and calling it revenue.

Pick one source of truth, then feed the platforms

The fix isn’t a better pixel — it’s inverting the flow. Instead of letting each platform measure independently and hoping the numbers reconcile, you keep one first-party record of every visitor and every order, decide credit once, and then send each platform back only the conversions it actually earned.

That’s the model DATALYR runs:

  • A first-party script captures the click IDs (fbclid, gclid, ttclid) and UTMs on the landing page and ties them to a durable visitor ID.
  • That visitor ID rides through checkout, so when the orders/paid webhook fires from Shopify (or the charge lands in Stripe), the sale matches directly back to the original ad click — 90%+ match versus the 70–85% you get from email matching alone.
  • One deduplicated conversion, valued from your real order data, is sent server-side back to Meta, Google, and TikTok — so their optimization learns from actual revenue instead of double-counted guesses.

Now the platforms still each show a number, but they’re all drawing from the same well. The gap between “reported” and “real” collapses, and blended ROAS finally means something.

What to check on your own account

  • Add up reported conversions across every ad platform for last month, then compare to actual orders. The ratio is your double-counting tax.
  • Confirm your revenue number comes from Shopify/Stripe, not from a browser purchase event.
  • Make sure a stable visitor ID survives from ad click all the way into the order record — that single thread is what makes attribution honest.

Want the step-by-step? The Shopify and Stripe guides walk through wiring the visitor ID end to end in about five minutes.

Ready to scale faster?

Track the full journey from ad click to revenue, and optimize with server-side conversions.