Clarvivo blog
Meta Ads purchases not matching Shopify orders? What's normal and what's broken
Meta and Shopify rarely agree on purchases. Why Meta reports more or fewer orders than your store, how attribution and deduplication cause it, and how to check.
- meta ads
- shopify
- conversions api
- attribution
Meta Ads Manager says your campaigns drove 140 purchases last week. Shopify shows 95 orders in total, from every channel. Or the opposite: Shopify had a strong week and Meta reports a handful of purchases.
Both happen constantly, and both can be either normal or a sign of broken tracking. The difference comes down to what Meta is counting: Meta reports purchases it attributes to its ads, under its attribution settings, from the events your Pixel and Conversions API send. That's a claim, not a count of your orders.
Why Meta reports more purchases than Shopify
View-through attribution
By default, Meta credits a purchase to an ad if the buyer clicked an ad within 7 days or viewed one within 1 day. Someone who scrolled past your ad and later bought through Google, email or a direct visit is counted as a Meta purchase. If Google Ads also claims the same order, the two platforms together report more purchases than you had.
To see the difference, compare the same report with the attribution setting at 7-day click only. The gap between the two is the view-through share.
Duplicate Purchase events
The most common real bug. A Shopify app and a manually added pixel both send Purchase. Or the Pixel and the Conversions API both send the purchase without a shared event_id, so Meta can't tell they're the same order. Or the thank-you page fires Purchase again when it's refreshed.
The Meta Pixel + CAPI Dedup Checker checks whether your browser Purchase carries an event_id that a server event can match. The Meta Event Parameter Validator checks value, currency and event ID on purchase-like events.
Modelled conversions
Meta also reports modelled conversions for activity it can't observe directly. These are estimates, so they won't line up with individual orders.
Why Meta reports fewer purchases than Shopify
Not every order comes from Meta
Most stores sell through several channels. Meta should report only the share it can attribute to its ads.
Consent, ad blockers and iOS
Browsers and devices that block the Pixel, and visitors who decline tracking, reduce what Meta can see. The Conversions API recovers some of it by sending events from your server.
Purchase missing on some checkout paths
Express checkouts and some payment methods can complete without firing the browser Purchase. If you rely on the Pixel alone, those orders are invisible to Meta. Check your confirmation page with the Meta Pixel Checker and test each payment method.
Normal vs broken: a quick test
| Pattern | Likely meaning |
|---|---|
| Meta lower than Shopify, stable over time | Normal: Meta only claims a share, and some events are lost |
| Meta lower than Shopify, suddenly much lower | A Pixel or CAPI break, often after a theme, app or checkout change |
| Meta higher than Shopify with default attribution, lower with 7-day click | View-through attribution claiming other channels' orders |
| Meta higher than Shopify even with 7-day click only | Duplicate Purchase events |
| Meta and Shopify counts identical every day | Suspicious: check that orders aren't being imported or duplicated into reporting |
The Shopify vs Meta Purchase Gap Analyzer compares the two exports over the same dates and classifies the gap into these patterns.
Don't add Meta and Google Ads together
Each platform claims every order it can attribute under its own rules. Adding Meta's purchases to Google Ads' conversions double-counts every customer who touched both. The Claimed Revenue Overlap Checker compares combined platform claims with your store's actual orders and revenue.
How to reconcile Meta with Shopify
- Export both for the same dates. Use Shopify paid orders and Meta purchases with purchase value.
- Run the comparison with default attribution and with 7-day click only.
- If Meta is higher on 7-day click, look for duplicate Purchase events and missing
event_id. - If Meta dropped suddenly, check the Pixel on the confirmation page and the Conversions API status in Events Manager.
- If value doesn't match, check whether purchase value includes tax and shipping, and whether it's sent in the store currency.
Which number should drive budget?
Neither platform's own report. Use your store as the record of what happened, and an attribution model applied consistently across channels to decide what caused it. That's how Clarvivo works: revenue comes from your payment provider, and channels are credited from one consistent view of each customer's journey, not from each ad platform marking its own homework.
FAQ
Why does Meta show more purchases than Shopify? View-through attribution, duplicate Purchase events (Pixel plus CAPI without a shared event_id, or two apps), and modelled conversions.
Why does Meta show fewer purchases than Shopify? Meta only reports purchases it can attribute to its ads, and consent, ad blockers and checkout paths that skip the Pixel all reduce what it sees.
How do I stop Meta double counting purchases? Send the same event_id with the browser Purchase and the matching Conversions API event, and remove duplicate pixel installations.
Should I compare with 7-day click attribution? Yes. It removes view-through claims and gives a more conservative figure to compare against your store.