Guide · E-commerce · Tracking

Meta purchases not matching Shopify? How to reconcile them

Why the two numbers drift apart, what we found when one store's pixel over-counted, and the order-by-order check we run before anyone gets billed.

Jump to a section
  1. Why they never match
  2. The fire pit retailer's gap
  3. Reconcile, step by step
  4. What to fix first
  5. How much gap is normal
  6. Questions

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.

  1. 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.
  2. Export Meta's purchases by day. In Ads Manager, break results down by day and export purchases and purchase value for the window.
  3. 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.
  4. Take out what isn't a sale. Remove test orders, voided or failed payments and cancellations. List refunds separately.
  5. 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.
  6. 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.
  7. 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.
  8. 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 study

That'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.

Jed Lynham

Jed Lynham, founder of Scaled Marketing. Published 24 Sep 2026. About Jed

Free audit, then your Scaling Roadmap

It's time to get Scaled.

Fill in a few details and I'll go through your ads, your website or store, and how you follow up enquiries, then show you what's leaking and what we'd fix first. If we're not a fit, no worries at all. You'll still leave with something you didn't know before.

Jed Lynham, founder of Scaled Marketing

Jed Lynham
Jed calls you personally, usually the same business day.

Get your free audit

We take on 2 to 3 new long-term partners at a time.

Referred by a client? Skip the queue

Free audit, then a roadmapJed calls you personally.

Get your free audit