Short answer
Shopify, Meta and GA4 count the same sales under different rules. Shopify records every order that happens; Meta Ads Manager only claims purchases that fall inside its attribution window; GA4 usually sees fewer because of cookie consent and ad blockers, and it never lets two channels claim the same sale. Use Shopify for revenue and profit, each ad platform for in-platform optimization, and GA4 for comparing channels.
Key takeaways
- Shopify is the source of truth for total orders and revenue; Meta and GA4 are attribution tools, not accounting ledgers.
- Meta's standard attribution is 7-day click and 1-day view (website-conversion campaigns can add a 1-day engage-through window), and since March 2026 only link clicks count as clicks; saves, shares and likes moved to engage-through attribution.
- Google Ads credits a conversion to the date of the click, GA4 to the date of the purchase, so even the same week rarely lines up.
- Don't try to close the gap to zero; explain it. Compare the same date range, time zone and attribution setting, then sort what's left into causes.
- Calculate real (blended) ROAS as Shopify net sales divided by total ad spend; use platform ROAS only to compare campaigns inside that platform.
Contents
Why do Shopify, Meta and GA4 show different sales numbers?
Because they don't measure the same thing. Shopify records orders at the checkout; Meta and GA4 use browser or server signals to attribute a sale to an ad or a channel, and each follows its own rules.
For the same week, a store can easily see this: Shopify 20 orders, Meta Ads Manager 14 purchases, GA4 11 purchases. None of these numbers is "wrong". Each answers a different question. Shopify answers "how many orders did I get?", Meta answers "how many of those orders did my ads touch?", and GA4 answers "among the visits I could measure, which channel gets the credit?"
The gap usually comes from five places:
- Scope: Shopify also counts orders that never touched an ad: organic search, direct, email, POS and draft orders created by your team.
- Attribution windows: Meta and Google Ads only count clicks or views within a set number of days.
- Date logic: some platforms book the sale on the day of the click or impression, others on the day of the purchase.
- Signal loss: declined cookie consent, ad blockers and device switching mean GA4 and the Meta pixel never see part of your sales.
- Credit sharing: GA4 counts each sale once and splits the credit among channels; Meta and Google Ads can each claim the same sale for themselves.
Why don't Facebook Ads purchases match Shopify orders?
Meta only reports purchases it can connect to an ad interaction inside the attribution window, including people who saw the ad without clicking. That's why Ads Manager can come in both lower than Shopify and, with double counting, higher.
The attribution window: 7-day click, 1-day view
Meta's standard attribution setting is 7-day click and 1-day view. Campaigns optimizing for website conversions can also include a 1-day engage-through window, which you'll find under the ad set's attribution setting. Someone who clicks your ad and buys nine days later is an order in Shopify but invisible in Ads Manager. The reverse also happens: a shopper who only sees your Reel, then searches your brand on Google the next day and buys, can show up in Meta (view-through) and in Google Ads (click).
To see how much of Meta's number is view-through, open Ads Manager, go to Columns > Compare attribution settings and add the click-only and view-only windows side by side.
The 2026 change: a "click" now means a link click
Meta announced in March 2026 that click-through attribution now includes only link clicks, rolling out to campaigns optimizing for website or in-store conversions. Conversions after likes, saves or shares now sit in a separate category called engage-through attribution, and the engaged-view threshold for video ads dropped from 10 seconds to 5 seconds. If you compare against pre-March 2026 data and see click-through purchases fall, that is largely a reclassification, not a drop in sales.
Date shifts and double counting
Meta's reporting API has a setting called action_report_time that decides whether a purchase is booked on the impression date or the conversion date. Someone who sees an ad on January 1 and buys on January 2 lands on January 1 in one view and January 2 in the other, so day-by-day comparisons drift easily. And if your pixel and Conversions API don't send the same order with the same event_id, Meta can count one order twice. The deduplication steps are covered in our Meta Conversions API setup guide.
Why is GA4 usually the lowest number?
GA4 can only fully measure browser sessions that were consented to and not blocked, and it never lets two channels claim the same sale. Together, those two effects usually make GA4 the lowest of the three.
- Cookie consent: if a visitor rejects analytics cookies, GA4 can't record the session in full. Even with Consent Mode on, behavioral modeling only fills the gap once a property collects at least 1,000 events per day with analytics storage denied for at least 7 days, and has at least 1,000 daily consented users on at least 7 of the previous 28 days. Most small stores sit below that, so the gap isn't modeled. More in our post on Consent Mode v2.
- Ad blockers and browser protections: if the tag never loads, the sale never reaches GA4. Shopify records the order on its server, so it isn't affected.
- Checkout tracking: the
purchaseevent can go missing if the thank-you page doesn't load or the tag isn't firing on the checkout. The checklist in our GA4 ecommerce setup guide helps you verify it. - Channel credit: GA4 counts a sale once and credits it to channels according to your attribution model. A sale Meta claims through view-through appears in GA4 under Organic Search or Direct. So "Meta revenue" in GA4 is lower than in Ads Manager, even though GA4's total purchase count doesn't change.
Customers who switch devices
If a shopper sees your ad on their phone and buys on a laptop that evening, GA4 can only stitch the two visits together with something like a logged-in User-ID. Otherwise, the laptop purchase shows up as Direct or Organic Search and Meta's share in GA4 shrinks. Meta, by contrast, can recognize the same logged-in person on both devices and still tie the sale to the ad. The effect is bigger for considered, higher-ticket products (furniture, electronics, jewelry) and smaller for cheap impulse buys. Encouraging customer accounts and sending hashed email and phone through the Conversions API improves matching on every platform.
Why don't Google Ads and GA4 conversions match?
The biggest reason is date logic: Google Ads books a conversion on the date of the click, GA4 on the date of the purchase. Different windows, cookie lifetimes and modeling add to the gap.
According to Google's own help documentation, the main differences are:
- Click date: someone who clicks on September 1 and buys on September 12 is a September 1 sale in Google Ads and a September 12 sale in GA4. Month-end reports will never match exactly.
- Windows and cookies: the Google Ads conversion window can be set from 1 to 90 days and the Ads cookie expires 90 days after the click, while the Analytics cookie lasts up to 2 years. In GA4, the default lookback for key events other than first visits is 90 days (Admin > Data display > Events > Attribution settings).
- Column choice: the "Conversions" column includes only primary actions with your chosen counting method; "All conv." also includes secondary actions and view-through conversions. Comparing the wrong column is a common mistake.
- Import delay and invalid clicks: GA4 conversions imported into Google Ads can arrive up to 24 hours later, and Google Ads filters invalid clicks that GA4 doesn't.
- Counting method: "Every" counts all purchases after a click; "One" counts only one per click. For ecommerce, "Every" is the usual choice.
How do time zones and refunds make the gap bigger?
If your accounts use different time zones, late-night orders fall on a different day; refunds come off revenue only in Shopify. Both distort daily and weekly comparisons.
Say your Shopify store runs on Eastern Time and your Meta ad account was created in Pacific Time. Every order placed between 9 p.m. and midnight Pacific is already "tomorrow" in Shopify. During a Black Friday week, that can move a noticeable number of orders between days. Check the store time zone under Settings > General in Shopify and compare it with your ad accounts.
Refunds work like this: the pixel and GA4 receive the purchase event once, at checkout. If the order is later canceled or refunded, Meta and GA4 don't reduce revenue unless you send a separate refund event. In high-return categories such as apparel and footwear, platform ROAS therefore looks noticeably better than real profitability.
How do you reconcile Shopify, Meta and GA4 step by step?
The goal isn't to make the gap zero; it's to make it explainable. Compare the same period under the same rules, then split the remaining gap into causes. If a large share can't be explained, you have a tracking problem.
- Fix the period Use at least 7 days, ideally 14–28. Single-day comparisons mislead because of date shifts.
- Align time zones Check the time zone in Shopify, Meta and GA4; note any difference.
- Filter Shopify by channel Remove POS, draft and marketplace orders so only Online Store orders remain.
- Write down platform settings Note Meta's attribution setting, which Google Ads column you use, and the GA4 reporting attribution model.
- Classify the gap Split it into non-ad sales, out-of-window sales, view-through claims and tracking loss.
- Spot-check orders Look up a few Shopify order IDs in GA4 and Meta event data; missing events point to a setup bug.
Example: breaking down 20 vs 14 vs 11
The table below is a hypothetical example of how the headline scenario could be explained; your own breakdown will differ.
| Line | Shopify | Meta | GA4 |
|---|---|---|---|
| Total recorded purchases | 20 | 14 | 11 |
| Non-ad orders (organic, email, direct) | 6 | — | spread across channels |
| Claimed by Meta via view-through or engage-through only | — | 3 | credited to another channel |
| Sales more than 7 days after the click | 2 | not shown | shown |
| Missed by GA4 due to consent or blockers | — | — | 9 missing |
In this breakdown, GA4's 9 missing sales are 45% of all orders. If consent rejection alone can't explain a loss that large, check your checkout tagging.
Which number should you trust for which decision?
There isn't one "right" number; each decision has a right source. Use Shopify for money and profit, each platform's own data for optimizing inside it, and GA4 for cross-channel comparisons.
| Decision | Source to use | Why |
|---|---|---|
| Total revenue, profit, budget ceiling | Shopify (net sales) | Reflects real money after refunds, cancellations and discounts |
| Choosing ad sets or creatives in Meta | Meta Ads Manager | The algorithm learns from this signal; it's consistent within Meta |
| Shifting budget between Google campaigns | Google Ads conversions | Your bid strategy runs on this data |
| Channel share and trends | GA4 | Counts each sale once, no double counting |
| Overall ad efficiency | Shopify revenue / total ad spend | Independent of platform over-claiming |
A worked example: in one month Shopify shows $12,000 in net online sales and you spent $4,000 on ads ($2,500 Meta, $1,500 Google). Meta reports $9,000 in purchase value (3.6 ROAS) and Google Ads $6,000 (4.0 ROAS). Together they claim $15,000, more than the store actually sold. Your blended ROAS is $12,000 / $4,000 = 3.0, and that is the figure to compare with your break-even point.
Platform ROAS
- For comparing campaigns and creatives
- Includes view-through and modeled conversions
- Usually ignores refunds
Blended (real) ROAS
- Shopify net sales / all ad spend
- Shows whether the business actually makes money
- Compare it with your break-even ROAS
For how to read ROAS and set a profitability threshold, see What is ROAS. If you'd rather not line up Shopify, GA4 and your ad accounts by hand every week, Marpany's conversion analysis page puts all three side by side for the same date range. The same logic applies if you run WooCommerce or another platform: your store backend is the ledger, the ad platforms are the attribution layer.
What should you do this week?
Verify tracking first, then lock your comparison rules, then agree in writing on which source drives which decision.
- In Meta Events Manager, confirm pixel and Conversions API purchases are deduplicated with the same
event_id. - Place a test order and confirm the
purchaseevent appears in GA4 DebugView. - Compare the time zone and currency across Shopify, Meta, Google Ads and GA4.
- Agree as a team which Google Ads column ("Conversions" or "All conv.") goes into reports.
- Add a "Shopify net sales / total ad spend" line to your weekly report.
- If the unexplained gap has grown for four weeks in a row, re-audit your tracking setup.
To decide which metrics belong in that weekly report, our ad performance KPI guide is a good starting point. Settings and menu names above are accurate as of September 2026 and may change.
Frequently asked questions
Why does Facebook show more purchases than Shopify?
The two most common reasons are view-through and engage-through attribution, where Meta claims sales that another channel also drove, and missing deduplication between the pixel and the Conversions API. Check Events Manager for duplicate event warnings and compare attribution settings in Ads Manager.
Why doesn't GA4 show all my Shopify orders?
GA4 relies on a browser tag, so it can miss sales from visitors who decline cookies, use ad blockers or leave before the thank-you page loads. Shopify records the order on its server. If the gap is very large, place a test order and confirm the purchase event fires.
Why don't Google Ads and GA4 conversions match?
Google Ads books a conversion on the click date, GA4 on the purchase date. Conversion windows, cookie lifetimes, modeled conversions and an import delay of up to 24 hours add further differences. Comparing a longer period removes most of the gap.
Which Meta attribution setting should I use?
For most ecommerce accounts the standard 7-day click, 1-day view setting is fine. If you suspect view-through is inflating results, track the click-only column separately in reports and watch the difference for a few weeks before changing campaign settings.
How do I calculate real ROAS?
Divide Shopify net sales for a period by total spend across all ad platforms for the same period. This blended ROAS isn't affected by platforms claiming each other's sales and shows whether the business actually makes money.
How big a discrepancy is normal?
There's no universal percentage; it depends on product type, purchase cycle, consent rates and setup quality. What matters is that the gap stays stable week to week. A gap that suddenly widens usually points to a broken tag or a deduplication problem.
Sources
- Google Ads Help: Differences between Google Ads and Analytics conversion statistics support.google.com
- Google Analytics Help: Select attribution settings (lookback windows) support.google.com
- Google Analytics Help: Behavioral modeling for consent mode support.google.com
- Meta for Business: Updates to click-through attribution and engage-through attribution (March 2026) facebook.com
- Meta Marketing API: Ad Account Insights (action_report_time, attribution windows) developers.facebook.com
- Meta Business Help Center: Set up engage-through in Meta Ads Manager (compare attribution settings) facebook.com

Turkish
English
Spanish
Arabic
Russian