On this page
Shopify, Meta, Google Ads, and GA4 all report sales for the same store, and none of them is wrong by its own rules. Shopify counts orders in its backend. GA4 counts the purchases that reach it. Meta and Google Ads each count the conversions they credit to their own ads. A reconciliation plan assigns one source to each metric and tracks how far the sources drift apart.
Four sources, four definitions
The same order can appear in all four tools. Shopify records it once in the backend. GA4 records it only if a purchase event reached the property. Meta and Google Ads each record it as a conversion when their own click or view rules match the buyer. Read the table before comparing any totals.
| Source | What it counts | Date basis | Credit scope | Use it for |
|---|---|---|---|---|
| Shopify | Every order recorded in the backend, with returns subtracted in sales reports | Order date | All orders, including POS and draft orders | Orders, revenue, refunds, and customers |
| GA4 | Purchase events sent from the browser or a server integration | Date the purchase event happened | All channels, including organic, email, and direct | Onsite behavior and channel comparison |
| Meta Ads | Conversions Meta attributes to its ads, including some modeled conversions | Date of the impression or click | Meta ads only, with a default 7-day click and 1-day view window | In-platform optimization, creative, and audience decisions |
| Google Ads | Conversions Google Ads attributes to its ad interactions | Date of the ad click | Google Ads interactions only, under its own model and window | Bidding, spend, and in-platform optimization |
Assign one system of record per metric
Pick one owner for each number before the review starts. Shopify owns orders, revenue, refunds, and customers, because it holds the complete order record. GA4 owns onsite behavior and the cross-channel comparison. Each ad platform owns its own in-platform optimization, and nothing more. When a report needs a number from a source that does not own it, label the number and say where it came from.
Track three ratios every week
Three ratios show whether the sources are still moving together. Calculate them on the same date range and revenue definition each week, and investigate when one moves without a known cause.
GA4 capture rate is GA4 online orders ÷ Shopify online orders. A falling rate points to lost purchase events, such as denied consent, ad blockers, or a broken checkout tag, and the GA4 gap is the first place to look.
Platform claim ratio is each platform’s claimed revenue ÷ Shopify online revenue. Read it as overlap, never as a share to add up. Meta and Google Ads can each claim part of the same order, so their ratios cannot be summed into a store total.
Unknown or unattributed share in GA4 is the share of GA4 purchases with an unknown source, a source of (not set), or no assigned channel. A rising share often means untagged Meta clicks, stripped gclid parameters, or missing auto-tagging, so check the links and redirects before blaming the store.
Reconcile before the review
- Align the time zone and reporting currency across Shopify, GA4, and every ad account before comparing totals.
- Use one revenue definition, stated as gross or net, with or without tax and shipping, and apply it everywhere.
- Send transaction_id with every GA4 purchase event, set to the Shopify order ID, so duplicates can be found.
- Confirm the Meta Pixel and Conversions API share an event ID, so one conversion is not counted twice.
- Document each platform’s attribution window next to its number, such as Meta’s default 7-day click and 1-day view.
Where Shopify should win
Shopify should be the source of truth for every number that answers how much the store sold, what came back, and who bought. It holds the full order record, including POS and draft orders that never touch the online checkout. Report store revenue from Shopify, net of returns, on the one definition the team agreed to.
Where Meta and Google Ads should win
Meta and Google Ads should win for in-platform optimization. Meta is the right view for delivery, creative, and audience decisions inside Meta. Google Ads is the right view for bidding, spend, and campaign decisions inside Google. Their conversion counts should stay on their own platforms and should not be reported as store revenue.
Read the deep dives by source
Shopify and GA4 revenue covers checkout tracking, duplicate orders, and refund handling in detail.
Meta Ads and GA4 numbers covers view-through credit, reporting dates, and untagged Meta traffic.
Google Ads and GA4 conversions covers date basis, credit scope, counting rules, and auto-tagging.
Go further with the dynamic UTM guide to tag every ad so GA4 can read it. If the ratios have drifted and you want a second pair of eyes, book a tracking audit: bring the disputed report and we’ll map the first system of record you can trust.
Frequently asked questions
Why don’t Shopify, Meta, and Google Ads revenue match?
Each source counts a different thing on a different date. Shopify counts orders in its backend, GA4 counts the purchases that reach it, and Meta and Google Ads count the conversions they credit to their own ads under their own rules. Time zones and currencies can also differ between the accounts, so the totals were never built to match.
Why do Meta and Google Ads together claim more revenue than Shopify recorded?
Both platforms can credit themselves for the same order. Meta can count an ad view with no click, Google Ads credits only its own interactions, and each uses its own window. Their claimed revenue overlaps, so adding the two together overstates what the store sold.
Which number should an ecommerce brand report?
Report store orders, revenue, and refunds from Shopify, on one stated revenue definition. Show GA4, Meta, and Google Ads beside it as labeled views, each with its own rule, and never as a sum that is added to Shopify revenue.
Can MetricMaven reconcile Shopify, Meta, and Google Ads?
Yes. We map the Shopify order and refund fields, the GA4 purchase event and transaction_id, the Meta and Google Ads attribution settings, and the time zone and currency for each account. The result is one documented rule per metric and a weekly reconciliation table the team can explain without rebuilding it by hand.
