Skip to content

AnyTrack

Meta Ads Reports Fewer Purchases Than Shopify? How to Fix the Gap

Facebook Ads purchases don't match Shopify? A 5-minute check in Meta Events Manager tells you if the gap is attribution or broken tracking, and what to fix.
Published:
Last updated:
On this page

Shopify counts every order. Meta Ads Manager counts only the purchases it can attribute to your ads, under each ad set’s attribution setting. That part of the gap is expected, and it never closes to zero.

The part you can fix is the tracking gap: purchases that never reach Meta, reach it twice, or reach it without enough customer data to match.

Most people compare the wrong two numbers. The difference costs real money. Meta decides who sees your ads from the purchases it receives and can match to a person (Meta, About event match quality).

A missing purchase

Meta’s delivery can’t learn from a buyer it never sees. ROAS looks worse than it is, so you cut ad sets that work.

A doubled purchase

ROAS looks better than it is, and you scale spend that isn’t earning it.

The 5-minute check:

  1. Pull last week’s online store orders from Shopify.
  2. In Meta Events Manager, go to Data sources, select your dataset, and click View details on the Purchase event. It splits last week’s purchases into browser (Meta Pixel) and server (Conversions API) (Meta, View server event details).
  3. Take the larger of the two counts. Don’t add them: one order can show in both. Treat the result as a floor: an order sent by only one method can push the real total higher.

No View details? Meta shows it for server events, so your Purchase total counts browser events only. Use that total.

Then compare that count with Shopify’s orders:

  • About equal: purchases reach Meta

    A few orders apart at the week’s edges is normal. If browser and server both sit near your orders, read the Event Deduplication tab. Low overlap means Meta can’t match them (Meta, View server event details), so the same purchases can count twice.

    High overlap, or only one sender? Check the Purchase event’s Event Match Quality, Meta’s 0-to-10 rating of how well your customer data matches. The rest of the gap is attribution, explained below.

  • Lower than Shopify: a tracking gap

    Some purchases may never reach Meta. Read the Event Deduplication tab before you change anything. With low overlap, browser and server each carry orders the other misses, so Meta can hold more orders than the larger count shows. With high overlap, the gap is real. A server-side sender gets those purchases past ad blockers: Shopify’s Enhanced or Maximum data sharing, or a conversion tracking platform like AnyTrack.

    Already on Enhanced or Maximum? Start with checks 1, 2, 6, and 7 below.

  • Higher than Shopify: a double count

    Two tools send the same purchase. Find the second sender.

Meta purchases dropped since late August 2026? Upgraded Thank you pages don’t run Additional scripts, and stores that missed Shopify’s August 26, 2026 deadline were upgraded automatically (details below). A Purchase pixel pasted there stopped triggering.

  • Events Manager now equals Shopify: the drop removed a double count.
  • Events Manager is below Shopify: set up one server-side sender.

Disclosure: We build AnyTrack. It shows up as one view among several in the comparisons, and two sections near the end show how it closes the gap and how to prove it. The diagnosis works with tools you already have: Shopify, Meta, and Google Analytics 4.

Why Meta Ads Manager Shows Fewer Purchases Than Shopify

Shopify and Meta answer different questions:

Orders

“How many orders did we get?” Shopify records each order when it’s processed, so ad blockers and browser tracking prevention don’t touch its count (Shopify, App pixels).

Ads Manager

“How many purchases can Meta credit to people who saw or clicked our ads?” (Meta, event count differences)

So the gap has two parts:

The two parts of the gap between Shopify and Meta Ads Manager
Gap What it is Where you see it Can you close it?
Attribution gap Meta has the purchase but doesn't credit it to an ad Events Manager vs Ads Manager No, and it's not a fault
Tracking gap The purchase never reaches Meta, arrives twice, or arrives without enough customer data to match Orders vs Events Manager, plus Event Match Quality Yes

What each report should show for 100 orders

Follow one week of 100 Shopify orders through each report. With working tracking, the counts land here:

What Shopify, AnyTrack, Meta Events Manager, and Meta Ads Manager show for the same 100 orders, and where each difference comes from
Report What it counts Of 100 orders A difference comes from
Orders Every order placed in the store 100 Online store orders Baseline for every other report
Conversions Report Every Purchase from Shopify's order webhook 98 to 100 Parity with Shopify A cart app that strips AnyTrack's click ID. Support can recover the order
Events Manager Purchase event Every Purchase Meta received, attributed or not, by connection method 98 to 100 A floor: the larger of the browser and server counts Fewer: purchases that never reached Meta, or low browser and server overlap. More server purchases than orders: two server-side senders
Ads Manager Purchase results Purchases Meta credits to an ad, under each ad set's attribution setting A share, such as 20, 50, or 80 Near 100 only when almost every buyer came from a Meta ad Buyers who never saw a Meta ad, clicks outside the window, purchases Meta cannot match to a person
Campaign Report Purchases whose first or last ad click, on any platform, was a Meta ad Its own share of the 100 Read it next to Ads Manager, not as a match AnyTrack gives each order to one ad click on any platform. Meta credits its own clicks, views, and engagements, within its window

Sources: Meta, event count differences, Meta, View server event details, AnyTrack, Shopify Setup Checklist, AnyTrack, Campaign Report, AnyTrack, Attribution Explained.

The first three rows count the same orders, so they should agree within a few. In Events Manager, use the larger of the browser and server Purchase counts as a floor, never their sum.

Below Shopify, read the Event Deduplication tab. With high overlap, the gap is a tracking problem, with or without AnyTrack. Fix it first.

The last two rows count credit, under different rules. A shopper clicks a Meta ad, then a Google ad, then buys within seven days. Ads Manager counts the order. AnyTrack’s Last Ad Click gives it to Google. Your traffic mix decides how far the two drift apart.

Parity gets every purchase to Meta. The data on each purchase decides how many Meta can credit. Shopify’s order carries the email, phone, name, and address. Meta also asks for four parameters from the visit itself:

  • fbp, the browser ID

    The Meta Pixel stores it in the _fbp cookie.

  • fbc, the click ID

    Built from the fbclid that a Facebook or Instagram ad click adds to your URL.

  • The IP address

    Meta prefers IPv6 for visitors who have one.

  • The user agent

    Meta requires it on website events sent through the Conversions API.

Meta adds all four to browser events on its own. A server-side sender has to add them to each order. The IP address and user agent come with every visit. fbp and fbc exist only in the browser (Meta, fbp and fbc, Meta, Customer information parameters).

Meta recommends sending fbc with every event, but only a click from Facebook or Instagram creates one (Meta, fbp and fbc, AnyTrack, Shopify Setup Checklist).

What creates the attribution gap

Each ad set counts purchases inside its attribution setting (Meta, About attribution models and attribution settings):

Click-through
1 or 7 days
After a link click
View-through
1 day
After someone sees the ad
Engage-through
1 day
After a non-link click or a 5-second video play

A buyer who clicked 9 days ago is in Shopify and outside a 7-day click window. Three more things widen the gap:

  • Orders Meta never touched

    Email, Google, organic search, and returning customers who type your URL all buy in Shopify. Ads Manager can’t credit an ad nobody saw.

  • Stricter clicks since March 2026

    Click-through now counts link clicks only. Shares and saves moved to engage-through (Meta, March 3, 2026). Meta is rolling this out gradually, so some accounts still run the old rules.

  • Incremental attribution

    An ad set on Meta’s incremental model counts only the purchases that a machine learning model predicts the ad caused (Meta, About incremental attribution). Expect a lower number than standard attribution, and compare it only with other incremental results. Our Facebook Incremental Attribution guide explains how to read it.

What creates the tracking gap

Six causes lose purchases, or the data Meta needs to credit them. The seventh counts purchases twice.

  • Scripts that stopped running

    Upgraded Thank you and Order status pages don’t support Additional scripts, and stores that missed Shopify’s August 26, 2026 deadline were upgraded automatically (Shopify, Thank you page upgrade). A Purchase pixel pasted there no longer triggers.

  • A blocked browser pixel

    Shopify’s Standard data sharing level sends data through the Meta Pixel only, and a browser ad blocker can stop it (Shopify, Facebook data sharing). Meta says ad blockers can make its reporting show fewer conversions than your internal data (Meta, third-party reporting differences).

  • Consent

    In regions that require consent, Shopify’s web pixels don’t run until the visitor grants the permissions they need (Shopify, Pixels overview). A third-party cookie banner that doesn’t sync consent to Shopify can keep pixels off even after the visitor says yes (Shopify, App pixels).

  • A thank-you page that never loads

    The Meta Pixel’s Purchase triggers when the visitor views the thank-you page (Shopify, Facebook data sharing). Shopify’s checkout_completed event doesn’t trigger at all if that page fails to load (Shopify, checkout_completed). A buyer who pays offsite and never comes back leaves no browser purchase.

  • Late server events

    For Sales campaigns, Meta recommends sending events within 1 hour. Its maximum for web events used in Ads Manager attribution is 7 days (Meta, event delay times).

  • Thin customer data

    Meta credits a purchase to an ad only when it can match the purchase to the person who saw the ad. A purchase without an email, phone, or click ID counts in Events Manager and may never reach Ads Manager. That’s the one tracking problem hiding inside the attribution gap.

    Event Match Quality, scored from 0 to 10, rates how well your customer data matches Meta accounts (Meta, About event match quality). Our Event Match Quality guide covers the fixes.

  • Two senders

    Two tools send the same order without a shared event ID, and Meta counts it twice. More on that below.

Same Six Orders: The Counts Agree, the Credit Doesn’t

Here’s one week in a Shopify store that runs Meta and Google Ads. Six buyers, six orders, and every tool below works correctly.

A week grid of six orders. Order 1: a Meta ad click and a purchase on Monday. Order 2: a Meta ad click on Monday and a purchase on Thursday. Order 3: a Meta ad view on Tuesday and a purchase on Wednesday. Order 4: no ad, and a purchase on Thursday. Order 5: a Meta ad view on Friday, then a Google ad click and a purchase on Saturday. Order 6: a Meta ad click on Monday, a Google ad click on Tuesday, and a purchase on Wednesday.

What each tool reports for the week:

Orders
6
Placed in the store
Events Manager
6
Purchase events received
Ads Manager
5
Attributed to ads: orders 1, 2, 3, 5, and 6
Campaign Report
6
Tracked. Meta ads: 2 or 3, by Last or First Ad Click
Key events
6
Purchases. Meta gets orders 1 and 2, plus part of order 6
Conversions
2
Attributed to ads: orders 5 and 6

What the six orders teach:

  • Events Manager matched Shopify: 6 and 6

    This store has no tracking gap. That’s the first comparison to run on yours.

  • Ads Manager showed 5

    The missing order is number 4, from a buyer who never saw a Meta ad. Nothing was lost.

  • Meta credited 2 orders with no Meta click

    Orders 3 and 5 came from 1-day view. AnyTrack and GA4 credit clicks and sessions, so neither gives them to Meta: order 3 had no ad click, and order 5’s click came from Google.

  • Meta and Google Ads claimed 7 purchases. Ads touched 5 orders.

    Both platforms took orders 5 and 6, so adding their numbers counts those two orders twice. Blended ROAS, your store revenue divided by total ad spend, counts each order once.

  • AnyTrack's two models split on one order

    First Ad Click credits the Meta click that started order 6. Last Ad Click credits the Google click that closed it. Our First Click vs Last Click breakdown shows what that does to a real eCommerce account.

Split the gap into two numbers:

Received
100%
6 of 6 orders this week
Attributed
83%
5 of 6 orders this week
  • Received is the larger of Events Manager’s browser and server Purchase counts, divided by Shopify’s online store orders. It’s a floor, so check the Event Deduplication tab before you read a low number as lost orders.

    It shows whether tracking works, and it’s the number a setup can fix. Above 100% points to a second sender, or to subscription renewals sent as purchases.

  • Attributed is Ads Manager purchases divided by the same orders. It measures Meta’s credit, and credit overlaps: Google Ads claims 2 of the same 6 orders. Report each platform on its own, and never add them up.

How Shopify and Meta count each order

How Shopify, Meta Events Manager, and Meta Ads Manager count each of the six orders
Order Orders Placed Events Manager Received Ads Manager Attributed
Order 1 Clicks an ad Mon 10 am , then Buys Mon 11 am Mon Mon Mon 7-day click
Order 2 Clicks an ad Mon , then Types the URL, buys Thu Thu Thu Thu 7-day click
Order 3 Never clicks Sees an ad Tue 8 pm , then Types the URL, buys Wed 9 am Wed Wed Wed 1-day view
Order 4 Never sees an ad Types the URL, buys Thu Thu Thu No credit No Meta ad
Order 5 Sees an ad Fri 8 pm , then Clicks an ad Sat 9 am , then Buys Sat 10 am Sat Sat Sat 1-day view
Order 6 Clicks an ad Mon , then Clicks an ad Tue , then Buys Wed Wed Wed Wed 7-day click
Total 6 Orders 6 Purchases received 5 Purchases attributed

This table dates each Meta purchase on the day of the order, as Meta’s Marketing API docs describe for web purchases (Meta, Limits & Best Practices). A Help Center article on Commerce Manager says Ads Manager uses the ad’s impression date instead (Meta, How conversions are attributed in Commerce Manager). Either way, all five purchases stay inside this week.

How AnyTrack, GA4, and Google Ads count the same orders

How AnyTrack, Google Analytics 4, and Google Ads credit each of the six orders
Order Last Ad Click First Ad Click Data-driven Conversions column
Order 1 Meta ad click, then buys Mon Mon Mon No
Order 2 Meta ad click, returns by typing the URL Thu Thu Thu The direct return gets no credit No
Order 3 Meta ad view, then types the URL No ad click Tracked, Wed No ad click Tracked, Wed Direct Wed No
Order 4 No ad, types the URL No ad click Tracked, Thu No ad click Tracked, Thu Direct Thu No
Order 5 Meta ad view, then a Google ad click Sat Sat Sat Yes Sat
Order 6 Meta ad click, then a Google ad click Wed Wed Shared Wed Yes Tue (click date). Wed in the "by conv. time" columns
Total 6 tracked Meta 2, Google Ads 2, no ad click 2 6 tracked Meta 3, Google Ads 1, no ad click 2 6 key events Meta: orders 1 and 2, plus a share of order 6 2 Conversions

The example assumes one device per buyer, one server-side sender for Meta, ad sets on 7-day click and 1-day view, UTM parameters on every ad, online store orders only, no consent or ad-blocker losses, and GA4 on its default data-driven model.

Four journeys that change the totals

  • The click outside the window

    A buyer clicks a Meta ad and buys 9 days later. Events Manager has the purchase, and a 7-day click setting leaves it out of Ads Manager. AnyTrack’s default attribution window has no time limit, so AnyTrack still credits the click (AnyTrack, Attribution Explained).

  • Desktop click, iPhone purchase

    Meta measures people across devices and lists that as a reason its numbers differ from third-party tools (Meta, third-party reporting differences). A tool that sees only the iPhone session sees a direct visit.

  • Consent declined, or an ad blocker

    The browser pixel never triggers, so Events Manager drops below Shopify unless a server-side sender delivers the purchase. Server-side delivery gets past ad blockers. It doesn’t change your consent obligations: Shopify’s own server pixels still follow your store’s privacy and consent settings (Shopify, App pixels).

  • Two tools send the same purchase

    Events Manager shows more purchases than Shopify has orders, and Ads Manager can count one order twice. Find the second sender.

Sources for both tables, all read on October 4, 2026

Facebook Ads Purchases Don’t Match Shopify? Run This 9-Step Checklist

Run the checks in order. The first five take minutes and change nothing in your setup. The last four go deeper.

Meta vs Shopify purchase gap: 9 checks

Tick each check as you go. Copy the list into your team's doc or ticket.

  1. Shopify’s time zone lives in Settings > General > Store defaults. Your Meta ad account, GA4 property, and any tracking tool each have their own. Shopify and Meta both list mismatched time zones as a cause of reporting differences (Shopify, Analytics discrepancies, Meta, Troubleshoot reporting differences). Compare a finished week, never today.

  2. Shopify’s sales reports include pending, unpaid, and canceled orders. Test orders aren’t included (Shopify, Sales reports). Use Total sales by sales channel and keep only your online store, because that’s the checkout your Meta purchase events come from. Count orders, not units.

  3. In Ads Manager, open Columns: Performance > Compare attribution settings to split results into 1-day view, 1-day click, 7-day click, and 28-day click (Meta, Compare attribution settings). The 1-day view column shows the purchases that followed an ad view with no click.

  4. Each tool dates a purchase its own way. Weekly totals absorb most date shifts.

    • Order date

      The day the order is placed.

    • Event date

      The day the key event happens.

    • Click date or conversion date

      The ad click date in the Conversions column. The conversion date in the “(by conv. time)” columns, which Google recommends for comparisons with Shopify or Google Analytics (Google Ads, Understand your conversion tracking data).

    • No single rule

      Its docs disagree with each other. See the note under the first table.

  5. A week you pull today can grow tomorrow:

    Insights refresh
    15 min
    Until the numbers stop changing
    28 days
    Last click
    3 h
    Other models
    15 h

    Sources: Meta, Limits & Best Practices and Google Ads, About data freshness. Google’s figures are maximums. Our Ad Platforms Attribution page lists the delay for each platform.

  6. Select your dataset, find the Purchase event, and open View details: Event Overview, Event Coverage, Event Quality, Event Deduplication, and Data Freshness (Meta, View server event details). Compare Shopify with the Purchase count from each connection method: browser (Meta Pixel) and server (Conversions API). Then check Diagnostics for red (critical) and yellow (warning) issues (Meta, About diagnostics).

  7. Settings > Customer privacy > Cookie banner > Regions and content shows where Shopify asks for consent (Shopify, Customer privacy settings). If you use a third-party banner app, confirm it syncs consent to Shopify. If it doesn’t, pixels can stay off after the visitor agrees.

  8. One tool should send each purchase to Meta. The 7 places to look are below.

  9. Meta lists currency and decimals among the causes of reporting differences (Meta, Troubleshoot reporting differences). Convert every tool to the same currency before you compare.

    Shopify records returns and cancellations as negative sales on the day it processes them (Shopify, Sales reports), while ad platforms keep the purchase events they received. Compare sales before returns and cancellations. AnyTrack doesn’t send refunds to ad platforms either: see Commission Reversals & Refunds.

Where to Look in Each Tool

Each tool answers a different question. For each one: where to click, what the number means, and the trap.

Orders

  • Where

    Analytics > Reports > Total sales by sales channel. Its columns include Sales channel and Orders (Shopify, Sales reports).

  • What it means

    Orders placed on each date, from every source. This is your ground truth for how many orders exist.

The trap: Shopify’s own attribution on the Growth page uses Last non-direct click by default (Shopify, Measuring marketing performance). That’s another model again. Its Facebook orders won’t match Ads Manager, and they aren’t meant to.

Events Manager

Compare Shopify with the larger of the browser and server counts, then read the Event Deduplication tab. The larger count is the least Meta received.

Ads Manager

  • Where

    Your purchase results at campaign, ad set, and ad level. Columns: Performance > Compare attribution settings splits them by window.

  • What it means

    Purchases Meta credited to people who saw or clicked your ads, deduplicated, under each ad set’s setting (Meta, event count differences). Where data is missing or partial, Meta models conversions (Meta, About modeled conversions).

The trap: the 1-day view column. Those purchases had no click, so no click-based tool will ever show them.

Conversions and Campaign Reports

  • Where: every order

    The Conversions Report lists every tracked purchase. Filter Event Name to Purchase and Integration to Shopify, then export a CSV (AnyTrack, Conversions Report). Each row carries the purchase’s value, source, medium, and campaign. Its transactionId column holds the Shopify order ID, the same number as the Id column in Shopify’s own order export, so you can match orders one by one (Shopify, Exporting orders).

  • Where: every campaign

    The Campaign Report puts Meta’s own Attributed Results and Attributed Revenue, synced from Facebook Ads, next to AnyTrack’s Purchase count, spend, ROAS, and cost per purchase for each campaign (AnyTrack, Campaign Report). Its Attribution dropdown switches between First Ad Click and Last Ad Click.

  • What it means

    Meta’s count and a click-based count of the same orders, side by side. Where Meta is higher, view-through, engage-through, cross-device, and modeled credit explain the difference.

The trap: campaign columns need the UTM template on your ads, or visits show under “(not set)” (AnyTrack, Campaign Report, Facebook UTM Parameters). AnyTrack aligns Google Ads figures to conversion time, so compare them with Google’s “(by conv. time)” columns.

Key events

The trap: GA4 can’t see a Meta ad nobody clicked. Google says even its own view-through conversions aren’t supported in Google Analytics (Google Ads, About attribution reports).

Meta clicks land in Paid Social only when your UTMs carry a paid medium, such as utm_medium=paid (Google, Default channel group). Untagged Meta clicks can fall into Organic Social, or Direct when the referrer is missing. Our GA4 integration guide covers the setup.

Triangulate with the 2-of-3 rule

Shopify, GA4, and a click-based conversion tracking platform such as AnyTrack each count your orders and credit them to sources on their own. Meta is a fourth view, with its own rules. Read them together:

  • Attribution: two of the three agree, and Ads Manager differs

    Meta credits views, engagements, and devices the others can’t see. Rule out thin customer data with the Purchase event’s Event Match Quality. After that, there’s nothing to fix. Compare attribution settings shows how much of Meta’s count rests on views.

  • Delivery: Shopify or your tracking tool has an order, and Events Manager doesn't

    The purchase never reached Meta. Fix the sender.

  • Double count: Events Manager has more purchases than Shopify has orders

    Something sends twice. Read the next section.

No conversion tracking platform? Shopify and GA4 still give you two views. Meta’s 7-day click column is the closest Meta number to theirs, because it leaves out views.

How to Spot More Than One Tool Sending Purchases to Meta

Double senders hide well, because the symptom looks like good news: more purchases and a better ROAS.

Here’s how it happens. You turn on Shopify’s Facebook & Instagram channel. Months later, someone installs a pixel app for a new campaign, or a developer pastes the pixel into your theme. Now two tools send Purchase to the same dataset.

Watch for three symptoms:

  • Events Manager shows more Purchase events than Shopify has orders.

  • Ads Manager purchases jumped the week you installed an app, while Shopify orders didn’t move.

  • Meta Ads Data Advisor (formerly Meta Pixel Helper) shows two pixel IDs, or two Purchase events on one thank-you page.

Where to look: 7 places

Second sender check: 7 places

Taking over a client's store? Run all seven before you change a bid.

  1. Sales channels > Facebook & Instagram > Settings > Data sharing settings. Standard sends through the Meta Pixel only. Enhanced and Maximum also send through the Conversions API (Shopify, Facebook data sharing).

  2. Settings > Customer events lists the apps that send pixel data. Only apps built on Shopify’s Web Pixels API appear there (Shopify, App pixels).

  3. Settings > Customer events > Custom pixels. Shopify tells you to remove or change existing pixels before you add one, so events aren’t counted twice. Disconnecting a pixel doesn’t delete it (Shopify, Manage your custom pixels).

  4. A hard-coded Meta Pixel sits in theme.liquid, between the head tags. Shopify asks you to remove it once the pixel runs through the channel (Shopify, Meta pixel).

  5. Check your web and server containers for a Meta Pixel tag or a Conversions API tag.

  6. This free Chrome extension’s icon shows how many pixel events triggered on a page (Meta, About Meta Ads Data Advisor). Turn off your ad blocker, place a test order, and look for two pixel IDs or two Purchase events.

  7. The Purchase event’s details split events by connection method: browser for the Meta Pixel, server for the Conversions API (Meta, View server event details). More server purchases than orders means two server-side senders.

Why Meta can’t clean it up for you

Meta deduplicates two events only when all three of these hold (Meta, Handling Duplicate Pixel and Conversions API Events):

  • The same event name

  • An identical event ID

  • Within 48 hours of the first event

Unless two tools build the event ID the same way, Meta sees two purchases. Its fallback, matching on fbp or external_id, works only when a browser event arrives first (Meta, About deduplication).

Deduplication exists for one system that sends one purchase two ways, browser and server.

The fix: one sender per event

Pick one tool to send each purchase to Meta, and turn the others off. Shopify’s Enhanced or Maximum data sharing can be that tool. So can a conversion tracking platform such as AnyTrack.

If Events Manager flags deduplication issues, our Facebook Ads troubleshooting guide walks through each warning.

Switching senders takes three moves:

  1. Keep the old sender until the new one delivers

    Place a test order and confirm it reaches Meta from the new sender (AnyTrack, Shopify Integration).

  2. Turn the old one off the same day

    AnyTrack and Shopify, for example, use different event IDs, so every order placed while both run can count twice (AnyTrack, Facebook Conversion API). If the old sender is Shopify’s channel, disable its data sharing, and keep the catalog settings on if you run catalog ads (AnyTrack, Shopify Setup Checklist).

  3. Keep the dataset and the event

    Same dataset, same Purchase event: only the sender changes, and your ad sets keep optimizing toward the same event.

With AnyTrack, purchases arrive as server events. Once AnyTrack’s Conversion API is on, conversions reach Meta through the Conversion API only, and the Facebook Pixel triggers PageView only (AnyTrack, Facebook Conversion API).

Your funnel events still arrive, from ViewContent to Purchase, as server events (AnyTrack, Shopify Integration). There’s no browser and server pair to deduplicate in the first place.

It also makes a leftover sender easy to spot: a browser Purchase in Events Manager means another tool still sends it.

Expect Meta’s purchase count to move the week you switch. Fewer purchases means a double count left. More means the old sender missed orders. Your Shopify orders tell you which.

If you bid toward a target cost per purchase or a target ROAS, review it once the new count settles: you set that target on the old count.

Close the Gap With AnyTrack

Meta is your only ad platform? Start with Shopify. Shopify’s Enhanced and Maximum data sharing already send purchases to Meta from the server (Shopify, Facebook data sharing).

Once you run Meta and Google Ads together, go back to the six orders. The two platforms claimed 7 purchases for the 5 orders an ad touched. AnyTrack credits each order to one ad click or to none, so its count adds up to 6. On Last Ad Click: Meta 2, Google Ads 2, no ad click 2.

Side by side, the two counts give Meta a range:

Campaign Report's count
2 or 3
Meta ad clicks, by Last or First Ad Click
Ads Manager's count
5
7-day click and 1-day view

Orders 3 and 5 followed a Meta ad view, and no click-based count can see a view. Order 6 had a click on both platforms, so its credit depends on the model.

Cut Meta on its click count alone

You ignore orders like 3 and 5.

Scale Meta on its own count alone

You credit Meta with orders Google Ads also claims, like 5 and 6.

The Campaign Report shows both ends of the range, Meta’s Attributed Results and AnyTrack’s count, next to spend for each campaign.

What AnyTrack adds:

  • One sender for every ad platform

    One setup sends your Shopify purchases through AnyTrack’s Conversion API to Meta, Google Ads, and every other ad platform you connect.

  • Purchases Meta can match

    Every server-side sender calls the same Conversions API. The difference is the data in each call. The Tracking Tag collects the browser data on your store: the fbclid that becomes fbc, the _fbp browser ID, the IP address, and the user agent.

    AnyTrack merges it with the order’s customer data from Shopify, hashes the email, phone, name, and address, adds an external ID, and sends each order once (AnyTrack, Facebook EMQ Parameters, Facebook Conversion API).

  • Every order accounted for

    The Conversions Report lists each purchase and the campaign behind it, and its export carries each Shopify order ID.

Setup takes four steps. It’s copy and paste, with no developer needed (AnyTrack, eCommerce Integrations), and our Shopify Integration guide walks through each one. You need access to your theme code, your Shopify admin settings, and each ad account.

  1. Paste the Tracking Tag into your theme's head

    The Tag records each visit’s UTM parameters and click IDs, and adds AnyTrack’s click ID to the cart as a hidden property. The order carries it back, so AnyTrack matches each order to its visit. A theme switch or reinstall removes the Tag, so paste it again after one (AnyTrack, Shopify Advanced).

  2. Add the Shopify integration in AnyTrack

    AnyTrack gives you one webhook URL.

  3. Paste that URL into five Shopify webhooks

    Under Settings > Notifications > Webhooks: cart creation and update, checkout creation and update, and order creation. Pick the latest stable API version, not “unstable”. Order creation becomes your Purchase. Shopify sends it server to server, so an ad blocker or a thank-you page that never loads can’t stop it. An ad blocker can still reduce click tracking in the browser (AnyTrack, eCommerce Integrations).

  4. Connect Facebook Ads and Google Ads, and add AnyTrack's UTM template to your ads

    AnyTrack then sends each purchase through the Conversion API, and the Campaign Report matches each visit to its campaign.

What it costs

The Free plan sends no conversions to ad platforms. It covers 5,000 sessions a month, the Tracking Tag, one conversion source, and campaign data from one ad platform.

Sending conversions takes a paid plan, and each store needs its own property (AnyTrack, eCommerce Integrations).

AnyTrack paid plans for Shopify stores
Plan Per month Stores Sessions a month All stores
Starter $100 1 100,000
Personal $150 3 500,000
Advance $300 10 Plus $30 a month for each extra store 3,000,000

Starter, Personal, and Advance each start with a 14-day free trial, long enough for the 7-day test below (AnyTrack, Compare Plans and Features).

Go further:

Start tracking free No credit card required

Prove the Gap Is Closed: The 7-Day Test

Don’t trust a setup you haven’t tested. Check it upstream to downstream, in the order the data flows (AnyTrack, Verify Your Setup):

Setup test: 4 checks

From your store to Meta, in the order the data flows.

  1. The AnyTrack Pixel Helper icon turns blue on your store, and PageView events show in the Conversions Report as you browse.

  2. Place a test order. It appears in Integrations > Shopify > Events Log, then in the Conversions Report (AnyTrack, Integration Event Log).

  3. Copy the code from Meta’s Test Events tab. In AnyTrack, open Tracking Pixels > your Facebook Pixel, and paste it into Test Event Code in the Facebook Conversion API section.

    AnyTrack’s Server events test mode lists the events leaving your account, and Meta’s Test Events tab lists the ones that arrive with the code. The tab is a validation view, not proof of delivery: a Purchase sent without the code arrives as a live event, so if your test purchase isn’t in the tab, look for it in Events Manager’s Overview.

    After the test, every purchase reaches Meta unless AnyTrack loses access to your Meta account, for example after a Facebook password change.

    AnyTrack emails you if it does: open Tracking Pixels and click Reconnect on your Facebook Pixel (AnyTrack, Facebook Ads troubleshooting).

  4. The Campaign Report shows your campaigns with spend, and the Conversions Report shows your test order with its source.

Then reconcile two weeks, one row per day. Use the same time zone in every tool.

Last full week

Before

Fill it from Shopify, Events Manager, and Ads Manager, with the week before the switch.

7 days

After

Run 7 days on the new setup, and fill every column.

The four columns of the 7-day test and what a closed gap looks like
Column Where to get it What a closed gap looks like
Orders Total sales by sales channel, online store only Your baseline
Conversions Report Event Name: Purchase, Integration: Shopify The same orders, matched by Shopify order ID
Events Manager Purchase event, larger of the browser and server counts (a floor) Equal to AnyTrack's purchases, give or take orders near midnight
Ads Manager Your purchase results, same date range Lower than Events Manager. The difference is attribution

No AnyTrack? Leave its column empty and compare Shopify with Events Manager directly.

Sell subscriptions? AnyTrack counts Shopify subscription renewals as purchases by default and sends them to Meta, so make sure your Shopify column includes renewal orders.

To track renewals as Upsell or Subscribe instead, rename Subscription Renewal in the Shopify Integration Events section of your Shopify integration page. From then on, leave renewal orders out of your Shopify column.

7-day test template

A spreadsheet with one row per day for the before and after weeks, the four columns above, and a Notes column. It opens in Google Sheets, Excel, or Numbers.

Download the template (CSV)

Your tracking gap is closed when all five hold for the after week:

  • Every Shopify order shows in AnyTrack. Chase any missing one in the Events Log. One missing order while the rest track usually means an app changed that cart and removed AnyTrack’s click ID: cart drawers, quick-buy buttons, and bundle or subscription apps are common causes.

    AnyTrack support can recover the order (AnyTrack, Shopify Setup Checklist).

  • Events Manager’s Purchase count matches AnyTrack’s, day by day, give or take orders near midnight.

  • Events Manager shows no browser Purchase events. AnyTrack’s purchases arrive as server events, so a browser one means another sender is still on.

  • Events Manager never shows more purchases than Shopify has orders.

  • Purchase Event Match Quality holds or rises against the before week. Don’t chase a target score.

What’s left between Events Manager and Ads Manager is attribution, and Compare attribution settings shows where it lands.

Recheck the same week a few days later. Meta’s numbers can keep moving for up to 28 days.

Reporting the result to a client or a founder? Show the before and after weeks as the two numbers from earlier, Received and Attributed, and they see where every order went. For a full audit of every tag and integration, use The Complete Tracking Verification Checklist.

Every week Meta runs on missing or doubled purchases is a week its delivery learns from the wrong buyers, and a week of budget decisions made on the wrong ROAS. The 5-minute check at the top costs nothing. Run it today.

Meta vs Shopify Purchase Gap FAQ

Short answers for store owners, media buyers, and agencies

Why does Facebook show fewer purchases than Shopify?

Shopify counts every order. Facebook Ads Manager counts only the purchases Meta can credit to people who saw or clicked your ads, inside each ad set's attribution setting. The rest of the gap comes from purchases that never reach Meta: a blocked pixel, declined consent, a thank-you page that never loads, or customer data too thin to match. Compare Shopify with Meta Events Manager first to see which part you have.

What's a normal gap between Meta and Shopify?

There's no fixed number, and any percentage you read online comes from someone else's traffic mix. Your attribution gap depends on how many orders come from email, Google, organic search, and returning customers who never see a Meta ad. Measure your own baseline with the 7-day test, then watch for changes. A drop in Events Manager purchases while Shopify orders hold steady is a tracking problem.

Why is my Facebook pixel not tracking all purchases on Shopify?

A browser pixel triggers only when the visitor's browser loads the thank-you page, lets the pixel run, and has consent where your banner asks for it. Ad blockers, declined consent, and buyers who pay offsite and never come back all break that chain. Pixels pasted into Shopify's Additional scripts also stopped triggering once your Thank you page was upgraded. A server-side sender, through Shopify's Enhanced or Maximum data sharing or a conversion tracking platform like AnyTrack, sends the purchase from the server, where ad blockers can't stop it. AnyTrack takes each purchase from Shopify's server, so it doesn't need the thank-you page either. Consent rules still apply.

Why does Events Manager show more purchases than Shopify?

Two tools probably send the same purchase, each with its own event ID, so Meta can't deduplicate them. Or the Meta Pixel and the Conversions API both send it, and you're reading Events Received, which adds both counts before deduplication. Check the Event Deduplication tab, then look for every sender in the 7 places listed in this guide.

Should I use Shopify's Maximum data sharing or a separate tracking tool?

Either one can be your single sender for Meta. Never run both on the same Purchase event. Shopify's Enhanced and Maximum levels send purchases through the Meta Pixel and the Conversions API. AnyTrack also sends the same orders to Google Ads and other ad platforms, and shows its own click-based attribution next to Meta's numbers in one Campaign Report.

How do I track purchases from Facebook Ads?

Put a UTM template on every ad, so each visit carries its campaign, ad set, and ad. Send each Purchase to Meta from one server-side sender, through Shopify's data sharing or a conversion tracking platform like AnyTrack. Place a test order and confirm it reaches Meta in Events Manager. Then read results in Ads Manager with Compare attribution settings, and check them against Shopify and GA4.

Does AnyTrack count view-through conversions?

No. AnyTrack's attribution is click-based: First Ad Click or Last Ad Click. AnyTrack still sends every purchase with first-party data through the Conversion API, so Meta can measure view-through on its side. Those results show in the Attributed Results column of AnyTrack's Campaign Report, next to AnyTrack's own click-based count.

Laurent Malka
Laurent Malka Co-Founder

Laurent Malka is the Co-Founder of Anytrack. He was born and raised in Switzerland, and now lives and works in Israel. He is a serial entrepreneur with over 15 years of experience in marketing and business development. Laurent has been a panelist and speaker at numerous digital marketing events including SEMrush and IG Affiliates. He prides himself on his ability to connect the dots across disciplines, industries, and technologies to solve unique challenges.

Send Meta the Conversions Its Pixel Misses

AnyTrack sends each conversion once, through the Conversion API. Hashed email, phone, and the click ID let Meta match it to the person who clicked your ad.

No credit card required
Laurent Malka Laurent Malka

Event Match Quality Explained

Stop obsessing over EMQ scores. Learn what Event Match Quality really means, why high scores don’t guarantee good attribution, and how to fix tracking issues.
Read more