Measurement

Shopify vs Meta vs GA4: Why Your Sales Numbers Don't Match

  • By Marpany
  • Published:
  • Updated:
  • 10 min read
Shopify vs Meta vs GA4: Why Your Sales Numbers Don't Match

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.

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 purchase event 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.
7 daysMeta default click attribution
1–90 daysGoogle Ads conversion window range
90 daysGA4 default lookback for non-acquisition key events
24 hoursPossible delay when GA4 conversions import into Google Ads

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.

  1. Fix the period Use at least 7 days, ideally 14–28. Single-day comparisons mislead because of date shifts.
  2. Align time zones Check the time zone in Shopify, Meta and GA4; note any difference.
  3. Filter Shopify by channel Remove POS, draft and marketplace orders so only Online Store orders remain.
  4. Write down platform settings Note Meta's attribution setting, which Google Ads column you use, and the GA4 reporting attribution model.
  5. Classify the gap Split it into non-ad sales, out-of-window sales, view-through claims and tracking loss.
  6. 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.

LineShopifyMetaGA4
Total recorded purchases201411
Non-ad orders (organic, email, direct)6—spread across channels
Claimed by Meta via view-through or engage-through only—3credited to another channel
Sales more than 7 days after the click2not shownshown
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.

DecisionSource to useWhy
Total revenue, profit, budget ceilingShopify (net sales)Reflects real money after refunds, cancellations and discounts
Choosing ad sets or creatives in MetaMeta Ads ManagerThe algorithm learns from this signal; it's consistent within Meta
Shifting budget between Google campaignsGoogle Ads conversionsYour bid strategy runs on this data
Channel share and trendsGA4Counts each sale once, no double counting
Overall ad efficiencyShopify revenue / total ad spendIndependent 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 purchase event 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

  1. Google Ads Help: Differences between Google Ads and Analytics conversion statistics support.google.com
  2. Google Analytics Help: Select attribution settings (lookback windows) support.google.com
  3. Google Analytics Help: Behavioral modeling for consent mode support.google.com
  4. Meta for Business: Updates to click-through attribution and engage-through attribution (March 2026) facebook.com
  5. Meta Marketing API: Ad Account Insights (action_report_time, attribution windows) developers.facebook.com
  6. Meta Business Help Center: Set up engage-through in Meta Ads Manager (compare attribution settings) facebook.com
Measurement

Meta Conversions API Setup: Deduplication, Hashing and EMQ Guide

Meta Conversions API (CAPI) sends conversion events from your server straight to Meta instead of relying on the visitor's browser. A correct setup runs the Pixel and CAPI together, sends the same event_name and event_id from both so Meta counts each conversion once, normalizes and SHA-256 hashes customer data such as email and phone, then verifies everything in Test Events and tracks Event Match Quality.

10 min read
Measurement

GA4 Ecommerce Tracking Setup (2026): Purchase Events and Key Events

GA4 ecommerce tracking means sending Google's recommended events (view_item, add_to_cart, begin_checkout, purchase) with an items array, giving every purchase a unique transaction_id plus value and currency, testing everything in DebugView, then confirming purchase is a key event (GA4 marks it by default) and importing it into Google Ads. Set up correctly, revenue fills the Monetization reports automatically.

10 min read
Measurement

Google Consent Mode v2: GDPR, UK Rules and Lost Conversions

Google Consent Mode v2 is a tagging API that passes a visitor's cookie choice to Google Ads, GA4 and other Google tags using four signals: ad_storage, analytics_storage, ad_user_data and ad_personalization. Google requires these signals for traffic from the EEA to keep using measurement and ad personalization. Consent Mode does not make you GDPR-compliant by itself; your banner and consent records still have to meet the law.

10 min read

From the Knowledge Center

See all your numbers in one place

Google, Meta and TikTok data side by side, with fresh recommendations every week.