Skip to main content
Growth

Why Meta Shows More Sales Than Shopify, and the Fix

Why Meta Ads shows more purchases than Shopify: attribution windows, view-through, iOS and UTM loss, duplicate counting, plus a weekly reconciliation routine.

November 2, 2026 18 min read Talha Butt.
Share

Why Meta Shows More Sales Than Shopify, and the Fix

Quick answer: Meta Ads Manager and Shopify count different things. Meta credits a purchase to your ads if the buyer clicked within 1 or 7 days or only saw an ad within 1 day (depending on your ad set’s attribution setting), adds modelled conversions where data is missing, and can count a purchase twice if Pixel and Conversions API events are not deduplicated, while Shopify counts real orders, once each. The fix is to treat Shopify orders as the source of truth and reconcile weekly: record Shopify orders, add Meta’s 1-day click, 7-day click and 1-day view columns, check UTM tags and Events Manager for duplicates, and track the ratio between the two. The aim is a gap you can explain, not a match.

Picture this, with illustrative numbers: Meta says 120 purchases last week. Shopify says 200 orders in total, and its own marketing report credits 44 of them to Meta. Nobody is lying and no dashboard is broken. The two systems answer different questions, and until you know what the gap is made of, you cannot say what your ads really return.

This guide covers each reason Meta can show more than Shopify, then gives you a weekly routine to reconcile the two. Every statement about Meta and Shopify features comes from their own documentation, read as at 30 October 2026. Both change these pages often, so where something could have moved I say so.

One boundary first. Prism3 sells Shopify SEO, GEO and CRO. We do not run ads, email or SMS, so this is not a guide to buying better media. It is about measurement: the numbers you use to judge paid spend are only as good as the way they are counted, and measurement is part of our work on conversion after the click. Every worked number below is illustrative, built to show the arithmetic. None is from any store.

Which version of the gap do you have?

“Meta shows more sales than Shopify” can mean two different things.

Version A: Meta’s purchases are higher than the orders Shopify credits to Meta. Meta reports 120, Shopify credits 44 to Meta Ads. This is the normal gap, produced by attribution settings, view-through, modelling and different tagging. The job is to understand its size.

Version B: Meta’s purchases are higher than your total Shopify orders. Meta reports 220 for a week in which Shopify recorded 200 orders from every channel. Meta only claims credit for some orders, so by a wide margin this should not normally happen. Look for double-counting or a wrong event first (Reason 4). That is my judgement, not a rule from either platform, and a small excess can come from the two systems dating a purchase differently.

To tell which you have, compare Meta’s purchases with total Shopify orders for the same completed Monday-to-Sunday week. Lower means Version A. Higher means start at Reason 4.

One counts orders, the other claims credit

Shopify’s reports count orders placed on your store. Meta’s help centre says actions taken off your ad, such as a purchase on your website, are attributed back to your ad if they happened within a certain number of days after someone viewed or clicked it. That is a claim made under rules Meta chooses.

Shopify’s help centre says the same from its side: each platform credits sales using its own rules, so if a customer clicks both your email and your Google ad before buying, each platform can count the same sale. So three different numbers are in play: your total Shopify orders (what happened), the orders Shopify credits to Meta (under whichever attribution model you select; the Growth view of Shopify’s marketing performance page defaults to last non-direct click), and the purchases Meta credits to its ads (under settings chosen per ad set). Only the first is a count of real events. The other two are opinions about cause, made by different rules, so they should differ.

Reason 1: attribution settings (7-day click, 1-day view)

For website conversions, Meta’s help centre lists these standard settings:

  • Click-through: events within 1 day or 7 days after a link click on your ad.
  • View-through: events within 1 day after an impression of your ad.
  • Engage-through: events within 1 day after a non-link click action on your ad, which for video includes playing it for 5 seconds.

The widest standard combination therefore credits Meta if the buyer clicked up to seven days earlier, or simply had the ad appear on screen the day before. Shopify credits an order to a channel using the attribution model you select.

The setting is chosen per ad set, and Meta says standard attribution optimises delivery for the selected windows and behaviours, so it shapes delivery as well as reporting. Meta also says some accounts may still use prior versions of click-through and engage-through attribution while the feature rolls out, and that results cannot be compared in the campaign overview table across ad sets with different attribution models (it means standard against incremental). Mixed windows inside the standard model are a similar trap in my view, so read what your own ad sets say before adding campaigns together.

Ads Manager can show the other windows side by side. Meta’s help pages call the tool Compare attribution settings (engage-through article) and Comparing windows under Customise columns (ad set average cost article, reached from the Performance drop-down menu). The routine below uses it.

Reason 2: view-through, the biggest swing factor

Someone scrolls past your ad, does not click, and buys the next afternoon after searching your brand name on Google. With 1-day view-through on, Meta can credit the ad. Shopify, working from the visits it can see, is likely to credit the search visit.

Meta’s engage-through article gives a worked example of how Results are counted: with 1-day click-through, 1-day view-through and 1-day engagement selected, 5 click-through, 15 view-through and 3 engagement conversions show 20 in Results. In Meta’s example, three-quarters of Results is view-through. That is one illustration, not a typical share for any store.

So the comparison columns matter more than the headline. The headline includes view-through if your setting does. The 1-day click column does not. If Meta’s 1-day click purchases sit close to what Shopify credits to Meta while the headline is far higher, the gap is mostly view-through and longer windows, not broken tracking. That is my reading, not a rule from either platform, and it is an easier problem to live with.

View-through is not fake: ads can influence a purchase without a click. But it is a claim about influence that Shopify orders cannot confirm, so a budget decision built on it should be tested. Meta’s incremental attribution model, which it describes as predicting whether an ad caused a conversion, is a model too.

Reason 3: modelled conversions and iOS

Two things get lumped together as “iOS”.

What Apple did. Apple’s App Tracking Transparency framework, from iOS 14.5, requires an app to get the user’s permission before tracking, meaning linking data from the app with data from other companies’ apps, websites or offline properties for targeted advertising or advertising measurement. It is a permission prompt for apps, not a switch that stops a browser recording a purchase on your store.

What Meta says followed. Meta’s help centre says Apple’s iOS 14 release affects how Meta receives and processes conversion events from tools such as the Meta pixel, and that businesses reporting on web conversion events from its tools are affected. Meta says it uses statistical modelling where conversion data may be partial or missing, for example because of privacy preferences, to estimate conversions and to distribute them across campaigns, ad sets and ads. It adds that no modelling solution is perfect.

For reconciliation: Meta’s purchases can include estimated ones, and Shopify orders never do. I found nothing in either platform that says how many of a week’s purchases were modelled, so do not pretend to a precise split.

The error is not one-way. Meta says ad blockers can stop its pixel firing, which makes it report fewer conversions than your own data, and that referrer-based tools can under-report Meta traffic. This table sorts the causes by direction.

CausePushes Meta’s numberSource
1-day view-through creditUpMeta attribution settings page
7-day click windowUpMeta attribution settings page
Modelled conversionsAdds estimates to what is counted directlyMeta modelled conversions page
Pixel and server events not deduplicatedUpMeta for Developers
Same sale claimed by email, Google and MetaUp (across platforms)Shopify marketing performance page
Ad blockers stopping the pixelDownMeta; Shopify data-sharing page
Missing or lost UTM tagsDown for Shopify’s Meta creditMeta; Shopify; Google Analytics Help

Reason 4: duplicate counting (two kinds)

Kind one: the same purchase sent to Meta twice. Meta recommends running its Conversions API alongside the Meta pixel (a “redundant setup”). When both send the same event, you must set up deduplication. Meta’s recommended method adds the same ID to both: the pixel’s eventID must match the Conversions API event_id, and the event names must match. Meta says events are only deduplicated if the matching pair arrives within 48 hours of the first.

On Shopify, the Facebook and Instagram app’s data-sharing level decides what is sent. Shopify says Standard uses the pixel, which a browser-based ad blocker can stop, while Enhanced and Maximum add the Conversions API, which sends the purchase event server to server so ad blockers cannot block it. Shopify’s pixel page adds that Enhanced and Maximum send extra customer information including name, location and email address, and the data-sharing page says to make sure your privacy policy is up to date. What that means for your store is a question for a qualified adviser. This is not legal advice.

The classic Shopify failure is a second pixel. Shopify warns that if you added a Meta pixel to your theme code and then set one up through the Facebook and Instagram app, the store has more than one pixel, which can produce duplicate or incorrect data, and to check that an agency or app managing your Facebook ads will not add duplicates. Test it (set-up step 5 below) rather than assume.

Kind two: the same sale claimed by several platforms. This is not a bug. Meta, Google Ads and your email tool each look at the journey separately and each can credit a sale it touched, as Shopify’s page says. In the worked example below, three platforms claim 235 purchases against 200 real orders. For one honest store-level number, see ROAS vs MER vs blended CAC.

Reason 5: UTM and tracking loss on the Shopify side

Most causes so far push Meta’s number up. This one lowers Shopify’s credit to Meta, widening the gap from the other side.

Shopify says traffic arriving with utm_campaign parameters is attributed to marketing, and that its Sales attributed to marketing report covers only traffic that can be directly attributed, such as UTM campaigns. It lists the referrer name as N/A for some direct traffic when the referrer cannot be determined (Do Not Track, a proxy or firewall, or a shortened URL).

Meta can add tags for you. Its help page says that as of 1 January 2024 you may have some URL parameters added automatically (source, medium, and ad, campaign and ad set IDs, with a smaller set for Shopify merchants). The same page says a parameter only applies to the first product page: if someone leaves and returns to your product page organically later, it is lost. So a shopper who sees your ad, leaves, and comes back to the product page on their own later arrives untagged.

Google Analytics Help adds the discipline: if you set one UTM parameter, set all the relevant ones, because missing parameters result in “(not set)” values, and values are case-sensitive, so “Meta” and “meta” count as different sources.

The test takes two minutes. Click a live ad’s link in a private browser window (it is a real click, so it costs what any click costs), wait for the store to load, and read the address bar. Are the tracking parameters (utm_ tags or whatever your ad uses) still there after any redirect or link-rewriting app? If not, Shopify and GA4 may credit that visit to something else however well Meta tracked it.

What changed recently (as at 30 October 2026)

Meta’s API windows. Meta for Developers’ 2025 out-of-cycle change log has an entry dated 13 October 2025: from 12 January 2026, data for the 7-day view-through (7d_view) and 28-day view-through (28d_view) windows is no longer available in the Ads Insights API and returns no data. If you pull Meta numbers into a sheet through a connector or script, columns based on those windows would be empty. I found no further attribution-window change in the 2026 out-of-cycle change log (latest entry 22 October 2026) or the Marketing API change log (last updated 21 May 2026). That describes those pages on 30 October 2026, not the screen in your account, so check the setting in Ads Manager itself.

Shopify’s September 2026 changes. Shopify says a session measurement rollout ran from 21 to 23 September 2026: sessions now continue past midnight UTC, some sessions without a pageview are counted, and identified bot sessions are filtered from session reports by default. Orders, sales and customer counts are not affected, but conversion rate and other session-based metrics can change, so treat the update as a new baseline. Shopify also says that as of September 2026 the Performance by marketing channel report covers all traffic to your store, not only attributable traffic, so its totals may be higher than before.

The lesson is the same both times: reconcile on orders, and note 21 September on any row that shows sessions or conversion rate.

The weekly reconciliation routine

Once set up, it takes about 30 to 45 minutes a week. The rule: Shopify orders are the source of truth, because each is a real checkout. Everything from an ad platform is a claim you test against it.

Set it up once (about an hour)

  1. Define an order. Shopify’s marketing reports include cancelled, pending and unpaid orders and exclude test and deleted orders, while its sales discrepancies page says an order export includes test orders that sales reports leave out. Pick one source and write the rule down. The simplest choice is to take A and B from the same Performance by marketing channel report (all channels for A, the Meta Ads row for B), so both follow one rule.
  2. Define the week. Use Monday to Sunday in your store’s time zone, and only weeks that ended at least seven days ago, so Meta’s 7-day click window has played out for every order in them. Shopify’s discrepancies page names differing reporting time zones as a cause of differences between Shopify Analytics and third-party tools, so check your Meta ad account’s time zone matches your store’s (my inference, not a Meta statement). I could not confirm from Meta’s help pages how Ads Manager dates a purchase, so do not reconcile single days. Use weeks, with a four-week running total beside them.
  3. Check what your ad sets use. Record each ad set’s attribution setting, and the date you change any.
  4. Fix one tagging style. Lowercase utm_source, utm_medium and utm_campaign, used by everyone who builds links. Run the private-window test from Reason 5.
  5. Run the duplicate test once. Place a test order on a real device and watch the Purchase event in Events Manager. Confirm it arrives once, and that where the pixel and Conversions API both send it, Events Manager shows it deduplicated rather than twice. If a pixel is also pasted into your theme, remove it as Shopify advises. Keep a note of the test order, because Shopify’s order exports include test orders.

Each week

One row per week:

LineWhere it comes fromWhat it checks
A. Shopify ordersSame report as B, all channelsThe anchor
B. Orders Shopify credits to MetaPerformance by marketing channel, Meta AdsShopify’s view of Meta
C. Meta purchases at your settingAds ManagerMeta’s headline claim
D. Meta 1-day click, 7-day click, 1-day viewCompare attribution settingsWhat the headline is made of
E. Meta Purchase events receivedEvents ManagerDuplicates, against A
F. Spend and Meta purchase valueAds ManagerROAS inputs, same basis

Record A, B, C and D. For B, Shopify’s help pages disagree on the default: the Growth view uses last non-direct click, while the report builder pre-selects Last click, so choose a model and keep it fixed. Shopify says its Any click model gives each clicked channel 100% of the credit, so it allocates more than your orders, is best used to analyse a single channel, and can be used to reconcile attribution reported by each channel. That makes it the most generous click model Shopify offers, so record B under your chosen model and under Any click. For D, note which column matches your ad set’s setting.

Record E and run the duplicate check. Meta says Events Manager shows most events received, while Ads Manager shows only attributed events. If Events Manager’s Purchase count is clearly above Shopify orders (A), something is sending purchases that did not happen or sending them twice. Test orders are one cause. This is my method built on Meta’s description, and “most events” means a small difference proves nothing.

Compute three ratios. The trend matters more than any single week.

  • C ÷ A, the share of your orders Meta claims. My rule of thumb: for one platform it should be under 100%. Over 100%, look at duplicates first.
  • C ÷ B, the size of Version A. Your normal gap.
  • D (1-day click) ÷ B. How close Meta’s strictest view gets to Shopify’s. If it is far from 1, look at tagging before windows.

Compute ROAS under each lens. Meta defines purchase ROAS as purchase conversion value divided by amount spent, and says modelling may be used for events it cannot count directly. Work out Meta’s headline ROAS, the 1-day click ROAS, and Shopify-credited revenue divided by the same spend. You are measuring how far apart the lenses sit, not hunting for the right one.

Write one line. “C ÷ B is 2.7 against 2.5 over the last four weeks; nothing changed” is a good week. “C ÷ B jumped from 2.5 to 4.1 after Tuesday’s theme update” is a task.

A worked example (illustrative numbers)

These are made-up numbers for one week. They are not from any store. Say $4,000 spent on Meta and an average order value of $90.

StepPurchasesWhat explains it
Meta headline (7-day click, 1-day view)120Meta’s claim
Less view-through only82Saw the ad, did not click
Less clicks 2 to 7 days earlier48The longer click window
Orders Shopify credits to Meta44Tagging, a later click elsewhere, a purchase Shopify cannot link

The same week under each lens:

  • Meta headline: 120 × $90 = $10,800, ROAS 2.70.
  • 7-day click only: 82 × $90 = $7,380, ROAS 1.85.
  • 1-day click only: 48 × $90 = $4,320, ROAS 1.08.
  • Shopify’s credit to Meta: 44 × $90 = $3,960, ROAS 0.99.

Same spend and week, four answers between 0.99 and 2.70, each correct on its own terms. The bridge shows where to look: the biggest step is view-through (38 of the 120), which no store data can confirm, then the longer click window (34). Only the last step, 4 purchases, is the kind of gap tagging would explain.

Now add the other platforms. If Meta claims 120, Google Ads 60 and your email tool 55, that is 235 claimed against 200 real orders, or 117.5%. Nothing is broken: each platform counts sales it touched. Store revenue of $18,000 (200 × $90) on $4,000 of Meta spend is $4.50 per ad dollar, but that includes organic, email and returning customers, so it is not Meta’s return either. It is a store-level ratio to watch as a trend.

Decision rules

  • Ratios stable, Version A only: Meta’s number is a usable direction signal inside Meta. Do not use it as the allocation number for the whole business.
  • C ÷ A over 100%, or 1-day click above total orders, or E well above A: treat it as duplicate counting or a wrong event until proven otherwise. Re-run the step 5 test and check the theme for a second pixel before touching any campaign.
  • D ÷ B far above 1: Meta’s strictest view sees far more than Shopify credits. Look at tagging: the private-window test, UTM style, redirects.
  • A jump in a week you changed something: theme or app changes, a new pixel, a different attribution setting, a new campaign type, or a sale. Match the jump to your log before blaming a platform.
  • Sale weeks: the ratio can move, because email and organic clicks arrive alongside ads and more sales can be claimed by more than one platform. Compare with the same sale last year, not last week, and see the Black Friday checklist.

What to do with the reconciled numbers

After six to eight weeks you have a known relationship between Meta’s claim and your real orders.

Run the business off Shopify. Revenue, orders, new customers and the cost per customer you plan against come from there. Read the weekly numbers in the three numbers post against Shopify orders too.

Use Meta’s ROAS to compare ads, not to judge Meta. Inside Meta the same rules apply to every ad, so comparing one ad set with another is fair. The headline is a poor number for deciding whether to spend more or less overall; our attribution piece argues that a holdout test is more defensible than platform ROAS. If Meta ROAS has fallen, work through what to check when Meta ROAS drops.

Fix measurement before optimising. If the pixel fires twice, UTMs are inconsistent and your store’s conversion rate is unknown, every decision is a guess. That is the order our CRO work runs in: tracking audit and repair come before any optimisation. For how GA4 and Shopify count differently, see GA4 vs Shopify Analytics. If clicks are high and orders low, the cause may not be reporting: see Facebook Ads clicks but no sales and what a good Shopify conversion rate looks like.

Paid, organic, email and conversion rate all feed the same orders, which is why several platforms can claim one sale; the DTC growth system shows how the pieces fit. Prism3 does not run or manage ads or email. If reconciling shows Meta’s real contribution is smaller than the headline, the next questions are how many visitors buy and how much growth comes from organic and AI search, which is where we work.

Key takeaways

  • Meta counts purchases it claims credit for inside an attribution window. Shopify counts orders. They are meant to differ, so track the size of the gap.
  • Meta’s standard website settings are 1-day or 7-day click, 1-day view and 1-day engage-through (Meta Business Help Centre, as at 30 October 2026). Read what your ad sets use.
  • In Meta’s own example, view-through was 15 of 20 conversions in Results.
  • Duplicates come in two kinds: one purchase sent twice (check event IDs, a second pixel) and one sale claimed by several platforms (normal).
  • Missing UTMs make Shopify and GA4 under-credit Meta.
  • From 12 January 2026 the 7-day and 28-day view-through windows return no data in Meta’s Ads Insights API. Shopify’s September 2026 changes affect sessions, not orders.
  • Reconcile weekly on completed weeks, with Shopify orders as the anchor.

FAQs

Why does Meta Ads Manager show more purchases than Shopify?

Meta credits purchases to your ads if the buyer clicked within 1 or 7 days or saw the ad within 1 day, can include modelled conversions where data is missing, and can double-count if Pixel and Conversions API events are not deduplicated. Shopify counts real orders once each and credits them to a channel with the attribution model you select.

Which Meta attribution setting is closest to what Shopify shows?

The 1-day click column is the strictest of Meta’s click and view options for website conversions, so it is the usual starting point. It still will not match, because Shopify’s credit depends on the model you select and on the visit being identifiable. Put 1-day click, 7-day click and 1-day view side by side and treat the differences as information.

Is Meta over-reporting, or is Shopify under-reporting?

Often both. Meta’s number can include view-through, longer click windows and modelled conversions. Shopify’s credit to Meta can be low when UTM tags are missing, when a buyer returns by another route, or when the purchase happens on another device. Shopify’s total order count is the real one, but its credit to one channel is a model too.

Should I turn off view-through attribution?

Not blindly. Meta says standard attribution optimises delivery for the selected time windows and behaviours, not only reporting, so a change can alter delivery. Watch the 1-day click and 7-day click columns beside the headline for a few weeks first. If you then change it, do it deliberately and log the date. Prism3 does not run ads, so this is a call for whoever runs yours, informed by your numbers.

Can Meta show fewer purchases than Shopify?

Yes, and normally it should, because Shopify counts orders from every channel and Meta claims only some. Meta can also miss orders from its own ads: it says an ad blocker can stop its pixel firing.

Does the Conversions API close the gap?

It reduces one cause, lost browser events, and can create another if duplicates are not handled. Meta says that when you send the same event through both the pixel and the Conversions API you need deduplication, using a matching event ID and event name within 48 hours. It does nothing about view-through, longer click windows or other platforms claiming the same sale.

How often should I reconcile Meta and Shopify?

Weekly, on whole weeks that ended at least seven days ago, so Meta’s 7-day click window has played out. Also reconcile after any change to your theme, apps, pixel, attribution setting or tracking.

Keep reading

Is your cost per customer higher than it should be?

Spending more to get the same orders? Part of your cost per customer is how many visitors buy. Book a free 30-minute diagnostic: we look at where your store loses buyers after the click, using your own numbers, and tell you what to fix first. We do not run ads or email. No pitch. No email gate. If conversion and tracking are where your numbers point, see how our Shopify CRO service works.

Free 30-min diagnostic

Seen enough?
Book a free diagnostic.

We'll look at where your store loses buyers after the click and what to fix first. No pitch. No email gate. 30 minutes.

More from Prism3