Niblin
Guide14 min read

The Shopify-Meta Reconciliation: Finding Every Dollar of Lost Revenue

Meta says you made $42K. Shopify says $50K. Neither is wrong - they're counting differently. This forensic guide breaks down every source of discrepancy and shows you how to reconcile the numbers so you can make real decisions.

Last Updated: May 26, 2026Atul TirkeyBy Atul Tirkey, Founder at Niblin

"Meta says 50 conversions. Shopify shows 20. Stripe shows 22. Someone is lying and I think it's Meta."

— Source: r/PPC (234 upvotes)

Every ecommerce operator running Meta ads has seen this: the numbers don't match. Meta reports one revenue figure, Shopify reports another, and your bank account tells a third story.

The instinct is to blame Meta for inflating numbers. Sometimes that's right. But often the gap comes from seven specific technical differences in how each platform counts money. Some are harmless math. Some are hiding real problems.

This guide breaks down every source of discrepancy, shows you which gaps are normal, and gives you a framework to reconcile the numbers - so you stop making decisions on data you don't trust.

The 7 Sources of Shopify-Meta Mismatch

When Meta and Shopify disagree on revenue, the gap comes from one or more of these causes:

SourceDirectionTypical ImpactFixable?
Attribution window inflationMeta shows MORE20-50% overclaimPartially (change window)
View-through conversionsMeta shows MORE10-30% overclaimYes (report on click-only)
Timezone mismatchEither direction5-15% daily varianceYes (align settings)
Refund timingShopify shows LESS$500-5K/month gapNo (structural)
Currency roundingEither direction1-3% varianceNo (accept it)
Subscription ordersShopify shows MOREVaries widelyYes (event configuration)
CAPI deduplication failureMeta shows MORE5-20% overclaimYes (fix dedup)

Let's break down each one.

Timezone Mismatches: The Silent Daily Drift

Meta Ads Manager uses your ad account's timezone. Shopify uses your store's timezone. If these don't match exactly, every daily report will disagree.

A sale at 11:30 PM EST on January 15th is January 16th in Meta if your ad account is set to UTC. That sale appears in different daily reports on each platform.

  • Daily revenue reports will never match perfectly
  • Weekly and monthly reports get closer but still drift at boundaries
  • The gap is worst for stores with high late-night sales volume
  • Check Meta ad account timezone: Ads Manager → Account Settings → Time Zone
  • Check Shopify timezone: Settings → General → Store defaults → Time zone
  • Align both to your business's primary timezone
  • Warning: Changing Meta's timezone can't be undone without contacting support

Quick test: If your daily numbers are off but weekly totals are close, timezone is likely the culprit.

Refund Timing: The Revenue That Appears and Disappears

This is one of the most misunderstood sources of discrepancy - and it's structural, meaning you can't fully fix it.

Customer buys on January 15. You refund on March 15.

  • Meta: Counted the conversion on January 15. Never adjusts retroactively. January stays inflated forever.
  • Shopify: Deducts from March revenue. March looks worse than it actually was.
  • Result: January looks better in Meta than Shopify, and March looks worse in Shopify than reality.

For stores with 10-20% return rates, this can create a persistent 10-20% gap between Meta-reported revenue and Shopify net revenue. The higher your return rate, the worse this gets.

  • Track your average return rate and apply it as a discount to Meta-reported revenue
  • Compare Meta revenue to Shopify gross revenue (before refunds), not net
  • Build refund lag into your reporting: "Meta January revenue minus expected 15% returns = adjusted revenue"
  • Monitor return rate trends monthly - if it's climbing, the gap widens automatically

Currency Conversion & Tax Treatment

If you sell in multiple currencies (common for international Shopify stores), conversion happens at different moments:

  • Meta converts at ad interaction time
  • Shopify converts at checkout time
  • Exchange rates differ between these moments
  • Small rounding errors compound across thousands of transactions

This typically creates 1-3% variance. Not worth fixing - just know it exists.

The bigger trap:

  • Shopify can report with or without tax depending on your reporting settings
  • Meta reports the purchase value you send via pixel/CAPI - which may or may not include tax
  • If your pixel fires with tax-inclusive prices but Shopify reports tax-exclusive, you'll see a consistent 5-20% gap (depending on tax rate)
  • Check what value your purchase event sends: Settings → Checkout → Order processing

Attribution Window Inflation: Meta's Biggest Overclaim

This is usually the largest source of discrepancy and the most misunderstood.

Default Meta attribution: 7-day click + 1-day view. This means Meta takes credit for any sale that happens:

  • Within 7 days of someone clicking your ad
  • Within 1 day of someone seeing your ad (without clicking)
  • Even if the customer came back through Google search, email, or direct

Customer journey: Sees Meta ad Monday → Clicks Google ad Wednesday → Gets Klaviyo email Thursday → Buys Friday.

  • Meta claims it (view-through, within 1 day? No. But within 7-day click if they clicked a different ad)
  • Google claims it (click-through, within 30 days)
  • Klaviyo claims it (last-click email)
  • You had 1 order. Platforms reported 2-3 "conversions."
  • Switch Meta reporting to 1-day click only for a cleaner comparison
  • Compare Meta 1DC numbers to Shopify - this will be your tightest match
  • Accept that 7DC numbers will always be higher than Shopify by 20-50%
  • Use blended MER (total revenue ÷ total ad spend) for budget decisions

Subscription Order Gaps

If you sell subscriptions (Recharge, Skio, Loop, etc.), this creates a unique reconciliation problem.

  • Meta tracks the initial conversion only - the first subscription order
  • Shopify records every recurring charge as a new order
  • After Month 1, Shopify revenue from subscriptions grows while Meta's attributed revenue stays flat
  • This makes Meta's ROAS look worse over time (it's not - it just can't see recurring revenue)
  • Track subscription LTV separately from Meta-attributed first purchase
  • Calculate true Meta ROAS as: (First purchase + projected LTV) ÷ ad spend
  • If 30% of your revenue is recurring, Meta is underreporting your actual return by ~30%

CAPI Deduplication Failures

If you're running both Meta Pixel (browser-side) and Conversions API (server-side), you may be double-counting events.

  • Both Pixel and CAPI fire a "Purchase" event for the same order
  • Meta is supposed to deduplicate them using an event_id parameter
  • If event_id doesn't match between Pixel and CAPI, Meta counts both
  • Result: Meta shows 2x the actual conversions for affected orders
  • Meta conversions are >2x Shopify orders (not just 1.3-1.5x)
  • Event Manager shows both "browser" and "server" events with different event IDs
  • Revenue jumps happened when you implemented CAPI
  • Sudden "performance improvement" that doesn't match actual sales
  • Check Events Manager → Diagnostics → look for deduplication warnings
  • Ensure event_id is identical between Pixel and CAPI for the same event
  • If using Shopify's native CAPI integration, this is usually handled - but verify
  • If using a third-party app (Elevar, Trackify), check their dedup configuration
  • Test by placing a test order and checking if 1 or 2 events appear in Events Manager

The Reconciliation Framework

Use this step-by-step process to reconcile your numbers:

  • Pull Shopify gross revenue (before refunds) for the period
  • Pull Stripe/payment processor total for the same period
  • These should match within 1-2%. If they don't, fix Shopify first.
  • In Ads Manager, change attribution setting to 1-day click only
  • This removes view-through inflation and gives you the tightest comparison
  • Note this number as "Meta 1DC Revenue"
  • Healthy range: Meta 1DC = 70-130% of Shopify (attributable to Meta traffic)
  • If Meta shows MORE than Shopify total: dedup issue or event misconfiguration
  • If Meta shows much LESS than expected: CAPI/Pixel not firing, EMQ too low
Gap PatternLikely CauseNext Step
Meta ~2x ShopifyCAPI dedup failureCheck Events Manager dedup
Meta 1.3-1.5x ShopifyNormal attribution overclaimAcceptable - no action
Daily numbers off, weekly closeTimezone mismatchAlign timezone settings
Gap grows over timeRefund timing + subscriptionsTrack refund rate, add LTV
Consistent 5-20% gapTax inclusion mismatchCheck pixel purchase value
Meta shows much lessBroken tracking / low EMQCheck CAPI diagnostics

What's Normal vs What's Broken

Discrepancy RangeStatusAction
Meta within ±15% of Shopify (1DC)NormalNo action needed
Meta 15-40% higher (7DC)ExpectedNormal for 7-day click window
Meta 40-80% higherSuspiciousCheck dedup, view-through, tax settings
Meta >2x ShopifyBrokenCAPI dedup failure almost certain
Meta >50% lower than expectedBrokenPixel/CAPI not firing, check EMQ

The goal isn't perfect match. It's understanding the gap well enough to make confident budget decisions. If you know your Meta 7DC overclaims by ~35% and your refund rate is 12%, you can calculate true Meta-attributed revenue with reasonable confidence.

Stop Reconciling Spreadsheets. Start Getting Answers.

Manual reconciliation works once. But doing it daily? Weekly? That's hours of spreadsheet work that still doesn't give you confidence in the numbers.

Automated Shopify-Meta reconciliation.

Ask Niblin's AI agent "why don't my Meta numbers match Shopify?" and get a breakdown by source - timezone, refunds, attribution, dedup - computed from your actual data. No spreadsheets. No guessing. $299/mo to start.

Start Free Trial - 15 Minute Setup

Key Takeaways

  • Seven specific technical causes explain the Shopify-Meta revenue gap: attribution windows, view-through, timezones, refunds, currency, subscriptions, and CAPI dedup
  • A 15-25% discrepancy between Meta (7DC) and Shopify is normal - don't panic
  • If Meta shows >2x Shopify orders, you almost certainly have a CAPI deduplication failure
  • Switch to 1-day click attribution in Ads Manager for the most accurate Shopify comparison
  • Refund timing creates a structural gap that can't be fully fixed - account for it with your return rate
  • Tax inclusion settings between Pixel and Shopify are a hidden 5-20% gap most stores miss
  • Use blended MER for budget decisions instead of platform-reported ROAS

Frequently Asked Questions

Why does Meta show different revenue than Shopify?

Seven main causes: attribution window differences (Meta claims credit for 7 days post-click), view-through conversions, timezone mismatches between platforms, currency conversion rounding, refund timing differences, subscription order handling, and tax inclusion/exclusion settings.

Should I trust Meta or Shopify revenue numbers?

Trust Shopify for actual revenue (it records real transactions). Use Meta numbers directionally for campaign optimization. A 15-25% discrepancy is normal. Above 40% usually indicates broken tracking, misconfigured CAPI, or pixel issues that need investigation.

What is a normal discrepancy between Meta and Shopify?

On 1-day click attribution, Meta should be within ±15% of Shopify-attributable revenue. On 7-day click, Meta typically shows 20-50% more. Anything above 2x usually means CAPI deduplication is broken and events are being double-counted.

How do I fix Meta and Shopify data mismatch?

Align timezones between platforms, verify tax inclusion settings match, check CAPI deduplication in Events Manager, switch to 1-day click for cleaner comparison, and account for refund timing by tracking your return rate. Some gap is structural and can't be eliminated.

Ready to optimize your e-commerce analytics?

Connect your Shopify and Amazon stores to get unified insights across all your sales channels.