For agencies that grow D2C brands

How do you reconcile GA4, Meta and Google Ads numbers?

To reconcile GA4, Meta and Google Ads, line up the same dates, the same conversion event and each platform's attribution setting, then explain the gap. Meta counts views and a 7-day click window, Google Ads dates conversions to the click, and GA4 shares credit across channels. A steady gap is normal; a sudden one is a tracking problem.

2.13× Meta ROAS on ₹28,064 spend, as Meta reports it · Moolwan · shown next to GA4, never mergedai-dm · Paid ads · 30 days to 26 Sep 2026 · real data

What you'll see in 10 minutes

  1. Your first brand's report, built from its domain alone.
  2. Its Meta, Google Ads and GA4 accounts connected, one secure sign-in each.
  3. Each platform's own number side by side for the same dates, with how it was counted and the record behind it.

(login required) · No plan to pick. Billed in USD and INR. Nothing changes without your approval.

Why do GA4, Meta and Google Ads never show the same number?

Thursday review. Meta says 142 purchases last week, Google Ads says 61 and GA4 says 118, while the brand's store recorded 131 orders. The founder adds Meta and Google Ads together, gets 203, and asks which number the agency made up.

Every unexplained gap costs trust. Time spent defending a number is time not spent on the next move, and a brand that suspects the agency picks the flattering figure stops believing any of them. The gap has causes you can name. These are the main ones.

How Meta, Google Ads and GA4 each count conversions
DifferenceMetaGoogle AdsGA4
What it countsPurchases after a click on, or a view of, the brand's adsConversions after an ad clickPurchase key events on the site, from every channel
Default window7 days after a click, 1 day after a view30 days after a click, set per conversion actionShares credit using its own attribution model
Day it's counted onSet in the report's attribution settingsThe day of the ad click, in the main conversions columnThe day of the purchase
Why it reads higher or lowerHigher: counts views and sales other channels also helpedLower this week, higher later, as late conversions arriveLower: consent banners, ad blockers and in-app browsers hide some visits

Google Ads credits conversions to the day of the click in its main conversions column, and offers a separate column by conversion time (Google Ads Help, understand your conversion tracking data).

How do you reconcile the three numbers, step by step?

Make them comparable, then explain what's left. Most of the gap disappears once the dates, the event and the windows match. Work through these six steps and the brand gets an explanation it can check, not a number it has to take on trust.

  1. Match the dates and time zones

    Use the same date range in all three, and check each account's time zone. An ad account on a US time zone and a GA4 property on Indian time will never line up day by day.

  2. Match the event

    Compare the same action everywhere: purchases with purchases, not add-to-carts or leads counted as conversions. Check which actions are primary in Google Ads and which events are key events in GA4.

  3. Write down each attribution setting

    Note Meta's attribution setting, the Google Ads conversion window and GA4's attribution model before you compare. Different windows give different counts from the same sales.

  4. Split clicks from views

    In Meta, break results down by click and by view. Purchases credited after a view are real to Meta but invisible to GA4.

  5. Anchor on the brand's own orders

    Use the store's order count for the same dates as the reference. GA4 usually sits below it, and Meta and Google Ads added together usually sit above it, because both can claim the same sale.

  6. Track the gap, not the number

    Record each platform's count as a share of orders, week by week. A steady gap is how the platforms count; a gap that suddenly widens is a tracking problem to fix.

When a gap widens suddenly, treat it as a change to explain and find why the brand's numbers moved. When the brand asks where a figure came from, trace every number to its source record.

Is the gap between a brand's numbers normal this week?

Check it before the review. Enter the brand's own order count and each platform's figure for this period and the one before. The worksheet shows each platform as a share of orders, flags a gap that moved more than you allow and writes the explanation for the brand.

Explain the gap between a brand's numbers

Use the same dates and the same event, such as purchases, in every row.

  • Store ordersthe brand's own count
    referencethe brand's own count
  • Meta Adspurchases
    steady gap108% of orders · was 101% · +8 pts
  • Google Adsconversions
    steady gap47% of orders · was 46% · +0 pts
  • GA4purchase key events
    gap widened · check tracking73% of orders · was 90% · −16 pts
155%of orders claimed by Meta and Google Ads together
1gap moved past your limit
131orders this week, the reference

note for the brandThis week the store recorded 131 orders. Meta reports 142 purchases (108% of orders), Google Ads 61 conversions (47%) and GA4 96 purchases (73%). Meta and Google Ads together claim 155% of orders because both can count the same sale, so we never add them up. The Meta and Google Ads gaps are in line with last week. GA4's share fell from 90% to 73% of orders, so we're checking GA4 tracking before we report site numbers.

Free, no login. The starting figures are an illustrative example.

Reconcile a brand's numbers

(login required) · ai-dm tracks these gaps every day, for every brand you manage.

How does ai-dm reconcile GA4, Meta and Google Ads for every brand?

Side by side, with the record behind each number. Once a brand's Meta, Google Ads and GA4 accounts are connected, ai-dm shows each platform's own figure for the same dates, with its attribution setting and the raw record it came from. ai-dm reads no order or revenue data from Shopify, so it uses GA4 as the common reference, tracks each ad platform's ratio to it every day and flags a ratio that leaves its normal range.

Dewleaf Skincare · last 7 daysreference GA4 · 118 purchases
Meta Ads · 142 purchases · 7-day click, 1-day viewchecking…steady gap1.20× GA4 · within its 8-week range of 1.12–1.26×
Meta purchases credited after a viewchecking…explained38 of 142 · breakdown by click and view · not visible to GA4
Google Ads · 61 conversions · dated to the clickchecking…steady gap0.52× GA4 · within its 8-week range of 0.48–0.57×
Google Ads conversions still arrivingchecking…explainedby conversion time 70 · by click date 61 · late conversions from earlier clicks
Meta ad account time zone differs from GA4checking…setting to fix · mediumMeta account America/Los_Angeles · GA4 Asia/Kolkata · daily totals shift by 12.5 hours
GA4 · 118 purchase key eventschecking…referenceGA4 property · purchase key events · same 7 days

2 gaps steady · 2 differences explained · 1 setting to fix · every number linked to its record

Illustrative example

In this illustrative example, Dewleaf Skincare's Meta Ads reports 142 purchases, 1.20 times GA4's 118 and within its normal range, with 38 credited after a view. Google Ads reports 61 conversions dated to the click, also within range, with 9 more arriving from earlier clicks. The one thing to fix is a Meta ad account set to a different time zone from GA4.

The explanation goes to the brand with the numbers. Each figure keeps its source and counting method all the way into the report, so a brand can check it for itself, and you can send white-label reports that show it under your agency's name. Nothing changes in a brand's accounts without your team's approval, and you can check how brand data is protected.

On our own brand. Moolwan's Meta ROAS of 2.13× on ₹28,064 of spend in the 30 days to 26 September 2026 (ai-dm · Paid ads) is Meta's own figure, shown as Meta counts it. ai-dm puts it next to what GA4 records for the same dates and never adjusts one to match the other. You can inspect Moolwan's real numbers, with the source and date of each.

We don't build attribution models. ai-dm never merges these platforms into one "true" number or claims one channel caused a sale. It shows each platform's own figure with its source, and explains the gap.

(login required) · Rather talk first? WhatsApp the founder

Questions agencies ask about reconciling platform numbers

Why do GA4 and Meta report different numbers for the same brand?

Because they count differently. Meta's default setting credits a purchase up to 7 days after a click or 1 day after a view, while GA4 counts purchases on the site and shares credit across channels with its own model. Consent banners, ad blockers and in-app browsers also stop some visits reaching GA4. Both numbers can be right at once.

Why does Google Ads show different conversions from GA4?

Google Ads dates each conversion to the day of the ad click in its main conversions column, while GA4 records the purchase on the day it happened. They also use different attribution windows and models, and GA4 can miss visits that consent settings block. Compare the same dates, the same event and a full week rather than single days.

Which number should we report to the brand?

Report each platform's figure with how it was counted, next to the brand's own order count, and explain the gap. Don't add Meta and Google Ads together, because both can claim the same sale. For trends, use the same source every week so the line means something.

How big a gap between platforms is normal?

There's no universal figure. It depends on the brand's attribution windows, consent rates and channel mix. What matters is that each gap stays steady from week to week. The worksheet on this page flags any platform whose share of orders moves by more than a threshold you set.

Can ai-dm merge GA4, Meta and Google Ads into one number?

No, and it won't. ai-dm shows each platform's own figure with its source and counting method side by side, tracks the gap between them over time and flags a gap that suddenly widens. Merging them would hide exactly the differences your team needs to explain.

Does ai-dm read the brand's Shopify orders?

No. ai-dm reads no order, revenue or customer data from Shopify. It uses GA4 as the common reference and tracks each ad platform's ratio to it, and your team can compare those figures with the brand's own order count.

What does reconciliation in ai-dm cost?

There's no plan to pick. Sign up, pay as you go, and connect a brand's Meta, Google Ads and GA4 accounts with one secure sign-in each. Billed in USD and INR. Per-brand plans or pay as you go. A brand's data is deletable on request.

Reconcile a brand's numbers

No plan to pick. Billed in USD and INR. A brand's data is deletable on request.

Win the why.™

Every number that moves has a reason. Dashboards show what happened; they rarely show why. Without the why, teams guess, act late and lose trust. ai-dm exists to win the why for every brand, every day: to find the reason behind every change, prove it with evidence, recommend the next move and check that it worked. Then it starts again, because the why keeps changing. When you win the why, you stop guessing and start growing. That is why we exist.

Gather. Analyse. Detect. Alert. Recommend. You act. Monitor. Learn and repeat. Always on.

Explain the gap before the brand asks about it.

Talk to the founder