Why Meta Ads revenue doesn't match Shopify (and which number to trust)

Meta almost always reports more purchase value than Shopify. The 8 reasons why, how to measure the real gap, and which number to use for which decision.

You spent $15,000 on Meta last month. Ads Manager says it brought in $61,940 in purchases, a 4.1 ROAS. Shopify says the whole store did $48,210. Meta is claiming more revenue than you actually made, and that's before you count Google, email or anything else.

This is the most common question we get from DTC brands, and it has a clear answer. Meta isn't broken. It measures something different from Shopify, on different dates, with different rules. Once you know those rules, you can work out how far off your numbers are and which one to use for each decision.

The short answer

Shopify counts orders. Meta counts purchases that happened after someone interacted with a Meta ad, within a time window, including purchases it estimates but can't see. Those are different things, and the second one is almost always bigger than the share of revenue Meta actually caused.

Rule of thumb

Shopify tells you what happened. Meta tells you what happened near a Meta ad. Neither tells you what Meta caused. That third number is the one your budget should follow.

The 8 reasons Meta reports more

1. The attribution window

Meta's default attribution setting is 7-day click, 1-day view, plus 1-day engaged view for video. Anyone who clicked an ad in the 7 days before buying, or saw one the day before, counts as a Meta purchase. They might also have clicked a Google ad, opened a Klaviyo email and typed your URL in directly. Meta still counts the sale.

Note that "click" means any click on the ad, not just a click through to your site. Likes, comments and taps to expand the image all count.

2. View-through conversions

A 1-day view conversion means the buyer saw your ad, didn't click, and bought within a day. For a brand with returning customers and lots of reach, a big share of daily orders will come from people who saw an ad yesterday whether or not the ad did anything. In the accounts we audit, view-through is usually the single biggest part of the gap.

3. Every platform claims the same order

Meta, Google Ads, TikTok and Klaviyo each use their own window and each count the order as theirs. Nobody removes the duplicates. Add up the revenue every platform claims and it's normal to get 130 to 200% of what Shopify actually recorded.

4. Meta reports on the ad date, not the order date

Ads Manager attributes a purchase to the day of the ad impression or click, not the day of the order. A sale on the 3rd of the month from a click on the 29th shows up in last month's Meta report and this month's Shopify report. Over a full month this mostly evens out, but daily and weekly comparisons get noisy, especially around sales and launches.

5. Modeled conversions

Since iOS 14, Meta can't see many purchases directly, so it estimates them. These modeled conversions appear in Ads Manager alongside measured ones, with no way to separate them in the standard reports. They are informed estimates, not orders you can point to in Shopify.

6. Cross-device matching

Meta knows who is logged in on Instagram on their phone. If that person later buys on their laptop, Meta can still link the purchase to the ad, while Shopify and GA4 see a direct visit with no source. Sometimes this means Meta is right and your other tools are missing it. That's why you can't simply treat Meta's extra revenue as fake.

7. Duplicate events from the pixel and Conversions API

Most Shopify stores send purchases to Meta twice: from the browser pixel and from the Conversions API. Meta deduplicates them only if both carry the same event ID. If they don't, every order can count twice. A purchase count in Events Manager that's well above your Shopify order count is the giveaway.

8. Different revenue definitions

The purchase value sent to Meta might include tax and shipping, or might not. It doesn't subtract refunds or cancellations, and multi-currency stores sometimes send the customer's currency instead of the store's. Shopify's net sales handles all of that. On a store with a 10% return rate, this alone can open a gap of 10%.

Since January 2026

Meta's reporting API stopped returning the 7-day view and 28-day view windows on January 12, 2026. If your dashboard pulls Meta data through a connector, check which window it uses. It may no longer match the column you see in Ads Manager.

Measure your real gap in 20 minutes

You don't need an attribution tool to see how far off Meta is. You need three numbers for the same 30 days.

  1. Meta's claimed revenue. In Ads Manager, open Columns, then Compare attribution settings. Add 1-day click, 7-day click and 1-day view purchase value side by side.
  2. Shopify revenue from Meta clicks. In Shopify's marketing reports, find last-click sales where the UTM source is your Meta source (facebook, instagram, fb, ig, whatever your ads use). This only works if every ad has UTM parameters, which is worth fixing first if they don't.
  3. Shopify total online revenue for the same dates.

Then read them together. Here's an example store:

NumberExampleWhat it tells you
Meta, 7-day click + 1-day view$61,940What Ads Manager shows by default
Meta, 7-day click only$41,300The rest, $20,640, is view-through
Meta, 1-day click only$29,800The most conservative Meta view
Shopify orders with Meta UTMs$24,600Last-click, what Shopify can prove
Shopify total online sales$48,210The ceiling. Meta can't have driven more.

In this example, Meta probably drove somewhere between $24,600 and $41,300 of revenue, not $61,940. That range is honest, and it changes the ROAS from 4.1 to somewhere between 1.6 and 2.8. Depending on your margins, that might be the difference between scaling and cutting.

Which number to trust, for which decision

DecisionUse this number
How much did we make?Shopify net sales. Always.
Which Meta ad or campaign is best?Meta, same attribution setting across everything you compare
Is Meta profitable overall?The range above, checked against total revenue and margin
Should we spend more on Meta?Whether total revenue rises when Meta spend rises. Ideally a lift test.

Inside Meta, the default numbers are fine for comparing one ad with another, because every ad gets measured the same way. The trouble starts when Meta's total gets compared with Shopify's total or added to Google's. Our guide to finding your true ROAS covers the account-level view in detail.

Not sure how far off your Meta numbers are?

Our free tracking check lines up your Shopify orders against Meta, GA4 and Google Ads, checks deduplication and UTM coverage, and sends you a written note with the real gap and what to fix first. Read-only, within 3 business days.

Get a free tracking check

How to make Meta reporting tighter

You can't make Meta match Shopify, but you can remove the parts of the gap that come from bad setup.

  1. Send purchases through the Conversions API, deduplicated. On Shopify, the Facebook and Instagram app does this when data sharing is set to the highest level. Check Events Manager: browser and server events should both show, and the deduplication notice should say they're being matched.
  2. Raise your Event Match Quality. Events Manager scores each event out of 10 based on the customer data you send with it (email, phone, name, address, external ID). Higher scores mean more purchases get matched to the right ad, which also helps Meta optimize. Purchases should usually score above 8.
  3. Tag every ad with UTM parameters. Use Meta's URL parameters field so it's automatic. Without UTMs, Shopify and GA4 can't tell you anything about Meta, and in-app browser traffic shows up as direct.
  4. Send the right value. Decide whether purchase value includes tax and shipping, and make every platform send the same definition, in your store currency.
  5. Report click-based numbers next to the default. Keep the default for in-platform optimization, and add 7-day click to your weekly report so view-through doesn't quietly inflate results.
  6. Test incrementality when spend justifies it. Meta's Conversion Lift studies or a simple geo holdout (pause Meta in a few regions for a few weeks) are the only ways to measure what Meta causes rather than what it's near.

If GA4 is also off from Shopify, that's a separate problem with separate causes. See why GA4 and Shopify revenue don't match.

Common questions

Why does Meta show more sales than Shopify?

Meta counts a purchase if the buyer clicked an ad in the previous 7 days or viewed one in the previous day, even if they also came through Google, email or a search for your brand. Shopify counts each order once. Meta also includes modeled conversions and reports purchases on the date of the ad interaction, not the order date. Together these usually put Meta's purchase value above Shopify's.

Is Meta's reported ROAS wrong?

It is not wrong, it answers a different question: how many purchases happened after someone interacted with a Meta ad. It does not tell you how many of those purchases Meta caused. For budget decisions, compare Meta's numbers with Shopify revenue and, when the spend justifies it, a lift test.

Should I switch Meta to 1-day click attribution?

Use the Compare attribution settings columns in Ads Manager to see 1-day click, 7-day click and 1-day view side by side, without changing how campaigns optimize. Changing the attribution setting on the ad set changes what Meta optimizes for, so test it on one campaign rather than switching the whole account.

How much higher than Shopify is normal for Meta?

It depends on your other channels. A store that spends almost everything on Meta might see Meta claim 70 to 90% of Shopify online revenue. A store with strong email, search and organic traffic might see Meta claim more than Meta could realistically have driven. The useful signal is the trend: if Meta's claimed share keeps rising while Shopify revenue stays flat, Meta is taking credit for sales other channels produced.

Do I need a third-party attribution tool to fix this?

Not to start. A clean pixel and Conversions API setup, UTM tags on every ad, and a weekly comparison against Shopify answer most questions. Attribution tools help once you spend across several paid channels and need one consistent model across them.

Owais Alam

Founder of Good Numbers. Builds tracking, attribution and reporting for DTC brands and agencies across Shopify, WooCommerce, GA4, Google Ads and Meta.