If Meta reports $80,000 in attributed sales, Google Ads reports $45,000 and Shopify shows $93,000 in store revenue, there is no reason to assume the platforms found $125,000 of unique purchases. Their reports can credit the same orders. The numbers in the headline are illustrative, not an actual FENIX reconciliation.
The short version
- The platforms are not lying. Each one credits sales under its own rules, so the same order can appear in more than one report.
- Use Shopify orders as the base for what the business sold. Treat platform numbers as credit claims, not as a list of unique customers.
- In the example, $125,000 of claims against $93,000 of store sales means at least $32,000 is claimed twice.
The first question is not which platform is wrong. It is whether you are comparing the same period, currency, transaction population, revenue definition and attribution logic.
Three numbers, three jobs
Shopify order data is the starting point for actual orders, discounts, refunds and net sales, as long as you state which definition you use. It is not an independent causal model of what marketing created.
Meta attributed purchase value is the value Meta credits under your attribution settings, signal availability and event setup. It is not a duplicate-free list of new customers.
Google Ads conversion value credits the conversion actions you selected under Google's attribution settings and lookback windows. Depending on configuration it may include modeled conversions or a different conversion definition.
A shopper can see a Meta ad, click a Google search ad and buy once. Both platforms may credit that order under their own rules. Adding the two totals counts it twice.
The overlap, in numbers
Add the claims from the headline: $80,000 + $45,000 = $125,000. Shopify shows $93,000. If the three figures are measured on the same basis, the platforms together claim $32,000 more than the store sold. That $32,000 is the minimum overlap, because the claims cannot all be unique when they exceed total sales.
It is a minimum, not an estimate. Overlap can be larger, since some store orders may be credited to neither platform (email, direct, organic) and some may be credited to both. The arithmetic only proves that a floor exists.
Now add a hypothetical $30,000 of total ad spend across both channels.
| Measure | Calculation | Result |
|---|---|---|
| Sum of platform ROAS | $125,000 ÷ $30,000 | 4.17x |
| Store-level efficiency (MER) | $93,000 ÷ $30,000 | 3.10x |
| Minimum overlap | $125,000 − $93,000 | $32,000 |
The first row is a number that cannot be right as a measure of unique sales. The second is capped by what the store actually sold. Neither is a profit figure, and MER does not prove incrementality. It simply cannot be inflated by two platforms claiming one order.
Build an order-level reconciliation, not an argument about dashboards
Start with the Shopify order export for a closed time range. Choose whether to compare gross sales, net sales, tax-exclusive merchandise revenue or another explicit measure. Deduct refunds and cancelled orders, or report them separately. Then compare each ad platform's settings and event IDs. Where privacy or tracking prevents a direct match, classify the unmatched portion instead of forcing an artificial exact match.
| Check | Why it matters |
|---|---|
| Timezone and reporting date | A late-night order can land on different days |
| Attribution windows | Clicks and impressions get different lookback credit |
| Conversion action selected | Purchase, lead or duplicate events may be included |
| Revenue basis | Shipping, tax, discounts and refunds change the value |
| Currency | Conversion to account currency may differ |
| Order or transaction ID | Duplicates and retries distort event counts |
| Customer cohort | Existing customers are not newly acquired customers |
Google Analytics documents a purchase event and recommends sending relevant transaction data. Shopify separately defines its store conversion measures and notes that analytics systems may not count sessions identically 12. Session definitions also changed in September 2026, which affects any session-based comparison across that date 3; see the September 2026 session change.
A six-order example you can check by hand
Totals hide how the overlap works. Here is a hypothetical week with six store orders and what each platform claims for them.
| Order | Store revenue | Meta claims it | Google claims it |
|---|---|---|---|
| A | $100 | Yes | Yes |
| B | $80 | Yes | No |
| C | $120 | No | Yes |
| D | $90 | No | No |
| E | $60 | Yes | Yes |
| F | $50 | Yes | No |
| Total | $500 | $290 | $280 |
Meta and Google together claim $290 + $280 = $570 against $500 of store revenue. The subtraction gives a minimum overlap of $70. The order list shows the true overlap is larger. Orders A and E, worth $160, are claimed by both. Order D, worth $90, is claimed by neither, which could be an email click, a direct visit or a returning customer. The unclaimed $90 hides part of the overlap in the totals.
Two lessons follow. First, subtracting store revenue from the sum of claims gives only a floor, never the real amount of double counting. Second, orders claimed by nobody are real revenue, and a reconciliation that ignores them will overcredit the platforms.
How to reconcile each month
- Fix the period. Use a closed month in one timezone. Note the timezone each platform reports in.
- Export store orders. Include order ID, date, discounts, shipping, tax, refunds and whether the customer is new.
- Choose one revenue basis and apply it to every source.
- Export platform conversions with their transaction IDs where the platform provides them.
- Match what you can by order ID. Count the matched, the unmatched and the duplicated.
- Write the overlap-risk statement. For example: "Platforms claim X against Y of store sales, a minimum overlap of Z. N orders had no platform credit."
- Compare month to month. The trend in the overlap, in unclaimed revenue and in store-level efficiency is more informative than any single month.
Settings that commonly explain a gap
| Setting | What to check |
|---|---|
| Attribution window | Is each platform using the same number of days for clicks and views? |
| View-through credit | Is one platform crediting views that the other ignores? |
| Purchase value | Does the event send price with or without shipping and tax? |
| Event deduplication | Are browser and server events sharing an order or event ID? |
| Refunds and cancellations | Are they removed in the store figure but not in the platform's? |
| Test or internal orders | Are any included in one source but not the other? |
Checking these six items resolves many gaps before any deeper analysis is needed. What remains after that is the real attribution overlap, which no reconciliation can remove. It can only be bounded and then tested, which is where incrementality methods come in.
How to use the result for budget decisions
Do not give Meta 100% of the sales Meta claims and Google 100% of the sales Google claims. Separate the actual business outcome from platform attribution, and add incrementality evidence where you can. Even a clean event deduplication setup does not settle every overlap question.
For operating reviews, compare:
- Unique store orders for the period.
- New customers, separately from returning ones.
- Contribution after variable costs. The ROAS vs ROI article shows why revenue ratios alone can mislead.
- Campaign spend and conversion lag.
- The overlap-risk statement from the worksheet, in words and numbers.
Evaluate channel trends over time, but do not treat one dashboard's ROAS as a complete profit measure. If one platform's number falls while the store stays flat, check the reasons ROAS drops before cutting the budget.
When you need more than reconciliation
Reconciliation tells you how large the overlap could be. It cannot tell you how much each channel caused. For that you need evidence about what would have happened without the advertising. Three approaches are in common use, and each answers a narrower question than "what is my true ROAS".
| Method | What it compares | What to watch |
|---|---|---|
| Platform conversion lift study | Exposed users against a held-out group, within one platform | Measures that platform only, under its own design |
| Geographic holdout | Regions with ads against comparable regions without | Needs regions that behave similarly and enough volume |
| Planned spend change | Store sales before and after a deliberate budget change | Seasonality and promotions can hide the effect |
None of these is free or instant, and a small store may not have the volume to read a result with confidence. The practical middle path is to keep a record of every deliberate budget change with its date, then compare store orders and contribution afterward, always noting what else changed that week.
Reconcile your own channels
The tool below takes each platform's claimed revenue, your store sales and total spend. It returns the minimum overlap, the sum of platform ROAS and the store-level efficiency. It does not produce a single "true ROAS", because the inputs cannot support one.
From the field
Client case, anonymized
Premium bicycle ecommerce brand, USA, January to August 2026
- $1.25M
- Net Shopify sales
- 6.68x
- Meta reported ROAS
- about $1.10M
- Meta attributed
- about $700K
- Google attributed
A premium bicycle brand with a $670.42 average order value ran Meta and Google together from January to August 2026. Meta attributed about $1.10M of purchase value, which is its reported 6.68x ROAS on $164,622.36 of spend. Google separately attributed about $700K. Shopify recorded $1,253,474.33 in net sales after $84,172.53 of discounts and $74,245.49 of sales reversals.
| Source | Revenue credited |
|---|---|
| Meta, attributed | about $1.10M |
| Google, attributed | about $0.70M |
| Sum of the two platforms | about $1.80M |
| Shopify net sales | $1.25M |
| Minimum overlap | about $0.55M |
The two platforms together claimed about 1.44 times what the store sold. At least $0.55M of that credit, roughly 44% of net sales, was claimed by both. The team treated Shopify as the revenue record and read each platform as a view of its own part of the journey.
What this does not show. It does not say how the overlap splits between the two platforms, and Google spend is not included here, so no store-level efficiency figure is given. The platform values are rounded as in the source report.
Common questions
Which number is correct, Meta, Google or Shopify?
Shopify is the right base for what was sold. The platform numbers are credit claims under their own rules. All three can be accurate to their definitions and still disagree.
Why is the sum of Meta and Google higher than Shopify?
Because the same order can be credited to both. When the claims add up to more than total store sales, the difference is the minimum amount of double-counted value.
Is there a single true ROAS?
Not from these inputs. Without an incrementality test, a single figure would be a guess. The honest output is an overlap-risk statement and a store-level efficiency number.
Should I turn off a platform if its numbers look inflated?
Not on that evidence alone. Test the change in a controlled way and watch store orders and contribution, not just the platform report.
Sources
- Google Analytics, recommended ecommerce event data support.google.com
- Shopify, analytics fields and session definitions help.shopify.com
- Shopify, September 2026 session measurement changes help.shopify.com

Nenad Vasic
Founder and CEO of Fenix Network Media. His work focuses on the economics behind customer acquisition, conversion, measurement and profitable growth. Calculations in this article are original; third-party figures belong to their publishers and are credited in the sources.
Reconcile your channel revenue
Use your own numbers, then bring the result to a conversation if you want a second set of eyes on the plan.