Dashboards
Shopify sales don't match Meta Ads Manager? Here is why, and which to trust
If your Shopify sales don't match Meta Ads Manager, nothing is broken. The two tools answer different questions, and they will never agree however carefully you set them up. This guide explains the five reasons the numbers differ, which one to trust for each decision you make, and a twenty minute check that shows how far apart yours really are.
Why your Shopify sales don't match Meta Ads Manager
Five things are going on at once, and most stores have all five.
- The attribution window. By default, Ads Manager counts a purchase if someone bought within seven days of clicking an ad, or within one day of simply seeing one. Shopify's marketing reports give an order to the last channel the customer clicked, and seeing an ad without clicking counts for nothing. So a customer who sees your ad on Monday, searches for you on Tuesday and buys is a Meta purchase in Ads Manager and a search or direct order in Shopify. Meta also reports some web purchases a day or more late, so yesterday's figure in Ads Manager is often not finished.
- Tracking gaps. Ad blockers, Safari, the iOS tracking prompt and cookie consent mean the pixel never sees a share of your buyers. Meta fills part of that gap with modelled conversions, which are estimates. Shopify sees every order, because it took the money.
- Double counting. If the Meta pixel and the Conversions API both send the purchase without matching event IDs, one order becomes two purchases. The same happens when an old pixel snippet is still in the theme alongside the Meta sales channel app. If Events Manager shows far more purchases than Shopify shows orders, this is usually why.
- Different values. Ads Manager reports whatever value your tracking sends, which is often the order total including VAT and sometimes shipping. Shopify's net sales take tax, shipping, discounts and refunds out. Refunds and cancelled orders come off Shopify, and never off Ads Manager. We covered the VAT side in ROAS and VAT.
- Different questions. Shopify's marketing report is deliberately cautious: the last click wins, views get no credit, and Direct catches everything it cannot place. Meta is deliberately generous: any click or view inside the window gets credit, and Google and Klaviyo would claim the same order if the customer touched them too. Add the platforms together and you get more than you sold.
Which number to trust, for which decision
- How much did we sell? Shopify net sales. It is the only figure tied to money arriving in the bank.
- Which ad or audience is doing better? Ads Manager. Its counting is skewed, but it is skewed the same way for every ad in the account, so comparisons between ads hold up even when the totals do not.
- Are the ads paying for themselves? Neither on its own. Use MER: Shopify net sales divided by total ad spend across every platform. It cannot be flattered by attribution because it ignores attribution.
- How many new customers did we win? Shopify's first time versus returning customer split, and your ad spend divided by those new customers.
- Did a change work? Shopify sales before and after the change, with everything else that changed that week written down next to it.
A worked example in pounds
Take a made up store. In one week Shopify records net sales of £20,000 excluding VAT from 400 orders. Meta spend is £3,000, and Ads Manager shows 160 purchases worth £9,600, a ROAS of 3.2. Meta is claiming 40% of the orders, and its purchase value includes VAT, so its £9,600 is really about £8,000 of the £20,000. MER for the week is £20,000 ÷ £3,000, or 6.7.
The next week the founder halves spend to £1,500 because 3.2 "wasn't great". Ads Manager now shows a ROAS of 3.9, since the ads left running are the best ones. Shopify net sales fall to £17,200. MER rises to 11.5 and looks wonderful. But the store sold £2,800 less to save £1,500, and the ads that were cut were also feeding the search and direct orders that Shopify never gave Meta credit for.
Ads Manager got better while the business got worse, and only Shopify said so. That is the whole argument for judging ads on total sales, not on the number the ad platform reports about itself.
A twenty minute check
- Compare attribution settings. In Ads Manager, add the "Compare attribution settings" column and put 7 day click on its own next to the default. The gap is purchases from people who only saw an ad, which Shopify will never count.
- Open Shopify's marketing attribution report for the same week and put the Meta figure next to the 7 day click figure. Expect Shopify to be lower. If it is a fraction of Meta's number, your UTM tags are probably missing or inconsistent.
- Check Events Manager for the week's purchase events against Shopify's order count. Many more events than orders means duplicates.
- Place a test order and see what value lands in Ads Manager: VAT and shipping in or out. Then decide the basis you will report on and stick to it.
- Write down MER for the week. That becomes the number you judge the ads by. Ads Manager stays open for choosing between ads, not for deciding whether to spend.
What we do on client dashboards
Every custom dashboard we build takes orders and net sales from Shopify, spend from each ad platform, and shows them side by side with MER and cost per new customer worked out from Shopify's numbers, not the platform's. Platform ROAS stays on the screen, labelled for what it is. You can click around a working example with made up data in our live dashboard demo. If you want the same for your own store, every build starts with a consultation and a fixed quote.
Frequently asked questions
Why does Ads Manager show more purchases than I had orders?
Usually duplicates: the pixel and the Conversions API sending the same purchase without matching event IDs, or two pixel setups on the store. Compare purchase events in Events Manager with Shopify's order count for the same week. If they are close, the rest of the gap is view through purchases and the seven day window.
Should I change Meta's attribution setting to 7 day click only?
Be careful. The attribution setting changes how Meta delivers ads as well as how it reports them, so it is not only a reporting choice. Most brands we work with keep the default for delivery and read the stricter figure from the compare column instead.
Is Shopify's marketing attribution report accurate?
It is cautious and consistent rather than complete. It gives ads no credit for views and sends anything it cannot place to Direct, so it undercounts what Meta did. Use it for direction, not for deciding to switch a channel off.