The short answer
Meta, Google Ads, GA4 and Shopify each count with different rules, on different dates, with different visibility, and none deduplicates against the others. So they will not match, and none of them is the truth. Take revenue from your store or CRM, overall efficiency from a blended ratio, ad comparisons from the ad platform, and site behaviour from analytics. Watch for sudden changes in a gap, not the gap itself.
DataCops is the tracking solution for ad-funded businesses: it keeps the click, filters junk visits, matches the sale and sends it back to Meta, Google Ads, TikTok and LinkedIn, so your ads learn from real outcomes and not just from what a browser managed to report.
How DataCops covers the attribution chain:
- It keeps the click. One script and one DNS record collect on your own domain. Click IDs (gclid, wbraid, gbraid, fbclid, ttclid, li_fat_id) stay on the server for up to 90 days, and a signed server-set cookie lasts up to 400 days where enabled.
- It checks the visit. Every visit gets a bot verdict against an IP database covering 360+ billion IPs, with a Real people only switch per ad platform (off by default), and form emails are checked.
- It matches the sale. By click ID, or by hashed email and phone, from Shopify orders, HighLevel, any CRM by webhook, or a CSV.
- It sends the sale back. To Meta, Google Ads, TikTok and LinkedIn, counted once against the pixel, with every send in a delivery log.
- It sends the stages that happen later. Booked, showed, won and paid, so the ad platform learns who becomes a customer.
- Ads Warmup. Upload past customers (only email is required, up to 20,000 rows), see a 0 to 10 match score, and send them to Meta, Google Ads and TikTok so a new campaign starts with real buyers.
Best for: stores and lead-gen businesses that want the ad platforms themselves to learn from real sales. It is not a reporting dashboard.
Why every report says something different
Open Ads Manager, GA4 and your store admin on the same morning and you will see three different purchase counts. That is not a bug. It is six differences stacked together.
- Credit rules. Meta credits an ad inside its window. Google uses its own. GA4 uses its own again. Shopify uses its own.
- Dates. Google Ads credits the date of the click, while GA4 and Shopify credit the date of the purchase. Time zones can push the same order onto different days.
- Visibility. Browser-based reports miss sales blocked by consent banners, ad blockers or a closed tab.
- No shared deduplication. Meta counts the sale, Google counts it too, and your email platform also counts it. Each credits itself.
- Lag. Reports keep changing for days. Same-day comparisons are unreliable.
- Orders that were never ad clicks. Admin, point of sale, draft and subscription renewal orders sit in your store total but cannot match an ad.
On top of that, Meta changed what counts as a click in March 2026, which narrowed its gap to GA4 without closing it. See Meta attribution in 2026.
Which number to use for which job
| Question | Use | Why |
|---|---|---|
| Total orders and revenue | Your store or CRM | It records the sale itself. Filter out unpaid and cancelled. |
| Overall efficiency | Marketing efficiency ratio (revenue divided by ad spend) | No platform credit rules involved. |
| Which ad, audience or creative is better | The ad platform | The same rules apply to every ad, so comparisons are fair even if totals run high. |
| What visitors do on the site | GA4 or first-party analytics | It sees sessions and paths, but undercounts purchases. |
| Which closed deal came from which ad | Your CRM, with the click ID stored | See which ad brought the closed deal. |
The mistake to avoid is asking one source to do another's job. A platform report is a good way to rank ads against each other and a poor way to say how much money you made.
Marketing efficiency ratio
MER is total revenue divided by total ad spend across every channel, over a fixed period. It is blunt, and that is its value. No platform can claim the same sale twice inside it, and no window or model changes it. If your ad platforms say you are doing well and MER is falling, believe MER. If MER is stable while one platform's number swings, the swing is probably reclassification, not performance.
Its limit is that it cannot tell you which channel earned the revenue. Use it to check the whole, and the platforms to rank the parts.
A weekly check in 20 minutes
- Pick a period that closed at least a week ago, in one time zone.
- Write down store revenue and orders for it.
- Write down total ad spend and compute MER.
- Write down purchases for the same period in Meta, Google Ads and GA4.
- Record each gap as a percentage against the store.
- Compare with last week's gaps. A stable gap is fine. A jump is not.
Ten weeks of this builds a baseline you can trust more than any single report, and it shows you the day a tag or a consent setting breaks.
A worked example
This is an example, not a customer. A store records 400 orders worth 40,000 in a week and spends 10,000 on ads, so MER is 4.0. Meta reports 300 purchases, Google Ads reports 90 and GA4 reports 240.
Added up, the platforms claim 390 orders of the 400, which sounds fine until you remember that some of those orders came from email, search and direct visits. The platforms are double claiming. Meta is 25% below the store, which is within what practitioners describe as common. Next week Meta reports 200 purchases with the same spend and the store is flat. The gap jumped from 25% to 50%. That is the signal to investigate, and the usual suspects are a broken pixel after a theme change, a consent banner change, or a missing event ID.
When the gap is a warning
- The gap changes suddenly with no change in spend.
- GA4 purchases fall sharply while the store is flat.
- Meta's count exceeds the store's total orders.
- One channel's number is higher than the store's for the same period.
The first two usually mean a tracking or consent problem. The last two usually mean duplicate counting. For stores, see Meta shows fewer purchases than Shopify.
What DataCops adds
DataCops sends each paid order to the ad platforms once, from the server, with the click ID and hashed contact details, and logs every send. That narrows the gap you can fix, which is the part caused by missing and duplicate signals. First-party analytics from the same script, a GA4 alternative, sees visits that blockers hide. Neither will make the platforms agree, because they never will. Read the complete attribution guide.
Tools you will meet
Each row says what the type does and where it stops. We checked the named tools' own pages in October 2026; vendors change features, so confirm before you choose.
| Type | What it does | Best for | Limit |
|---|---|---|---|
| The ad platform's own reporting | Credits sales by its own rules and window | Ranking ads against each other | Overstates across platforms; sees only what it was sent |
| GA4 or first-party analytics | Sessions and paths on your site | Behaviour and funnels | Browser-only tools miss blocked and non-consented events |
| Attribution dashboards, such as Hyros, Triple Whale, Northbeam and Cometly | Journeys and revenue by channel; several also send conversions back | Cross-channel budget decisions | Check what each sends, to which platforms, and whether bots are filtered |
| Call tracking, such as CallRail and WhatConverts | Ties a call to a source | Phone-led sales | The call is one stage, not the sale |
| DataCops | Keeps the click, filters junk, matches and sends sales and CRM stages, with a delivery log | Making the ad platforms learn from real outcomes | Not a reporting dashboard |
What else the same install does
The attribution chain is one part of a wider setup. Collection runs on your own domain with one script and one DNS record; with your DNS on Cloudflare, the free, optional DataCops Cloudflare Worker reads click IDs and UTMs at the edge before the page runs, and it captures without blocking. On Shopify, the DataCops Shopify app sends every paid order from Shopify's server. A first-party consent manager built on IAB TCF v2.2 and first-party analytics, a GA4 alternative, come from the same script. Each form email is checked for disposable providers and domains with no mail server, and LeadCops can enforce those rules on a form. Every send appears in a delivery log with the reason it was sent, held, skipped or failed.
Sources
- developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events
- ppc.land/meta-rewrites-click-attribution-rules-finally-aligning-with-google-analytics/
- weltpixel.com/blogs/news/meta-google-ads-and-ga4-show-three-different-purchase-counts-the-discrepancy-hub
- support.google.com/google-ads/answer/3123169
FAQ
Why does Meta show more sales than Google Analytics?
Meta credits an ad inside its window, including views and, since 2026, a separate engage-through category. GA4 counts sessions it could track and credits by its own rules, and misses events blocked by consent banners and browsers. Neither deduplicates against the other.
Which number should I trust for revenue?
Your store or CRM. It records what was actually sold. Filter out cancelled and unpaid orders so you compare like with like.
What gap between Meta and Shopify is normal?
Practitioner reports commonly put it somewhere around 20 to 50%, and one vendor suggests within 5% is healthy and 20% or more signals a tracking problem. These are not Meta benchmarks. Watch whether your own gap is stable.
What is MER?
Marketing efficiency ratio: total revenue divided by total ad spend, across all channels. It ignores each platform's credit rules, so it cannot be inflated by overlapping attribution.
Why is my GA4 purchase count lower than Shopify?
GA4 sees only what the browser could report, so consent choices, ad blockers and browser limits remove some purchases. Shopify records the order itself.
How long should I wait before comparing reports?
Use a period that has closed, at least a week back for a seven-day click window. Meta data can change for up to 72 hours, and credit can shift for days afterwards.
Can I make all the numbers match?
No, and trying wastes time. They use different rules. Aim for a stable, explained gap, and use one source of truth for revenue.