Meta counts the purchase events your pixel and Conversions API send it. Shopify counts paid orders. They'll never match exactly, but a big gap means something is broken. At an Australian fire pit retailer we manage, the pixel reported 22 purchases in August and the store had 12 real orders. The gap was duplicates, test orders and failed checkouts.
If you run Meta ads for a Shopify store, this check is worth an hour a month. It stops you scaling on sales that never happened, and it's how we keep our own billing honest.
Why Meta and Shopify never match
They measure different things. Meta tries to count the purchases its ads caused. Shopify records every paid order, whatever brought the customer in. Even with tracking set up properly, some gap is normal:
- Attribution windows. By default, Meta credits a purchase to an ad if the person clicked it in the previous seven days or saw it the day before. Shopify has no idea which ads anyone saw.
- Modelled conversions. When Meta can't track someone directly, mostly on iPhones, it estimates. Estimates won't line up neatly with order numbers.
- Other channels. If you also run Google Ads or email, the same order can be claimed by more than one platform. Each report looks fine on its own. Added together they come to more than the store took.
- Time zones. If the ad account and the store sit in different time zones, late-night orders land on different days.
- Refunds and cancellations. Meta keeps the purchase. Shopify shows the refund.
Those explain small gaps. When Meta shows close to double what the store took, something is firing that shouldn't be.
What was behind the gap
The retailer sells fire pits online, peaks in winter, and pays us a share of product sales. Because our fee depends on what the store banks, we match every Meta-reported sale to a real order each month. In August the two lists didn't come close.
From our accounts · Unique Fire Pits · August 2026
Meta Ads Manager purchases against the store's paid orders, matched one by one. We billed on the real orders.
Case study result. Outcomes vary.
When we lined the two lists up, every extra purchase fell into one of three buckets.
- Duplicates. The same customer and the same total, recorded twice within minutes. The usual causes are a reload of the order confirmation page, or a pixel installed twice.
- Test orders. Small purchases put through to check the checkout worked. The pixel counted them like any other sale.
- Failed checkouts. The purchase event fired but the payment never went through, so there was no order to ship.
We showed the retailer the matched list, fixed what we could and billed on the real orders. Meta's report still says what it says. The store's number is the one we go by.
How do I reconcile Meta against Shopify, step by step?
You need a spreadsheet, an Ads Manager export and a Shopify order export. The first month takes longest. After that it's routine.
- Pick the window and lock the settings. Use a full calendar month. Note the attribution setting in Ads Manager and keep it the same from month to month, or the comparison means nothing.
- Export Meta's purchases by day. In Ads Manager, break results down by day and export purchases and purchase value for the window.
- Export the store's orders. From Shopify, export orders for the same dates with the order number, time, customer, total and payment status. Check the store and the ad account use the same time zone.
- Take out what isn't a sale. Remove test orders, voided or failed payments and cancellations. List refunds separately.
- Look for duplicates. Sort by customer and time. Two purchases with the same email and total a few minutes apart are almost always one order counted twice.
- Match day by day. Put Meta's count next to the real order count for each day. Any day where Meta reports more purchases than the store had orders is a day to dig into.
- Compare the dollars last. Meta's purchase value often includes GST and shipping. If you're comparing it with product sales, take those out first, or you'll blame the pixel for postage.
- Write both numbers down. Keep one line a month: Meta-reported, store-verified and the gap between them. The trend tells you more than any single month.
What should I fix first?
Once you know where the extra purchases come from, most fixes are small.
- Make sure the pixel fires once. A pixel added through Shopify's Facebook and Instagram app and again by hand in the theme will count every order twice. Events Manager shows every source sending purchase events.
- Share one event ID. If purchases go to Meta through both the pixel and the Conversions API, they need the same event ID so Meta can drop the copy.
- Make test orders easy to spot. Use a hidden test product or a staff-only code, then filter those orders out of every report.
- Check after every change. Theme updates, checkout changes and new apps are when tracking usually breaks, so look at Events Manager the same week.
If you'd rather not do this yourself, it's one of the first things I check in the free audit.
How much of a gap is normal?
There's no rule that fits every store, so I won't give you one. What I can show you is a normal month on the same account. In July, the retailer's peak, Meta's number and the store's number sat much closer together.
Results value
A$23,432
Meta-reported, 8.3x
July 2026. On A$2,830 of spend.
Product sales
A$19,795
Store-verified, about 7x
Same month. Matched order by order against the store.
Case study results. Outcomes vary.
Read the case studyThat's the pattern to aim for: a gap you can explain line by line. Then scale on the store's number. Put your own costs through the break-even ROAS calculator and hold the store-verified return up against it, rather than the one in Ads Manager.
Questions about Meta and Shopify numbers
Why does Meta show more purchases than Shopify?
Usually duplicate events, test orders, failed payments, or orders Meta credits to an ad that another channel also claims. Small gaps are normal. Big ones mean something is firing twice or firing when it shouldn't.
Why does Shopify show more orders than Meta?
Because Shopify records every order, including ones from email, Google, word of mouth and returning customers who never saw an ad. Meta only claims the ones it thinks it caused, and it misses some it can't track.
Which number should I use to judge my ads?
Both, for different jobs. Use Meta's numbers to compare ads inside the account. Use the store's numbers to decide whether the ads are paying and whether to spend more.
Sources
Unique Fire Pits, an Australian fire pit retailer we run the Meta ads for. Meta Ads Manager daily purchase breakdowns and the store's order exports for July and August 2026, matched order by order for our monthly revenue-share reconciliation.