Why Shopify and Meta Show Different Numbers (And What to Do About It)
If you’ve ever opened your Shopify dashboard and your Meta Ads Manager side by side, you’ve probably had this sinking feeling: the numbers don’t match. Not even close.
Meta says your campaign drove 80 purchases yesterday. Shopify shows 50 total orders. Where did the other 30 go? Did Meta make them up? Is Shopify missing something?
Neither platform is lying to you. They’re just speaking different languages when it comes to counting sales. Understanding why — and knowing what to do about it — is one of the most important things you can do as a Shopify merchant running paid ads.
How Meta Counts Conversions
Meta uses a generous attribution model. By default, it counts a conversion if someone:
- Clicked your ad and purchased within 7 days, OR
- Viewed your ad (without clicking) and purchased within 1 day
That second one is the big one. If someone scrolled past your ad in their Instagram feed, didn’t click it, but then went to your store later that day and bought something — Meta takes credit for that sale.
This is called view-through attribution, and it’s a legitimate way to measure ad influence. Brand awareness matters. But it also means Meta is counting sales that the customer might have made anyway, or that another channel actually drove.
Meta’s Attribution Windows
| Window | What It Means |
|---|---|
| 7-day click | Customer clicked your ad and converted within 7 days |
| 1-day view | Customer saw your ad and converted within 1 day |
| 28-day click | Extended window (available in some reports) |
You can change these windows in Ads Manager under the “Attribution Setting” column, but the default 7-day click / 1-day view is what most merchants use.
How Shopify Counts Sales
Shopify takes the opposite approach. It uses last-click attribution, meaning it gives credit to whatever the customer clicked on right before making a purchase.
If a customer clicked your Meta ad on Monday, browsed around, left, came back on Wednesday by Googling your brand name, and bought — Shopify attributes that sale to Google (organic search), not Meta.
Shopify also has a simpler model. An order is an order. It shows up when the checkout is completed. There’s no concept of view-through or multi-day windows.
The Five Reasons Your Numbers Don’t Match
1. Attribution Windows Are Different
This is the biggest reason. Meta’s 7-day click window means it’s counting sales that happened up to a week after someone clicked your ad. If a customer clicks Monday and buys Thursday, Meta counts it on Monday (when the click happened). Shopify counts it on Thursday (when the order happened).
Even the daily totals won’t align, because they’re anchored to different events.
2. View-Through Conversions Inflate Meta’s Numbers
Meta counts people who merely saw your ad. If you’re running campaigns with high impressions — video ads, Stories, Reels — you’re showing your ad to a lot of people. Some of them would have bought anyway. Meta still counts those.
Depending on your campaign type, view-through conversions can account for 30-60% of Meta’s reported conversions. That’s a huge chunk of “sales” that Shopify will never attribute to Meta.
3. iOS 14+ and App Tracking Transparency
Since Apple introduced App Tracking Transparency (ATT) in iOS 14.5, a large percentage of iPhone users have opted out of tracking. This means:
- Meta can’t see what happens after someone clicks your ad on an iPhone
- Meta uses statistical modeling to estimate conversions it can’t directly observe
- These modeled conversions show up in your reports as real numbers
Meta is essentially guessing for a significant portion of your iOS traffic. Sometimes the guess is close. Sometimes it’s not.
4. Cross-Device Journeys
A customer sees your ad on their phone during lunch, then buys on their laptop at home. Meta might connect these through the user’s Facebook login. Shopify sees a completely new session from a different device, with no connection to the original ad click.
This is especially common for higher-priced items where people browse on mobile but buy on desktop.
5. Returns, Cancellations, and Test Orders
Meta counts conversions at the point of purchase and doesn’t subtract returns or cancellations. Shopify’s revenue numbers reflect refunds and cancelled orders. Over time, this creates a growing gap between what Meta says you earned and what actually hit your bank account.
What You Can Actually Do About It
Accept That Perfect Matching Is Impossible
This isn’t a bug you can fix. Two platforms using different attribution models will always show different numbers. The goal isn’t to make them match — it’s to understand the truth.
Check Meta’s Attribution Settings
In Ads Manager, click “Columns” and customize your view to show different attribution windows. Compare 7-day click only (removing view-through) to get a number closer to what Shopify shows. This won’t match perfectly, but the gap should shrink.
Use UTM Parameters on Every Ad
UTM parameters are tags you add to your ad URLs that survive the entire customer journey. When someone clicks your ad with UTMs and buys, you can see exactly which campaign, ad set, and ad drove that sale — directly on the Shopify order.
A properly tagged URL looks like this:
https://yourstore.com?utm_source=facebook&utm_medium=cpc&utm_campaign=spring_sale&utm_content=video_ad_v2
This is first-party data. It doesn’t rely on cookies, it doesn’t get blocked by iOS, and it doesn’t involve any guessing.
Track UTMs at the Order Level
The problem with Google Analytics is that it tracks sessions, not orders. You can see that a session came from a Meta ad, but connecting that session to a specific Shopify order requires extra work.
Tools like Detectly solve this by capturing UTM parameters when a visitor arrives and attaching them directly to the Shopify order as metafields. Every order gets tagged with the exact source, medium, campaign, and content that drove it. No modeling, no estimation — just first-party attribution data.
Build a Simple Reconciliation Spreadsheet
If you’re not ready for a tool, you can do a simplified version manually:
- Export your Shopify orders for the period
- Export your Meta Ads Manager report for the same period
- Compare total conversions, revenue, and ROAS
- Note the gap percentage — this becomes your “Meta discount factor”
Over time, you’ll learn that Meta typically over-reports by a consistent percentage (often 20-40% for most stores). You can use this factor to mentally adjust Meta’s numbers.
The Bottom Line
The gap between Shopify and Meta isn’t a problem with either platform. It’s a fundamental difference in how they define and count conversions. Meta is measuring ad influence broadly. Shopify is counting orders narrowly.
The merchants who scale profitably are the ones who understand this gap and build systems to find the ground truth. Whether you use UTM tracking, a reconciliation spreadsheet, or a purpose-built attribution tool, the important thing is that you’re not blindly trusting either platform’s numbers.
Your bank account doesn’t care about attribution models. It cares about real revenue from real customers. Start there, and work backwards.
Ready to see your true ROAS?
Detectly tracks every UTM, attributes every Shopify order, and shows you which channels actually drive revenue.