- Ads Manager is usually higher than Shopify because, with its default setting, Meta counts purchases up to 7 days after a click and 1 day after a view, plus modeled conversions.
- Every ad platform claims the orders its ads touched, so platform numbers added together exceed your real order count.
- Align the period, time zone, date basis, currency and tax before you compare any numbers.
- If Ads Manager shows more purchases than your store had orders in total, look for duplicate purchase events first.
- Use Ads Manager to compare ads inside Meta, and store revenue and gross profit to decide whether advertising pays.
Ads Manager usually shows more sales than Shopify because the two count different things. With its default attribution setting, Meta credits a purchase to an ad when it happens within 7 days of a click or 1 day of a view. It adds modeled conversions, and Ads Manager reports the purchase on the day of the ad impression. Shopify counts each order once, on the day it was placed.
Neither number is wrong, but they answer different questions. This guide lists the causes of the gap, walks through a reconciliation of one example month with real arithmetic, and shows which number to use for which decision.
Why does Ads Manager show more sales than Shopify?
Most gaps come from seven causes. Five of them follow from how Meta counts. Two of them are tracking problems that you should fix.
| Cause | What happens | Fix needed? |
|---|---|---|
| Click-through window | Meta credits purchases up to 7 days after a click, also when the click was in the previous period | No |
| View-through | Meta also credits purchases by people who only saw the ad, within 1 day | No |
| Modeled conversions | Meta estimates some conversions it cannot observe directly | No |
| Every platform claims the sale | Meta, Google, TikTok and email each count the same order | No |
| Reporting date and time zone | Ads Manager reports on the day of the ad impression; Shopify uses the order day in the store time zone | No, but align them before you compare |
| Currency, tax and shipping | The purchase value is built differently from the Shopify figure you compare it with | Check: the value may be wrong |
| Duplicate events | The same order reaches Meta twice with different event ids | Yes |
Attribution windows and view-through conversions
Click-through window
Meta's default attribution setting for new ad sets is 7-day click or 1-day view. A purchase counts for an ad when it happens within 7 days after someone clicked that ad. The click and the purchase do not have to be in the same reporting period, so a click near the end of one month can add a purchase near the start of the next.
Ads Manager can show more than one window. Open the Columns menu and choose Compare attribution settings: Ads Manager then shows results for settings such as 1-day view, 1-day click, 7-day click and 28-day click side by side, whichever setting the ad set uses. Use this to see how much of the total comes from each part.
View-through conversions
The 1-day view part counts purchases by people who saw an ad, did not click it, and bought within a day. Shopify cannot see these at all, because there was no visit from the ad. For a brand with a lot of video or retargeting reach, view-through can be a large share of the reported purchases. Some of those buyers would have bought anyway, for example existing customers who were going to order that day.
Modeled conversions
Not every conversion can be tied to a known person. Meta uses statistical modeling to estimate conversions when its data is missing or partial, for example because of people's privacy choices. Modeled purchases fill a gap in Meta's view, but they do not correspond to specific orders in your store. You cannot match them one by one.
Why every platform claims the same sale
Each ad platform only sees its own ads. If a customer clicks a Meta ad, then a Google ad, then an email, and then buys, Meta counts the order, Google counts it and your email tool counts it. None of them knows about the others. Add the platform numbers together and you get more sales than you had.
This is not a bug. It is what self-attribution means: each platform measures its own ads with its own rules. It becomes a problem when you add the numbers up, or when you move budget based on them. To compare channels fairly, every order must be credited once, with one rule for all channels. That is the job of an attribution model, and the options are compared in attribution models for ecommerce.
Dates, time zones, currency and tax
Impression date or order date?
Ads Manager reports a conversion on the day of the ad impression. Meta's reporting API can use either the impression day or the conversion day, and its documentation gives an example: a person sees an ad on 1 January and buys on 2 January. With impression time, the purchase appears on 1 January. With conversion time, it appears on 2 January. Shopify always uses the order date. Near the end of a period, the same order can land in different months in the two reports.
Time zones
Your ad account and your store each have their own time zone. If the ad account runs on Pacific time and the store on Central European time, every day in one report is shifted by about nine hours against the other. Daily numbers then never match, even when the monthly total is close.
Currency, tax and shipping
Ads Manager shows the purchase value that your pixel or server sends. Many setups send the order total, which includes tax and shipping. In Shopify, Total sales includes tax and shipping, while Net sales does not. Both Shopify figures also subtract returns, while the purchase value in Ads Manager stays as it was sent. Compare the purchase value with the matching Shopify figure, in one currency. If your store sells in several currencies, check that each purchase is sent with the currency code of its own amount.
Duplicate purchase events
Duplicates are the one cause that is plainly an error. They happen when the same order reaches Meta twice with different event ids, so Meta cannot tell that it is one purchase. Common sources:
- Two apps send the same pixel, for example Shopify's Facebook & Instagram channel and a tracking app.
- A pixel code pasted in the theme runs next to an app.
- A browser event and a server event for the same order do not share an event id.
- The thank-you page fires the purchase again when the buyer reloads it.
Here is a quick test. If Ads Manager reports more purchases than your store had orders from all sources in the same period, you very likely have duplicates. The fixes are in how to prevent double counting and in duplicate purchase events.
How to reconcile Ads Manager and Shopify, step by step
- Pick one closed period
Use a full past month, not the current week. Late conversions keep arriving for days after a period ends.
- Align time zone and date basis
Put both reports in one time zone, and note whether Meta reports on impression time or conversion time.
- Count orders before revenue
Compare the number of purchases first. Revenue adds questions about tax, shipping and currency on top.
- Separate clicks from views
Compare attribution settings in Ads Manager and take the 7-day click results on their own.
- Rule out duplicates
Compare Meta purchases with all store orders, and check that browser and server events share an event id.
- Match the rest to orders
List the store orders with a Meta click before them, from the click ids and UTM parameters in your own tracking data. What is left over is orders another channel closed, and modeled or unmatched conversions.
- Compare revenue on one basis
Remove tax and shipping from both sides before you use the numbers for profit decisions.
A worked example
An example store spends $5,000 on Meta over four weeks. Ads Manager reports 212 purchases with a purchase value of $16,960. The store had 450 orders in total. Its own click data credits 150 of them to Meta, with last click and a 7-day window.
Working through the steps explains each of the 62 extra purchases:
Next, compare revenue. The 150 orders brought in $9,750 in net sales, plus $600 of shipping and $2,070 of VAT, so customers paid $12,420 in total. The same four weeks give three different ROAS figures:
| Revenue used | Amount | ROAS on $5,000 |
|---|---|---|
| Ads Manager purchase value, 212 purchases | $16,960 | 3.39 |
| Store orders credited to Meta, total paid with VAT and shipping | $12,420 | 2.48 |
| The same orders, net sales without VAT and shipping | $9,750 | 1.95 |
Which number should you trust?
Each number is right for the decision it was built for. Use them side by side, not as rivals.
| Decision | Number to use | Why |
|---|---|---|
| Which ad, ad set or creative works better inside Meta | Ads Manager | The same rules apply to every ad, and it is the data Meta optimizes on |
| How to split budget between Meta, Google and TikTok | One store-side attribution model | Each order is credited once, with one rule for all channels |
| Whether advertising pays overall | Store revenue and gross profit against total ad spend | It does not depend on any attribution model |
| Accounting, refunds and tax | Shopify | It holds the real orders and refunds |
Translate your break-even into Ads Manager terms
You set targets in Ads Manager, but your break-even ROAS comes from your store's margin. If Ads Manager steadily reports more revenue than the store, translate the break-even with the ratio between the two. In the example, Ads Manager reports $16,960 and the store has $9,750 in net sales on the same orders, a ratio of 1.74. Break-even ROAS explains how to calculate the starting point.
With a 40% gross margin rate, break-even ROAS is 1 ÷ 0.40 = 2.5. In Ads Manager terms: 2.5 × 1.74 = 4.35. The example campaign shows 3.39 in Ads Manager, so it is below break-even on the store's numbers.
This method treats the store's click data as the truth. Part of the view-through revenue may be real, so the true break-even in Ads Manager terms can be a little lower. Check it over a few months against your total revenue and total ad spend across all channels.
How ROASaurus helps
ROASaurus sends purchases server-side from your order data, with the same event id as the browser pixel, so Meta keeps one copy of each order. Its attribution report credits every order once across all channels, with twelve models from last click to data-driven Markov and Shapley and Total Impact. You can switch the lookback window between 1 and 90 days or unlimited, and the report shows the share of orders it could attribute. Spend synced from your connected ad accounts gives ROAS and CPA per campaign. By default ROASaurus counts no view-through conversions, so expect its numbers to be lower than Ads Manager; the Clicks & views model adds the view-throughs Meta reports, modelled onto your orders. The reasons are summarized in how attribution works.
Sources
- Meta Business Help Center: How conversions are attributed in Commerce Manager
- Meta Business Help Center: Compare attribution settings in Meta Ads Manager
- Meta Business Help Center: About Meta's modeled conversions
- Meta for Developers: Ad Account, Insights
- Shopify Help Center: Analytics data points (fields) reference
In ROASaurus
- Attribution in ROASaurus
- Help: how attribution works
- Help: prevent double counting
- ROAS and break-even ROAS calculator