Data reconciliation is the practice of comparing the different sales numbers your tools report — Meta Ads Manager, GA4, Shopify Analytics, and your bank payout — and understanding why they disagree so you can trust each one for what it actually measures. The short version: they will never match, and that is by design. Shopify's order count is the truth for how many sales happened. Meta's number is the truth for how many sales its ads plausibly influenced. Your payout is the truth for cash in the bank. Reconciliation is not making them equal — it is knowing which number answers which question.

If you run a Shopify store with paid ads, you have felt this. Meta says you got 78 purchases. Shopify shows 100 orders. GA4 shows something else entirely. Your bank deposit is a fourth number that matches none of them. It feels like one of the tools is broken or lying.

None of them is. Each system measures a slightly different reality with a slightly different method, and the gaps between them are predictable, explainable, and — once you understand them — genuinely useful. This is the hub page for our data reconciliation cluster. It explains the whole landscape, then links out to the deep-dive articles on each piece.

The four numbers, and why they disagree

Every store with ads and a Shopify checkout produces at least four "sales" numbers for the same period:

  • Meta Ads Manager — how many purchases Meta's ads plausibly influenced, credited by attribution window.
  • GA4 — a modeled, fractionally-attributed view of conversions its client-side tags could observe.
  • Shopify Analytics — the authoritative, server-side count of real completed orders.
  • Your Shopify Payments payout — the actual cash deposited after fees, refunds, and chargebacks.

The disagreements fall into two families. Knowing which family a gap belongs to tells you whether it is fixable or just something to accept.

Family one: methodology gaps (you cannot fix these)

These come from systems measuring the same reality with different rules. No amount of better tracking closes them.

Different attribution models. Shopify defaults to last non-direct click — 100% of an order's credit goes to the last channel the customer clicked. Meta credits itself whenever a purchase falls inside its attribution window after a click or a view. GA4 defaults to data-driven attribution, splitting one conversion fractionally across several touchpoints. One real order can show as 1.0 conversion in Shopify, 1.0 in Meta, and 0.4 in GA4 — all internally correct.

View-through attribution. This is Meta's single biggest inflator. On the default window, Meta claims credit for a purchase made within a day of seeing an ad — no click required. Shopify has no concept of a view; it only records completed checkouts. A 20–35% gap between Meta-reported purchases and Shopify orders is normal on the default window, according to Vaizle, with the excess mostly view-through plus modeled conversions (TrackBee reports the same range).

Modeled conversions. When Meta or GA4 cannot directly observe a sale — a blocked pixel, a consent decline, an iOS opt-out — they estimate it with a machine-learning model and report the estimate as a conversion. Shopify never models; it reports only real orders.

Click-date vs. order-date reporting. Meta reports a conversion on the date of the click that earned the credit, not the date of the purchase. A Monday click that converts Thursday shows up in Meta on Monday and in Shopify on Thursday. This is why you should always compare on trailing 7–14 day windows, never single days.

Cross-device tracking, timezone boundaries, and session-counting differences round out this family. Our companion piece on the Facebook attribution window walks through exactly how Meta's click and view settings decide which sales it claims.

Family two: tracking gaps (better setup narrows these)

These are real data losses. Client-side tools miss events that server-side Shopify still records.

Ad blockers and browser tracking prevention stop client-side pixels from firing. Field estimates put affected traffic at 10–25% of users, per Audiense/Elevar. Cookie-consent declines and lost tail events (the tab closes before the thank-you page loads) do the same. Because purchase events fire late in the funnel, they show the largest client-side gap of any event.

Duplicate events cause the opposite problem — over-counting. When both the browser Pixel and server-side CAPI send a Purchase for the same order without a shared deduplication key, Meta counts it twice. A store showing Meta purchases at roughly 2× Shopify orders almost always has a dedup misconfiguration, not real inflation.

A worked example: one week, four numbers

Say you run a print-on-demand store called Nomad Mugs. In one week you get 100 real orders, average value $40 subtotal + $5 shipping + $4 tax = $49 total. Of the 100 buyers: 55 clicked a Meta ad within 7 days, 15 only saw a Meta ad within 1 day, 10 came from Google Ads, and 20 arrived organic or direct. Eight buyers later request refunds. These numbers are illustrative, but the relationships between them are exact.

Meta reports about 78 purchases. That is 55 click-through plus 15 view-through (70 by window), plus roughly 8 modeled conversions recovering buyers it could not observe. It reports them on the click date, so some land in the prior week. It does not subtract the 8 refunds. Its revenue shows around $3,120 because the pixel passes subtotal only ($40), not shipping and tax.

GA4 reports about 72 purchases, split fractionally. It loses roughly 20 buyers to blockers, consent declines, and closed tabs, recovers some via modeling, then spreads credit under data-driven attribution — so "Paid Social" might show around 48, not a clean 55.

Shopify Analytics reports 100 orders. By last non-direct click it attributes about 55 to Facebook, 10 to Google, and 35 to search/direct/other. The 15 view-through buyers are not credited to Facebook here — they clicked nothing. After the 8 refunds, total sales drop from $4,900 to about $4,508.

Your payout is a fifth number again. Here is that week's deposit, laid out as a reconciliation table rather than a raw statement:

Line item Amount
Captured charges (100 × $49) $4,900.00
Less processing fees (2.9% + 30¢ × 100) −$172.10
Less refunds issued (8 × $49) −$392.00
Less one chargeback fee −$15.00
Net payout deposited $4,320.90

The fee rate here assumes the Basic plan on US cards — Shopify Payments online rates run around 2.9% + 30¢ on Basic down to lower tiers on higher plans, per Webgility, with a chargeback fee around $15 per dispute. Both are volatile; verify against Shopify's current pricing before relying on them.

The punchline: four different "sales" numbers for one week of 100 orders, and none is wrong. Shopify's order count and total sales are the truth for how many sales happened. Meta's number is the truth for how many its ads influenced. The payout is the truth for cash in the bank.

Reconciling the payout side

The payout is where most first-time reconcilers make the same error: assuming payout = that day's sales minus fees. It is not.

A payout is a batch of balance transactions — captured charges, refunds, chargeback debits, and adjustments — that all settled together. It does not map one-to-one to a single day's orders. Orders paid through third-party gateways like PayPal never enter Shopify Payments payouts at all, so they never reconcile against the payout report. Refunds issued this period reduce this payout even if the original sale was weeks ago.

Timing adds another layer. Shopify's default schedule is daily, but weekend and holiday orders batch to the next business day, and money moving to an external bank via ACH takes additional days to land. If you are trying to square deposits against orders, start with our guides on the Shopify payout schedule and the details of a single Shopify payout. If your first deposit is taking longer than expected, the 5–7 business day first-payout hold explains why new accounts wait.

You also need to know what your fees actually are before you can reconcile them. The full breakdown lives in our piece on Shopify transaction fees, including the international-card and currency-conversion surcharges that quietly widen the gap between your sales report and your deposit.

The sales-definition trap

One more source of confusion sits inside Shopify itself. The Finances report shows three revenue tiers: Gross sales (product price × quantity, before deductions), Net sales (gross minus discounts and returns), and Total sales (net plus shipping and tax, minus returns). The classic mistake is assuming Gross minus expenses equals Net. It does not — Net is defined by discounts and returns, and fees never appear in the sales report at all. They are a payout deduction. This single misunderstanding trips up nearly every reconciler on their first attempt.

Common myths that cost merchants money

"Set up CAPI and the numbers will match." False. The Conversions API recovers lost events (a tracking gap) but does nothing about methodology gaps — view-through, modeling, last-click versus window, click-date reporting. Even flawless tracking leaves a structural 20%-plus Meta-over-Shopify gap.

"More Pixel + CAPI events means more conversions." Only if dedup is broken. A correct redundant setup keeps your count stable while recovering blocked events. Meta deduplicates the two copies when they share an event ID and arrive within 48 hours of each other, per Meta's own documentation, keeping the first-received copy. A jump in conversions right after you add CAPI is a dedup misconfiguration, not a win.

"GA4 should match Shopify." It structurally cannot: client-side versus server-side, data-driven versus last-click, estimated session counts. A 15–30% GA4-under-Shopify gap is normal according to BlueFrog; 30–40% warrants a look; 40%-plus signals a real break (Consentmo reports the same thresholds). Aim for a stable ratio, not equality.

"Meta is inflating to justify spend." No. Meta counts view-through and modeled conversions by design and disclosure. It answers a different question — "did my ad influence this?" — than Shopify's "did a sale happen?"

"Refunds lower all my dashboards." Only Shopify and your payout reflect refunds. Meta and GA4 typically keep the original conversion, so their totals stay inflated afterward.

From reconciliation to true per-order profit

Here is the deeper problem. Even once you understand every gap above, you are still stitching four disagreeing exports together in a spreadsheet — and none of them tells you the one number that actually matters: what you kept on each order after ad spend, fees, product cost, and refunds.

Meta shows revenue, not profit. Shopify shows sales, not ad cost. Your payout shows cash, not which product or campaign earned it. The true margin on a single order lives scattered across all of them.

This is the problem PodVector exists to solve. It connects Shopify, Meta Ads, Google Ads, Printify, Printful, and Stripe, and computes true per-order profit from your live data — reconciling the ad-side, store-side, fulfillment-side, and payout-side numbers into one figure you can act on. PodVector is not a dashboard you have to read; Victor, its AI operator, analyzes your data and proposes moves, taking Shopify-side actions only with your approval. Victor reads your ad data to find what is working, but does not touch your ad account.

If you want to go deeper on any single piece of the reconciliation puzzle first, the sibling guides on when Shopify pays out and how often Shopify pays out are good next stops.

FAQs

Why does Facebook show more purchases than Shopify?

Because Meta counts view-through conversions (sales where the buyer saw but never clicked the ad), plus modeled conversions it estimates for buyers it could not directly observe, and it reports them on the click date rather than the order date. Shopify only records real, completed checkouts on the day they happen. A 20–35% Meta-over-Shopify gap is normal on Meta's default 7-day-click, 1-day-view window, which Foreplay confirms is the current default.

Why is my Shopify payout less than my sales?

Because a payout is not "sales minus fees for that day." It is a batch of balance transactions — captured charges minus processing fees, minus refunds issued in the period, minus any chargeback fees or reserve holds. It also excludes orders paid through third-party gateways like PayPal entirely. So your deposit reflects cash movement, not that day's order revenue.

Will setting up the Conversions API make my numbers match?

No. CAPI recovers events lost to ad blockers and consent declines, which narrows tracking gaps. But it cannot close methodology gaps like view-through attribution, modeled conversions, or last-click versus attribution-window differences. Even a perfect setup leaves a structural gap between Meta and Shopify — and if your count jumps after adding CAPI, you likely have a deduplication problem.

What's a normal gap between GA4 and Shopify?

A 15–30% GA4-under-Shopify gap on purchases is healthy, since GA4 is client-side and loses events to blockers, consent, and closed tabs while Shopify records server-side. A 30–40% gap is worth investigating, and 40%-plus usually means a real tracking break. Aim for a stable ratio over time rather than an exact match.

Which number should I trust for profit?

None of them alone — that is the whole point. Shopify's order count is truth for how many sales happened; Meta's number is truth for ad influence; your payout is truth for cash. True per-order profit only appears when you reconcile all of them together against ad spend, fees, and product cost, which is exactly what a tool like PodVector computes from your connected data.

How should I compare Meta and Shopify day to day?

Don't compare single days. Meta reports on the click date and Shopify on the order date, so a click today that converts in three days lands on different calendar days in each tool. Always compare on trailing 7–14 day windows, and expect the totals to converge in ratio, never to equal exactly.