Meta vs Shopify revenue: why the numbers differ
A source-by-source explanation of Meta and Shopify revenue discrepancies, plus the reconciliation process paid-social teams should use.
Meta and Shopify revenue differ because they answer different questions. Shopify records orders placed in the store. Meta estimates which orders its ads influenced under Meta's identity, attribution window and reporting rules. One is a commerce ledger. The other is a platform claim used for ad optimization.
The mismatch is expected
Common causes include:
- different attribution windows;
- click-through versus view-through credit;
- modeled conversions when direct observation is unavailable;
- timezone and currency differences;
- refunds, cancellations, tax and shipping treatment;
- cross-device identity resolution;
- delayed reporting and restatements;
- multiple platforms claiming the same order.
Shopify documents that its marketing reports can apply different models to the same customer journey. Its marketing performance documentation also calls out discrepancies between Shopify and third-party marketing reports because attribution rules and synchronization timing differ.
Assign each system one job
Do not overwrite Shopify revenue with Meta's number. Do not remove Meta's claimed conversions either. Keep the columns separate and label them.
Reconcile the two views step by step
- Set the same date range and timezone.
- Compare gross with gross or net with net. Define taxes, shipping, discounts and refunds.
- Export order IDs from Shopify and conversion identifiers from the attribution layer.
- Check whether Meta is reporting click and view-through conversions together.
- Separate new and returning customers.
- Check whether other channels also claim the same orders.
- Compare trends over at least several days. Same-day figures are often incomplete.
The goal is not a zero difference. The goal is an explainable difference.
The three numbers an operator should keep
Platform ROAS tells you how Meta's delivery system sees its own performance. It matters because bidding learns from platform signals.
Observed attributed ROAS ties spend to orders with a documented journey and model. It is the cross-channel comparison layer.
MER and contribution margin judge whether the total paid-media system is commercially working. MER is total revenue divided by total ad spend. Contribution margin subtracts the costs revenue alone hides.
No single number replaces the other two.
Red flags that point to an implementation issue
- Shopify has orders but the attribution layer has zero conversions.
- Meta claims more purchase value than the store recorded for an extended period.
- One order appears twice after browser and server events are combined.
- Reported revenue changes when only the spend connector refreshes.
- Refunds disappear from one view but not another.
- UTM parameters are overwritten by internal navigation.
Where nod. fits
nod. keeps Platform Claims separate from observed attribution. Shopify owns the order state, Meta owns delivery and spend, and the first-party journey explains which touchpoints were observed before purchase. That lets the team compare Meta ROAS, real attributed ROAS, MER and CM3 without pretending they are the same metric. See why attribution numbers differ for the product-level checklist.