Why Ads Manager, Google Ads, and Shopify report different sales
By the AdZoom team · Published
Ads Manager, Google Ads, and Shopify report different sales because each one counts something different, by its own rules. Meta counts the purchases it credits to your Meta ads. Google Ads counts the conversions it credits to your Google ads. Shopify counts the orders customers placed. The three are not built to match.
Only one of them is a record of what customers bought: the orders in your store. Facebook ads conversion tracking and Google Ads attribution are each platform's account of its own work. The causes of the gap are below, grouped by where they arise. Each has what the platform's documentation says, an example, and a check you can run today.
Three systems, three counts
The examples follow one Shopify store that sells running socks. A typical order is $55 of socks with a $5 discount code, a $6 shipping charge, and $4 of tax. The customer pays $60.
| Question | Ads Manager | Google Ads | Shopify |
|---|---|---|---|
| What is counted | Purchases credited to your Meta ads | Conversions credited to your Google ads | Orders |
| What earns the credit | A link click, a view, or another action on the ad, as each ad set is set | The attribution model of each conversion action | Nothing to earn: an order counts whatever brought it |
| How long after the ad | Up to 7 days after a link click, 1 day after a view | 30 days after a click by default, up to 90 | Does not apply |
| Which day it lands on | The day of the purchase or the day the ad was shown, as you choose | The day of the click | The day the order was made |
Each cell is sourced in the sections that follow.
Causes in Meta Ads Manager
The attribution setting
Facebook ads attribution starts with a setting on each ad set. Meta's page on attribution settings lists three under its standard attribution model, for website purchases. Click-through counts a purchase made within 1 day or 7 days after a link click on your ad. View-through counts one made within 1 day after the ad was shown. Engage-through counts one made within 1 day after another action on the ad, such as a click that is not a link click. Meta announced in March 2026 that click-through would count link clicks only, and the help page says some accounts still use the earlier versions.
View-through credit needs no click. Meta's page on differences with other reporting tools gives the case: a person sees your ad, does not click, later browses your site and buys, and Meta may attribute that purchase to the ad. Shopify's marketing reports credit the channel a visit came from, and an ad that was only seen sends no visit.
Example. A click on 1 October and a $60 purchase on 6 October count under 7-day click and not under 1-day click. An ad seen on Monday evening and a $60 purchase on Tuesday morning can count under 1-day view, with no visit from a Meta ad behind the order in Shopify.
Check. Note the attribution setting of each ad set. Meta's page on actions attributed to your ad says Ads Manager can show view-through and click-through results in separate columns. The view-through column is the part no click can confirm. The attribution page adds that results can't be compared across ad sets on different attribution models, standard and incremental, and names the compare attribution settings feature for that.
The day a purchase is reported on
Meta's troubleshooting page says Ads Reporting lets you report conversions "by time of conversion or time of exposure", the second being when the ad was shown. Shopify's sales reports put a sale on the day it was made.
Example. A shopper clicks your ad on 30 September, the day it is shown, and buys on 2 October: a September purchase by time of exposure, an October one by time of conversion and in Shopify.
Check. Report by time of conversion when you compare a month with Shopify. The same page says to use the same conversion date in both tools.
Purchases estimated by modeling
Meta's page on estimated metrics says that where it cannot measure conversions directly, because data is partial or missing, it may use statistical modeling to account for some of them.
Example. Ads Manager shows 52 purchases for a week. If some were modeled, no list of 52 order numbers stands behind the figure.
Check. The page gives no way to pick out a modeled purchase. Compare totals only, and count from the order side: the orders whose UTM parameters name a Meta ad.
The pixel and the Conversions API sending one purchase
Shopify's Facebook data sharing page has three levels. Standard uses the Meta pixel, which runs in the shopper's browser, and the page says a browser-based ad blocker can stop it from sharing data. Enhanced and Maximum add the Conversions API, which sends the purchase from server to server.
When both send the same purchase, Meta counts it once only if the two events can be matched. Its deduplication page gives the conditions: the same event name and event id on both, or the event name and either the external id or the fbp value. Without that, the page says, you may see "artificially high conversion numbers". It says many partner integrations, Shopify among them, handle these parameters automatically, and it lists a mismatched or missing event id among the common issues.
Example. Order #1042, for $60, reaches Meta from the browser and from the server, and the two events can't be matched. Ads Manager can show 2 purchases and $120 against 1 order and $60 in Shopify.
Check. Meta's troubleshooting page says the Data sources tab of Meta Events Manager shows how many times an event was triggered, and the deduplication page says Events Manager shows each event's sources and deduplication status. Read both for the Purchase event. Your sharing level is in your Shopify admin under Sales channels › Facebook & Instagram › Settings › Data sharing settings.
Causes in Google Ads
The attribution model
Of the Google Ads attribution models, two are still supported. Last click gives all the credit to the last ad that was clicked. Data-driven shares the credit between the ad interactions on the way to the purchase, and it is the default for most conversion actions. First click, linear, time decay, and position-based are no longer supported. The model is set for each conversion action.
Example. A shopper clicks a Shopping ad, then a Search ad, and pays $60. Last click gives the Search campaign 1 conversion and $60. If data-driven gave 0.4 to Shopping and 0.6 to Search, the campaigns would show $24 and $36. Shopify shows one $60 order.
Check. Google's page gives the path: in the Goals menu open Summary, select the conversion, then Edit settings and Attribution model. Goals › Attribution › Model comparison sets the two models side by side.
The conversion window
A conversion window is the period after an ad interaction in which a conversion is recorded. For clicks the default is 30 days, and it can be set as long as 90 depending on the source of the conversions. A purchase made after the window is not recorded, and a change to the window applies only from then on.
Example. A click on 1 September and a purchase on 20 October are 49 days apart: no conversion with the 30-day default, one with a 90-day window, and an order in Shopify either way.
Check. The same page gives the path: Goals, then Conversions › Summary, the conversion action, Edit settings, and Click-through conversion window.
Conversions against All conversions
Google's page on conversion tracking data separates two columns. "Conversions" counts your primary conversion actions. "All conversions" adds the secondary ones and other sources, view-through conversions among them. Google's page on data discrepancies adds a warning: an action that is not a purchase, such as an add to cart, set as primary with a value can make your conversion values too high.
Example. With 40 purchases set as primary and 130 add-to-cart events set as secondary, "Conversions" shows 40 and "All conversions" shows 170, against 40 orders in Shopify. Set add to cart as primary and "Conversions" shows 170 too.
Check. Go to Summary within the Goals menu and verify the setting of each conversion action, Primary or Secondary, as the discrepancies page advises. For a comparison with Shopify's orders, the purchase should be the only primary one.
Conversions reported on the day of the click
Google's conversion columns are "calculated based on the time of the click, not the time of the conversion", says the same page. Google's page on discrepancies adds that a conversion can be reported up to 90 days after the click. So a month that has ended keeps growing.
Example. A shopper clicks on 28 October and buys on 3 November. Google Ads adds the conversion to 28 October, and Shopify adds the order to 3 November.
Check. The page says you can also report conversions by the time they occurred. Add the "Conversions (by conv. time)" column when you set a month beside Shopify's.
Video views counted without a click
An engaged-view conversion follows a video ad that was watched: at least 10 seconds of a skippable in-stream ad, or 5 seconds of an in-feed ad. For website conversions the default window is 3 days, and Google includes these in the "Conversions" column. View-through conversions, where someone saw an ad and did not interact, stay out of it.
Example. A shopper watches 10 seconds of your skippable in-stream ad on Monday, does not click, and pays $60 on Wednesday. Google Ads can count a conversion, and the order in Shopify has no visit from that ad.
Check. Google's page gives the path: the Segments icon, then Conversions, then Ad event type, which separates click-through conversions from engaged-view ones.
One conversion or every conversion
Each conversion action has a counting option. "Every" counts each conversion that follows an ad interaction. "One" counts a single conversion for each click.
Example. One click is followed by two orders of $60 in the same week. "Every" counts 2 conversions and "One" counts 1. Shopify shows 2 orders and $120.
Check. The same page gives the path: Goals, then Conversions › Summary, the conversion action, Edit settings, and Count. For a figure to set beside orders it should be "Every".
Conversions Google estimates
The "Conversions" column may include modeled conversions where not every conversion can be observed. One kind is the cross-device conversion, a click on one device and a purchase on another, which Google predicts with models when it cannot observe it.
Example. A shopper clicks your ad on a phone and pays $60 on a laptop that evening. Google Ads may count the conversion, and the laptop visit in Shopify carries no ad click.
Check. The "Cross-device conversions" column shows how many there are, observed and modeled together. Compare totals, not single conversions.
The conversion value
A conversion's value is what your tracking sends. Google's page on conversion values describes two setups: the same value for every conversion, or a value specific to each transaction. Where no transaction value is sent, the default value you entered is used. The page does not say whether a purchase value should include shipping and tax.
Example. The $60 order is $50 in Shopify's net sales and $60 in its total sales. Google Ads shows whichever figure the tag sent, or the default value.
Check. Add the "Value / conv." column, which is conversion value divided by conversions, and compare it with your average order in Shopify, with and without shipping and tax.
Causes in Shopify
The sales figure, and what cancellations and refunds do to it
Shopify's sales reports carry three figures. Gross sales is product price times quantity, before discounts, sales reversals, taxes, and shipping. Net sales is gross sales minus discounts and sales reversals. Total sales is net sales plus taxes, duties, shipping charges, and fees.
The same page says gross sales include pending, canceled, and unpaid orders and leave out test orders. A sale shows as a positive amount on the day it was made. A sales reversal, such as a refund or a cancellation, shows as a negative amount on the day it was processed. An order edited after the day it was placed shows as a separate order in the Total sales over time report.
Example. For the $60 order, gross sales is $55, net sales is $55 − $5 = $50, and total sales is $50 + $6 + $4 = $60. An ad platform's revenue for the order can agree with one of the three at most. Placed on 28 October and refunded in full on 4 November, the order leaves $60 in October's total sales and −⁠$60 in November's.
Check. In your Shopify admin go to Analytics › Reports, filter the category to Sales, and open Total sales over time. Decide which of the three figures you are setting beside the ad platform's, and compare over a period long enough to hold both the orders and their refunds.
How Shopify credits an order to a channel
Shopify's marketing reports credit an order to a channel by the attribution model you choose: last non-direct click, last click, first click, any click, or linear. So Shopify's own figure for "sales from Meta" changes with the model you pick.
The evidence sits on each order. Its conversion summary counts the customer's visits to your store in the last 30 days, and the visit details show the UTM parameters they arrived with. Shopify's page says the details can take up to 48 hours to appear, and that an order can have no summary when an app or a private browser blocked cookie tracking or when it began as a draft order. The article on what UTM parameters are covers how they get there.
Example. A shopper clicks a Meta ad on Monday, clicks a Google ad on Wednesday, and pays $60. Last click credits Google, first click credits Meta, and any click credits both with the full $60.
Check. Go to Orders, click an order number, then open Conversion summary › View conversion details › View full sessions. Read which ad the last tagged visit came from.
Causes that sit between the systems
Two platforms claiming one order
Google's page on data discrepancies says Google Ads reports a conversion only when there was a Google Ads interaction from the same account. Meta attributes a purchase to your ad when it happened within a set number of days after someone viewed or clicked it. Neither rule asks whether the other platform's ad was also clicked.
Example. A month has 100 orders. Ads Manager reports 60 purchases and Google Ads reports 55 conversions: 115 claims on 100 orders. Even if every claim is a real order, at least 15 orders were claimed twice.
Check. Add both platforms' purchase counts for one month and set the sum beside Shopify's order count for that month. A sum above the order count cannot all be separate orders.
Refunds after the conversion was recorded
In Google Ads the documented route for taking a sale back out is a conversion adjustment that you import: a retraction removes the conversion from your reports, and a restatement changes its value. The page describes nothing that takes a refund out when no adjustment arrives.
Example. The $60 order refunded on 4 November is −⁠$60 in Shopify that day. In Google Ads it is still one conversion worth $60 unless a retraction was imported.
Check. Find out whether your tracking setup sends conversion adjustments. If it does not, your Google Ads conversion value is a figure before refunds, and Shopify's net and total sales are figures after them.
Three time zones
Each system keeps its own clock. Meta's developer documentation says insights are reported in the ad account's time zone, and its help page on changing the time zone says a new ad account starts on Pacific time and that changing it closes the ad account and creates a new one. Google's page on the time zone setting says your reports and statistics are affected by the time zone you select, and that it can no longer be changed in a standard account. Your store's is set in your Shopify admin under Settings › General, in the Store defaults section, and Shopify's page on analytics discrepancies names different reporting time zones as one reason its figures and another tool's disagree.
Example. In mid-October the store is on New York time, the Meta ad account on Pacific time, and the Google Ads account on London time. An order paid at 1:30 a.m. in New York on 1 October is a purchase at 10:30 p.m. on 30 September in Pacific time: September in Ads Manager, October in Shopify. An order paid at 9 p.m. in New York on 15 October is a conversion at 2 a.m. on 16 October in London.
Check. Write the three time zones side by side once. Meta's help page puts its setting in Ads Manager under Payment settings, in the Business info section, as Currency and time zone. Where they differ, compare whole months and expect the first and last day to move.
Which number to judge a campaign on
Judge campaigns on the store's orders, matched to the ad by UTM parameters. An order is one record in your store, and a refund comes back out of it. No setting in an ad account changes it.
The match needs the order to say which ad it came from. That is what UTM parameters are for, and the free UTM builder writes them. On Meta they go on each ad: see the Meta tracking guide. In Google Ads they go in the account's final URL suffix: see the Google Ads tracking guide.
The platforms' own figures keep one use. Inside one platform, under one set of rules, they rank that platform's ads against each other. They are not a way to compare Meta with Google Ads, or either one with what your store took in. For that comparison, see Google Ads or Meta ads for a Shopify store.
AdZoom does this matching for you. It reads the UTM parameters Shopify records on each order and matches the order to the campaign and the ad that sent it.