Skip to main content
GA4 reconciliationReference

GA4 source-of-truth reconciliation

GA4 is not a source of truth and was never meant to be — it's a measurement system with its own attribution, its own modelling and its own sampling behaviour. Reconciling it means comparing it against the system that actually holds the records, per record, over a fully closed window. Some of the gap is expected and should be named rather than fixed; the rest is a fault. Keeping those two categories separate is the entire discipline.

Free30 minutesNo obligation

GA4 reconciliation · what breaks

Where teams get this wrong — GA4 reconciliation

  1. 01

    Treating GA4 as the source of truth

    It's a claim about your business, not the record of it.

  2. 02

    Expecting a zero gap

    Consent denial, blockers and modelling all produce legitimate differences.

  3. 03

    Comparing totals

    Equal and opposite errors cancel and a broken setup looks perfect.

GA4 reconciliation · the fix

What a correct implementation looks like — GA4 reconciliation

  • Matched per record on transaction_id

    Not compared as sums.

  • A fully closed window

    Partial periods produce timing differences that look like faults.

  • The gap split into named categories

    Expected versus fault.

  • A documented, re-runnable procedure

    Owned by your team.

GA4 reconciliation · architecture

What causes the gap — GA4 reconciliation

Five contributors. Only two of them are faults, and treating all five as problems leads to fixes that make things worse.

  1. 1

    Consent denial

    Denied visitors aren't measured. Correct behaviour, and it scales with your denial rate.

  2. 2

    Ad and script blockers

    A share of visitors never load GA4 at all. Expected, not a fault.

  3. 3

    Modelling

    GA4 estimates some conversions. Useful, and not the same as counted — know which is which.

  4. 4

    Missing or malformed events

    A genuine fault. transaction_id absent, purchase not firing on some payment methods.

  5. 5

    Duplication

    A genuine fault. A refreshed confirmation page counting twice.

  6. 6

    Non-comparable records

    POS orders, test transactions, imported records. They belong in your total and not in the comparison.

GA4 reconciliation · diagnose

Common mistakes and how to validate each — GA4 reconciliation

Ordered by how often we find them. Each one has a specific check rather than a general instruction to be careful.

  1. 01

    Totals compared instead of records

    Match on transaction_id and count the mismatches. The number is usually a surprise.

  2. 02

    Partial window

    Re-run on a fully closed period. Some of the gap disappears.

  3. 03

    Non-web orders included

    Filter them out. They're real revenue and they were never going to appear in GA4.

  4. 04

    Everything treated as a fault

    Split the gap. Consent denial isn't fixable and shouldn't be on a remediation list.

  5. 05

    Nobody can re-run it

    Document it. Reconciliation that depends on one person isn't reconciliation.

GA4 reconciliation · prove

How to prove your implementation is right — GA4 reconciliation

Against your own records and a live payload, not against a preview screen.

Source of truth

your store's or CRM's own records, matched on transaction_id

  • Records matched on transaction_id over a fully closed window.
  • Duplicates and missing records counted separately.
  • The residual gap split into named categories.
  • The procedure documented and re-run by your own team.
  • Checked on a live conversion, not in preview mode.
  • Reconciled over a fully closed window, matched per record.
  • Re-checked 30 days later.

GA4 reconciliation · free audit

What we check in the free audit

  • Totals compared instead of records
  • Partial window
  • Non-web orders included
  • Everything treated as a fault
  • Nobody can re-run it

Checked against

your store's or CRM's own records, matched on transaction_id

Get my free conversion tracking audit

Free30 minutesNo obligation

GA4 reconciliation · when not to buy

What this reference deliberately leaves out — GA4 reconciliation

Stated openly, because a reference that's silent about its own gaps is the dangerous kind.

  • There's no universal acceptable gap. It depends on your consent rate, traffic mix and blocker exposure.
  • GA4's modelling methodology isn't fully documented and can't be reproduced independently.
  • Sampling behaviour in large properties has its own effects on exported data, which are documented by Google.
  • Vendor documentation is the authority, not this page. Where the two disagree, the vendor is right and we'd like to know so we can correct it.
  • Parameter names and behaviour change. Anything here is accurate as we last verified it; verify against the current documentation before you rely on it for a build.

GA4 reconciliation · what we deliver

The checklist — GA4 reconciliation

  • Export your own records with IDs and values

    For a fully closed period.

  • Export GA4 purchases for the same window

    With transaction_id.

  • Match on transaction_id

    Count records present in one and not the other.

  • Categorise the residual

    Consent denial, blockers, modelling, duplication, genuine loss.

  • Document it so someone else can repeat it

    Monthly, without you.

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

Repairs and verifies your existing browser-side setup against this reference, on a live conversion.

  • Implementation checked against the spec
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Have mine checked

1st-party server-side

Recommended

$800One-time fee · most popular

Money events sent from your own records through a first-party container on your subdomain, built to this specification.

  • First-party server container on your own subdomain
  • Events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Have it built properly

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, documented to this standard.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring so the next break surfaces in days
Get the full stack

FAQ

GA4 reconciliation questions, answered

No. Consent denial, blockers and modelling all produce legitimate differences. The goal is a gap you can explain and that stays stable.

Free · 30 min

Reconcile GA4 against the records that matter

Free30 minutesNo obligation