Facebook Ads and Shopify show different numbers because they answer two different questions. Facebook counts every purchase its ads plausibly influenced — including sales where someone only saw the ad and never clicked, plus statistically modeled conversions. Shopify counts only real, completed orders on your server, credited to the last click. So one sale can be one Facebook conversion and one Shopify order at the same time, and the totals rarely line up. A gap of roughly a fifth to a third is normal, not a bug.

The short version: two tools answer two different questions

Shopify is a cash register. It records an order the moment a checkout completes, on your server, where ad blockers and privacy prompts cannot touch it. That count is the truth about how many sales happened.

Facebook Ads Manager is a credit-claiming machine. Its job is to answer how many of those sales my ads plausibly caused — a fuzzier, more generous question by design. It counts views, clicks, and estimates. Neither tool is lying. They are measuring different things.

Once you accept that, the mismatch stops being alarming and becomes explainable. Below are the exact mechanisms, in order of how much damage each one does. If you want the full cross-tool picture — including where Google and GA4 fit — start with our guide to reconciling your ecommerce data.

The seven reasons Facebook and Shopify disagree

1. They use different attribution models

Shopify's default is last non-direct click: 100% of an order's credit goes to whatever channel the buyer clicked last. Facebook credits itself whenever a purchase falls inside its attribution window after a click or a view. So the same order can be counted once by each tool and attributed to different sources. This is structural — no amount of better tracking makes last-click and window-based credit agree.

2. View-through conversions (the biggest inflator)

This is the single largest reason Facebook's number runs ahead of Shopify's. With the current default window of seven-day click plus one-day view, according to Foreplay's attribution guide and Jon Loomer, Facebook claims credit for a purchase made within a day of someone merely seeing your ad — no click required. Shopify has no concept of a "view." It only sees a completed checkout. Every view-through conversion is a sale Facebook counts and Shopify files under some other source.

3. Modeled (statistical) conversions

When Facebook cannot directly observe a sale — the buyer opted out of tracking on iOS, or an ad blocker killed the pixel — it estimates the conversion with a machine-learning model and reports the estimate as if it were a counted event. Shopify never models. It reports only real orders. So Facebook's total can exceed the number of events it actually saw, even when your tracking is flawless.

4. Click-date vs order-date reporting

Facebook reports a conversion on the date of the ad click or view that earned the credit, not the date of the purchase. A click on Monday that converts Thursday shows up in Facebook on Monday and in Shopify on Thursday. Compare a single day between the two tools and you are comparing two different cohorts. Always compare on trailing seven- or fourteen-day windows.

5. Cross-device tracking

Facebook recognizes logged-in users across devices. Someone who sees your ad on their phone and buys on a laptop is still credited to the ad. Shopify's last-click ties that order to whatever landed on the buying device — often "direct" or "organic." The sale is real in both; the attribution splits.

6. Refunds don't lower every dashboard

When a customer gets refunded, Shopify reduces its net and total sales. Facebook generally does not retroactively remove the original conversion. So after a wave of refunds, Facebook's total stays high while Shopify's drops — widening a gap that has nothing to do with tracking.

7. Duplicate events (the one that inflates 2×)

If both the browser Pixel and the server-side Conversions API send a Purchase for the same order without a shared deduplication key, Facebook counts it twice. Per Meta's own deduplication docs, the two copies are only merged when they share an event_id and arrive within forty-eight hours of each other. If your Facebook purchases sit at roughly double your Shopify orders, you almost certainly have a dedup misconfiguration — not real inflation. This is the opposite of causes 2 and 3, and it's fixable.

What gap is "normal"?

On the default attribution window, a twenty to thirty-five percent gap between Facebook-reported purchases and Shopify orders is expected, according to Vaizle and TrackBee. Most of the excess is view-through plus modeling.

A useful sanity check: switching a campaign from seven-day-click-plus-one-day-view down to one-day-click can cut reported conversions by roughly forty percent, per TrackBee — the same real sales, viewed through a narrower credit window. That single lever shows how much of Facebook's headline number is window mechanics rather than incremental demand.

Some of the gap is genuine data loss on Shopify's side too. Ad blockers, Safari and Firefox tracking prevention, and cookie-consent declines stop client-side pixels from firing on an estimated ten to twenty-five percent of users, according to Audiense and Elevar. Those sales still hit Shopify's server, but they make Facebook's picture noisier. For a deeper breakdown of when the overcount is normal versus broken, see why Facebook Ads overreports compared to Shopify.

A worked example: one week, four different numbers

Say you run a print-on-demand store and, in one week, one hundred real orders come through Shopify. To keep the arithmetic clean, say each order is product plus shipping and tax that adds up to $49: 40 + 5 + 4 = $49 per order (these are illustration figures, not benchmarks). Of the hundred buyers: 55 clicked a Facebook ad in the last seven days, 15 only saw one within a day, 10 came from Google, and 20 from organic or direct. Eight later request refunds.

Here is how each system reports the exact same week.

Facebook Ads Manager: about 78 purchases. It counts 55 click-through plus 15 view-through (70 by window), then adds roughly 8 modeled conversions for buyers it couldn't observe. It reports many of them on the click date, so some land in the prior week. It does not subtract the 8 refunds, and it logs revenue at subtotal only: 78 × $40 = $3,120.

Shopify Analytics: 100 orders. By last-click it credits about 55 to Facebook, 10 to Google, and 35 to search, direct, or other. The 15 view-through buyers clicked nothing, so Shopify does not credit them to Facebook. Total sales: 100 × $49 = $4,900, dropping to about $4,508 after the 8 refunds of $49 each.

Your bank payout: less again. The deposit is the captured charges minus fees, refunds, and disputes. Using Shopify's Basic-plan US rate of 2.9% plus 30¢ per transaction, per ReportPundit and Webgility, plus one $15 chargeback fee (Webgility), the arithmetic runs:

  • Captured charges: 100 × $49 = $4,900.00
  • Processing fees: (2.9% × $4,900) + (100 × $0.30) = $142.10 + $30.00 = −$172.10
  • Refunds issued: 8 × $49 = −$392.00
  • One chargeback fee: −$15.00
  • Net deposited: $4,320.90

So one week of one hundred orders produces four different "sales" numbers: Facebook's 78 purchases at $3,120, Shopify's 100 orders at $4,508, and a bank deposit of $4,320.90. None is wrong. They measure influence, completed revenue, and cash — three different realities.

Which number should you trust?

For how many sales happened and how much revenue you earned, trust Shopify's order count and total sales. That is server-side truth.

For how many of those sales your ads plausibly influenced, read Facebook's number — but never expect it to equal Shopify, and never treat it as a revenue figure. For the cash actually in your account, reconcile the payout against balance transactions, not against the sales report. We dig into the tie-breaker in which is right, Facebook Ads or Shopify data, and the same logic applies to Meta's overreporting versus Shopify.

Stop reconciling three tabs by hand

The real problem isn't that the numbers differ — it's that ROAS computed from mismatched numbers hides whether an order actually made you money. Facebook says a campaign is winning at subtotal-only revenue; your payout, after product cost, shipping, fees, and refunds, may say it's underwater.

That per-order truth is what PodVector is built to compute. It connects Shopify, Meta Ads, Google Ads, Printify, and Printful, then works out your true per-order profit after fees and product cost — so you compare ad-driven revenue against real margin instead of a platform's self-credited count. Victor, its AI employee, analyzes that combined data and proposes moves you approve, executing changes on the Shopify side. Victor reads your ad data but does not touch your ad account. It isn't a dashboard you have to babysit; it's an employee that does the reconciliation math for you. If you're still on marketplaces, our guide to migrating from Etsy to Shopify covers getting your store onto a platform where this data actually connects.

FAQs

Why does Facebook show more purchases than Shopify shows orders?

Mostly view-through conversions and modeled conversions. Facebook credits itself when someone sees your ad and buys within a day without clicking, and it estimates sales it couldn't directly track. Shopify only records real, completed checkouts. A twenty to thirty-five percent overcount is normal on the default window, according to Vaizle.

My Facebook purchases are almost exactly double my Shopify orders. What's wrong?

That specific pattern — roughly double — is the signature of a deduplication problem, not real inflation. Your browser Pixel and server-side Conversions API are both sending the same Purchase without a shared event_id, so Facebook counts each sale twice. Meta merges duplicate events only when they share an ID and arrive within forty-eight hours, per Meta's deduplication docs.

Will setting up the Conversions API make the numbers match?

No. The Conversions API recovers events lost to ad blockers and consent declines, which narrows the tracking-gap portion of the difference. It does nothing about the structural causes — view-through, modeling, last-click versus window, click-date reporting. Even with perfect tracking, expect Facebook to run ahead of Shopify.

Why don't my daily numbers ever line up, even when the weekly totals get close?

Because Facebook reports on the ad-click date and Shopify on the order date. A Monday click that converts Thursday appears in Facebook on Monday and Shopify on Thursday. Compare trailing seven- or fourteen-day windows instead of single days.

Does Shopify or Facebook account for refunds?

Shopify does — it lowers your net and total sales, and refunds also come out of your payout. Facebook generally leaves the original conversion in place. So after refunds, Facebook's total stays inflated while Shopify's drops, widening the gap for reasons unrelated to tracking.

Which number should I use to calculate profit?

Neither platform's headline number alone. Use Shopify's order count and total sales for revenue, subtract real product cost, processing fees — around 2.9% plus 30¢ per transaction on Shopify's Basic plan, per Webgility — shipping, and refunds to get per-order profit, then compare that against ad spend. Facebook's conversion count tells you influence, not margin.