Short answer: Meta Ads Manager and Google Analytics 4 measure different things. Meta counts everyone who clicked or saw your ad and then converted inside its attribution window, using its own logged-in data. GA4 counts sessions on your site and gives credit for a conversion to one or more channels using its own model. They will almost never match, and that is not a tracking failure. Your job is to explain the gap once, pick the right number for each question, and watch whether the gap changes.
Every agency gets this message sooner or later: "Meta says 140 purchases, Analytics says 62. Which one is lying?" Neither is. They are answering different questions. Below are the six reasons, then a short script you can reuse.
Reason 1: view-through conversions
With Meta's standard setting, a conversion is credited to an ad if someone clicked it within the last 7 days or saw it within the last day and then converted. (Meta offers other settings too, and they have changed over time, so check what each ad set uses.) That second part, the view-through, has no equivalent in GA4. If someone scrolled past your Reel at lunch, later searched your brand on Google and bought, Meta can count the purchase while GA4 gives it to organic or paid search.
This is the single biggest source of the gap for most ecommerce accounts. You can check it yourself: in Ads Manager, use Compare attribution settings to split results into click-through and view-through columns. The click-only number is usually much closer to what GA4 shows.
Reason 2: different credit rules
Meta only looks at Meta. It does not know that the same person also clicked a Google ad and opened your email. If all three touched the sale, each platform can claim it, so platform totals added together are often bigger than real sales.
GA4 sees all channels, but it shares out credit using its own attribution model (data-driven by default for key events in most properties). Each conversion is divided across channels rather than claimed in full by each one. Adding up "conversions by channel" in GA4 gives you something close to the true total. Adding up platform reports does not.
Reason 3: different dates
This one surprises people. Meta Ads Manager reports a conversion on the date of the ad impression or click that led to it, not the date of the purchase. GA4 reports it on the day it happened. So if someone clicks on 30 September and buys on 2 October, Meta puts the sale in September and GA4 puts it in October.
For a monthly report this moves a few conversions across the month boundary. For a weekly report on a product with a long decision time, it can move a lot. It also means Meta's numbers for the last few days keep rising after the period ends, because late conversions get added back to earlier dates.
Reason 4: people versus browsers
Meta identifies people through logged-in Facebook and Instagram accounts, so it can connect an ad seen on a phone to a purchase made on a laptop. GA4 relies mainly on first-party cookies and, if enabled, Google signals and user IDs. A cross-device journey often looks like two different users in GA4, and the conversion lands on whichever channel brought the second session (often "direct").
Reason 5: what never reaches GA4
Several things stop GA4 from seeing sessions at all:
- Consent. In regions where you need cookie consent, visitors who decline may only send cookieless signals. GA4 can model some of this, but not every property qualifies for modelling.
- Ad blockers and privacy browsers that block Google tags.
- In-app browsers. Clicks from the Facebook and Instagram apps open in an in-app browser, which can lose UTM parameters on redirects or start a fresh session when the person moves to their main browser.
- Missing or broken UTMs, which push Meta traffic into "referral" or "direct" instead of "paid social".
Meta, meanwhile, can still record the conversion through the Conversions API (server events), which is not affected by browser blocking in the same way.
Reason 6: modelled conversions
Since Apple's App Tracking Transparency changes, Meta fills some gaps with statistical modelling, and those modelled conversions appear in Ads Manager alongside observed ones. GA4 also models some data when consent mode is in place. Both are estimates, built differently, so they will not agree to the unit.
What size of gap is normal?
There is no universal number, and anyone who quotes one for your account is guessing. The gap depends on the product price, how long people take to decide, how much of the spend goes to video and Reels (more view-through), your consent rate and how clean your UTMs are. A better test is stability: work out the ratio between the two numbers for the last three months. If it suddenly moves a lot, something changed in tracking, and that is worth investigating.
| If you see | Check first |
|---|---|
| Meta suddenly far above GA4 | A new video-heavy campaign (more view-through), or GA4 tags missing on a new landing page |
| GA4 shows almost no paid social | UTMs on the ads, and whether redirects strip query parameters |
| Both drop together | The site's purchase event or checkout tracking, not the ads |
| Meta drops, GA4 and the store do not | Pixel or Conversions API health in Events Manager |
Which number goes in the client report?
Use each source for the question it answers best:
- "Is this Meta campaign working, and which ads should we scale?" Use Meta's numbers. They are what the algorithm optimises on, and they are consistent within the platform.
- "How many sales did the business actually make?" Use the store or CRM (Shopify orders, closed deals). That is the truth for revenue.
- "How do channels compare with each other?" Use GA4 or a blended view such as MER, because it shares credit instead of letting each platform claim the same sale.
Whatever you choose, label it. "Purchases (Meta, 7-day click, 1-day view)" removes most questions before they are asked.
A script you can send the client
"Meta and Google Analytics count sales in different ways. Meta includes people who saw an ad and bought within a day, and people who switched devices, and it records each sale on the day of the ad. Analytics only sees website visits it can track, and splits credit between channels. So Meta's number is always higher. We use Meta's number to decide which ads to scale, and your store's order count to judge total results. What we watch is whether the gap stays steady, and it has."
Send it once, put a one-line version in the footnote of every report, and the question rarely comes back.
How to make the gap smaller (but not zero)
- Put consistent UTMs on every ad (for example, utm_source=facebook, utm_medium=paid_social, utm_campaign={{campaign.name}}).
- Set up the Conversions API alongside the pixel, with deduplication, so Meta's own number is more reliable.
- Check that the GA4 purchase event fires once per order and carries the order value.
- Report Meta click-through conversions next to the default setting for clients who want a closer comparison.
- Compare against store orders monthly, not just against GA4.
Adsorra labels the attribution setting on every platform metric in its reports and keeps each platform's numbers separate from blended totals, so clients see the same honest breakdown every week. See how the reports work.
Frequently asked questions
Should Meta Ads and GA4 conversions match?
No. They use different attribution windows, different credit rules and different ways of identifying people, so some gap is normal. What matters is that the gap stays roughly stable over time.
Which number should I report to the client?
Use the ad platform number to judge and optimise the platform, and the store or CRM number (or GA4) for total business results. Say clearly which is which in the report.
Why does Meta show more conversions than GA4?
Meta counts view-through conversions and can match people across devices using logged-in accounts. GA4 credits the last relevant channel and cannot see that someone saw an ad without clicking it.