Back to all posts
Ad Tracking July 2, 2026 5 min read

Why Your Shopify ROAS Is Inaccurate (And How to Fix It)

Facebook, Google, and TikTok each report a ROAS number that assumes full credit for the same sale, while browser pixels quietly lose data to ad blockers and iOS tracking prevention. Here is what is actually driving the gap, and how to build one blended number you can trust.

By The Appnary Team

Open Meta Ads Manager and Google Ads on the same day, for the same store, and you'll often see two ROAS numbers that don't agree with each other or with your bank statement. Neither platform is lying, exactly. They're just each counting sales that, in some cases, only happened once.

This is the part nobody explains when you're setting up your first ad account: platform-reported ROAS was never designed to be an objective, external measurement. It's a self-reported metric, built on each platform's own attribution rules, and those rules are structurally biased toward making that platform look good. If you're running ads on more than one channel, and most Shopify stores are running at least Facebook and Google at once, the numbers will overlap, and the overlap points in one direction: up.

The same sale, claimed twice

Attribution windows are the first problem. Meta's default is a 7-day click and 1-day view window, meaning if someone clicks an ad and buys within a week, or just sees an ad and buys within a day, Meta counts it as an ad-driven sale. Google Ads runs its own windows on a separate clock. TikTok and Pinterest each have their own too.

None of these systems talk to each other. Picture an ordinary path to purchase: a shopper sees a Facebook ad on Monday, searches your brand name on Google on Wednesday and clicks a Google Ads result, then buys on Thursday. Facebook counts that as a Facebook-driven sale, since it fell inside the view window. Google counts it as a Google-driven sale, since it was a direct ad click. One order, two platforms claiming full credit. Add up reported revenue across every channel you run and the total can sit well above what actually landed in your Shopify orders.

This isn't a bug in either platform. It's what happens when every ad network grades its own homework.

Pixel data is also going missing

The second problem is quieter but just as damaging: a growing share of the browser-side data these pixels depend on never reaches the platform at all. iOS App Tracking Transparency lets people opt out of tracking with one tap, and most do. Safari's Intelligent Tracking Prevention limits how long a pixel's cookie survives. Ad blockers strip pixel scripts before they load. None of this is new information, but its effect on ROAS specifically is easy to underestimate.

When a pixel can't set or read a cookie, it can't recognize a returning visitor, so a customer who has bought from you three times gets logged as brand new on their fourth visit. That distorts the new-customer numbers in prospecting campaigns aimed at cold audiences, making them look like they're recruiting fresh buyers when part of that reach is really repeat customers the pixel simply doesn't remember. It also means a real conversion sometimes never gets reported back to the ad platform at all, which the algorithm reads as this ad didn't convert and optimizes away from, even though it worked. Server-side tracking, which sends conversion events from your server instead of relying on the buyer's browser to cooperate, closes a meaningful part of this gap. This guide covers how that works for Facebook Conversions API and TikTok Events API specifically, the two networks where server-side tracking is currently available for Shopify merchants.

Not every conversion is worth the same

The third issue is about weighting, not counting. Platforms generally roll click-through and view-through conversions into the same ROAS figure, but they aren't equivalent events. A shopper who clicked an ad and bought within the hour showed clear intent. A shopper who merely saw an ad in their feed and bought three days later through some unrelated path may well have bought anyway, with the ad contributing nothing at all.

View-through conversions are a legitimate signal for brand awareness campaigns, but most default reporting counts them at the same weight as a direct click. Broad prospecting campaigns, the ones with the biggest reach and impression counts, tend to accumulate the most view-through credit, which is exactly why they often report deceptively strong ROAS, while a tightly targeted retargeting campaign converting real buyers with total certainty can look comparatively weak on paper.

What to actually do about it

None of this makes platform ROAS useless. It makes it directional, not literal. Three adjustments make it far more trustworthy.

First, enable server-side tracking wherever the platform supports it. It won't fix cross-platform attribution overlap, but it recovers conversions that browser-based pixels are losing to ad blockers and tracking prevention, which makes the new-customer and conversion-volume numbers you do see meaningfully more accurate. Pixel Tracker connects your store's pixels for Facebook, Google Ads, TikTok, Snapchat, Pinterest, X, and LinkedIn from one dashboard, with server-side support for Facebook and TikTok, and installs everything through Shopify's own ScriptTags rather than requiring theme edits.

Second, stop treating any single platform's ROAS as a final answer and start reading it as a trend line instead. If Meta's reported ROAS drops from 3.2 to 2.4 week over week, that drop is real information regardless of whether 3.2 was ever fully accurate to begin with. Trend direction survives attribution noise better than any single snapshot does.

Third, build one blended number that becomes your actual ground truth: total ad spend across every channel, divided by total store revenue from Shopify for that same period, using your own order data instead of any platform's self-reported revenue. This number can't double-count a sale, because it only counts revenue once, no matter how many platforms want credit for it. This guide walks through the formula, and this post covers the adjustment most merchants skip entirely: backing out returns and refunds, which platform ROAS never accounts for.

Platform-reported ROAS will keep disagreeing with itself and with your bank account, because the platforms have no incentive to fix that and no way to see each other's data anyway. Accepting that up front, and building a blended, server-side-backed number as your real scoreboard, is a more honest way to run ad spend than chasing whichever platform's dashboard currently looks best.

Pixel Tracker is still pre-launch. If you want your store's pixels centralized and your server-side conversions actually firing once it ships, join the waitlist. It won't calculate ROAS for you, that's still your spreadsheet's job, but it makes the data feeding that spreadsheet a lot harder to argue with.

ROASAttributionAd TrackingServer-Side TrackingShopify Ads

Frequently Asked Questions

Why do Facebook and Google both show a strong ROAS but my actual revenue doesn't match either number?
Attribution windows overlap. Meta and Google each track ad exposure and purchases on their own clock and give themselves credit for any sale that fits inside their own window, with no coordination between platforms. A single order can get counted as a win by two or three different ad accounts at once, which is why summed platform ROAS is almost always higher than what actually shows up in your Shopify revenue.
Does enabling server-side tracking fully fix ROAS accuracy?
No. Server-side tracking, through Facebook Conversions API or TikTok Events API, recovers conversion events that browser pixels lose to ad blockers, iOS App Tracking Transparency, and Safari's Intelligent Tracking Prevention. That makes the data each platform receives more complete, but it does not stop two platforms from both claiming credit for the same sale. You still need a blended, order-based number to see the real picture.
What does a "blended" ROAS number actually mean?
It means dividing your total ad spend across every channel by your total store revenue from Shopify orders for the same period, rather than adding up each platform's self-reported revenue. Because it counts each sale exactly once, it can't be inflated by cross-platform attribution overlap the way individual platform dashboards can.
Should I ignore platform-reported ROAS entirely?
No. It's still useful as a directional signal, particularly for spotting trends within a single platform over time. The mistake is treating the absolute number as literal truth or comparing raw ROAS figures across platforms, since each one is measuring against a different, self-favoring set of rules.
Does Pixel Tracker calculate ROAS for me?
No. Pixel Tracker installs and manages your tracking pixels for Facebook, Google Ads, TikTok, Snapchat, Pinterest, X, and LinkedIn from one Shopify dashboard, and supports server-side tracking for Facebook and TikTok. It feeds more complete, accurate conversion data into those ad platforms and into whatever tool or spreadsheet you use to calculate ROAS yourself. It does not have a built-in ROAS dashboard.