How to check if Google Ads and Meta double count sales
Pull one closed month from Shopify, Meta and Google Ads, then set the two platforms' purchase claims against Shopify's orders. If the sum is higher, rule out duplicates inside each platform, then use GA4's paths to see which journeys both ads touched.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free ad platform over-reporting checker.
Pull one closed month from Shopify, Meta and Google Ads. Add the two platforms' purchase claims and set the total against Shopify's orders. If the sum is higher, rule out duplicates inside each platform first, then use GA4's paths to see which journeys both ads touched. What is left is usually overlap between them.
You need three logins, a spreadsheet and about an hour. Every menu path below comes from Google's, Meta's or Shopify's own help pages, read on 1 October 2026. For why the overlap happens at all, start with Do Google Ads and Meta double count sales?
Step by step
- Count Shopify's orders for one closed month. Pick a month that ended a few days ago, so late conversions have landed in every system. Note the orders and total sales: the only count here that records each sale once. Path: Shopify admin > Analytics > Reports > Category filter > Sales > Total sales over time > Group by > Month.
- Pull Meta's claim for the same dates. At campaign level, add website purchases and their conversion value, and note the attribution setting your ad sets use. Tick Save as a column preset, so next month takes a minute. Path: Ads Manager > Campaigns > Columns > Customize columns > Apply.
- Pull Google Ads' claim by conversion date. Add Conversions (by conv. time) and Conv. value (by conv. time) for your purchase action. Google says these columns help when you compare Google Ads with Shopify, because they date each conversion to when it happened. Path: Google Ads > Campaigns icon > Campaigns > Columns icon > Modify columns > Apply.
- Add the claims and divide by the orders. Put Meta's purchases and Google Ads' purchase conversions side by side, sum them and divide by Shopify's orders. A result above 1 means the platforms claimed more purchases than the store received. Path: a spreadsheet, or the ad platform over-reporting checker if you would rather compare revenue.
- Rule out double counting inside Google Ads. List every conversion action that records purchases as Primary. If two do, such as the Google Ads tag and an imported GA4 purchase, the Conversions column counts one order twice. Path: Google Ads > Goals > Conversions > Summary > Edit goal > Conversion action optimization > Secondary (observe only).
- Rule out double counting inside Meta. If the pixel and the Conversions API both send purchases, Meta needs a way to pair them; its recommended one is a matching event ID and event name. Check what share of purchases arrives with a deduplication key; Meta says the higher, the better. Path: Events Manager > your dataset > Purchase > View details > Event deduplication.
- Find the journeys both platforms touched. Pick your purchase key event and show only paths longer than one touchpoint. Look for paths that hold both Paid Social and a Google paid channel, such as Paid Search, Paid Shopping or Cross-network. Those sales are open to claims from both platforms on clicks alone. Path: GA4 > Advertising > Key events dropdown > Key event attribution paths > Path length > greater than 1.
- Report the gap where budgets get decided. Show Shopify's orders as the total, each platform's figure as its claim, and the gap between them. Re-run the check after any change to tags, apps or campaigns. Path: Google Ads > Columns icon > Modify columns > Save your column set, so next month's run is quick.
A worked example
For illustration, with round numbers invented for the example. Say September looks like this:
| For illustration, September | Purchases | Where it comes from |
|---|---|---|
| Shopify orders | 1,000 | Total sales over time |
| Meta website purchases (7-day click, 1-day view) | 450 | Ads Manager |
| Google Ads purchase conversions (by conv. time) | 700 | Google Ads |
| Sum of the two claims | 1,150 | Step 4 |
| Claims per Shopify order (1,150 / 1,000) | 1.15 | Step 4 |
If your month looked like this, at least 150 of the claims were duplicates or matched no order at all.
Step 5 is the cheap fix, so do it first. Suppose it turns up a GA4 purchase import set to Primary next to the Google Ads tag. Say the switch to Secondary drops Google's count to 520.
For illustration, the new sum is 970 claims against 1,000 orders. That looks tidy, yet it does not rule out overlap. Tracking also misses sales, and a miss on one side can hide a duplicate on the other.
Step 7 shows how much room there is. Say the paths report puts 8% of purchase revenue on journeys with both Paid Social and Paid Search. Those sales could sit in both claims at once.
One store's export shows the same effect at small scale. On its Channels sheet, the touched view sums to 110.4%, because a journey that touched two channels counts in both. On its Journeys sheet, journeys of 2 or more touches hold 20.6% of revenue. That is the share where two channels could both claim one sale on clicks.
For illustration, budget on the 1,000 orders, not on the 1,150 claims.
What to check when the report looks wrong
- The sum is below Shopify's orders. Tracking misses sales too. Meta says its pixel may not fire if someone uses an ad blocker, so a low sum does not mean there is no overlap.
- Meta's purchases differ between Events Manager and Ads Manager. Use Ads Manager for the sum. Meta says Events Received in Events Manager adds pixel and Conversions API events together, not deduplicated.
- Google Ads shows fractions of a conversion. Data-driven attribution shares credit across ad interactions, so decimals are normal. Sum them as they are.
- Last month's Google numbers moved. Google says reporting can lag by up to 24 to 48 hours. Wait a few days after month end before you run the check.
- The month edges disagree. Google Ads' main columns date a sale to the ad click, which is why step 3 uses the conversion-time columns. Check that Shopify, Meta and Google Ads also share one time zone.
- Meta's count jumps when someone changes the attribution setting. A wider window claims more purchases without a single extra order. Keep the setting the same from month to month, or note the change next to the ratio.
- Revenue sums disagree more than purchase counts. Each platform's value is whatever your tags send, while Shopify's total sales adds taxes and shipping. Compare purchase counts first, then revenue on one definition.
What to do this week
- Save the three reports. Save Shopify's monthly report with Save as, Meta's columns as a preset and Google's as a column set. Pass: next month's check takes minutes. Fail: you rebuild it by hand each time, so it quietly stops happening.
- Give each platform one purchase source. In Google Ads, open Goals, then Conversions, then Summary, and list what records purchases. In Events Manager, check that Purchase arrives from the pixel and the Conversions API with matching event IDs. Pass: one source per platform, or two that deduplicate. Fail: two that don't, so remove one before next month.
- Put the gap on your budget slide. Show Shopify's orders, each platform's claim and the difference, month by month. Pass: budget talk starts from Shopify's total. Fail: someone adds the dashboards together, so walk them through step 4.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Sales reports (Shopify Help Center); Customize columns in Meta Ads Manager (Meta Business Help Center); Add or remove columns in your statistics table (Google Ads Help); Understand your conversion tracking data (Google Ads Help); About primary and secondary conversion actions (Google Ads Help); Create Google Ads conversions based on Google Analytics key events (Google Ads Help); View server event details in Meta Events Manager (Meta Business Help Center); Handling Duplicate Pixel and Conversions API Events (Meta for Developers); Key events attribution paths report (Google Analytics Help); Default channel group (Google Analytics Help); About conversion count differences between Meta Ads Reporting and third-party reporting tools (Meta Business Help Center); Filtering and editing your reports (Shopify Help Center).
Related answers
Frequently asked questions
Should I compare Meta and Google Ads on purchases or on revenue?
Start with purchases. Each platform's conversion value carries whatever your tags send, while Shopify's total sales adds taxes and shipping, so revenue sums can disagree for dull reasons. Once the purchase counts make sense, compare revenue on one definition across all three.How do I know if Google Ads counts each sale twice?
Look for two primary actions that both record purchases, such as the Google Ads tag and an imported GA4 purchase. Google sets GA4-based conversions to secondary by default to stop the same event counting twice for bidding. If both are primary, set one to Secondary under Edit goal.Is there a normal claim ratio for Meta plus Google Ads?
Not an official one. Windows, models and tracking differ by account, so the ratio only means something next to your own past months. Track it monthly. A jump after a tag or campaign change usually points to a new duplicate, not new demand.
Go deeper: Incrementality testing, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution DiscrepancyAttribution Discrepancy is the variance in conversion data reported between different marketing analytics platforms. It arises because platforms use different models to assign credit.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- DashboardsDashboards are graphical user interfaces that provide at-a-glance views of key performance indicators (KPIs). They monitor campaign performance and visualize attribution insights.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.
- TouchpointTouchpoint is any interaction a customer has with a brand throughout their journey. In marketing attribution, each touchpoint is a data signal to understand marketing impact.