Consultant walking a colleague through GA4 audit findings in a Google Sheet, with the prioritized fix list open on a laptop
Case study · GA4 audit

GA4 audit case study: reports and CRM that finally agree

A GA4 audit traced the gap between GA4 and the CRM to two faults in 7 business days: form tags that never fired and a broken first event. Once the Build had fixed them and rebuilt the audiences, Google Ads remarketing conversions rose 20% on those audiences.

  1. Phase 1 · Tracking Audit2 faults foundin 7 business days
  2. Phase 2 · Tracking Build4 layers fixedthen the audiences rebuilt
+20%Google Ads remarketing conversions, measured on the rebuilt audiences
Findings to fixes

The GA4 audit ledger: finding, fix, effect

The Tracking Audit found two faults. The Tracking Build fixed both, reworked two more layers and then rebuilt the audiences, and the last row is where the Google Ads result sits. Open any row for a check you can run on your own property this week.

SaaS GA4 audit case: each audit finding, the fix made in the Tracking Build and its effect
RowWhat the audit foundFix in the BuildEffectSelf-check
01 Audit findingForm submits never sent an event to GA4The CRM received each lead. GA4 never heard about it. Form tracking fixed in Tag Manager. Form submits reach GA4 again. About 25% closer to CRM recordsForm tracking compared with CRM records
Check yours: form events against CRM leads

Submit a test lead with GTM Preview open. The form event should fire once, after the success state, and show up in GA4 DebugView. Then set one week of that event beside one week of new CRM leads. A gap wider than consent choices and ad blockers can explain points to this row.

02 Audit findingA broken first eventVisits started without the data later reports rely on. Tag Manager reworked: which tags fire, and when. First event fixedNo separate figure published
Check yours: the first hit of a session

Open a landing page in GTM Preview with utm_ parameters in the URL and watch which tag reaches GA4 first. It should be the Google tag's page view, carrying the full page URL. A large (not set) row in GA4's landing page or session source report usually means sessions start on the wrong event.

03 Rebuilt in the BuildConsent Mode v2 configurationThe signals that tell Google tags what each visitor allowed. Consent Mode v2 rebuilt. Part of the Build behind the +20%No separate figure published
Check yours: the consent state on each hit

Open the site in a clean browser and make no choice in the banner. Any GA4 request that goes out should carry gcs=G100, which means ad and analytics storage are both denied. Accept, reload and check that the value turns to G111. A G111 before any click, in a region where you ask for consent first, means the defaults are wrong.

04 Rebuilt in the BuildGA4 property settingsThe settings that decide what GA4 counts and keeps. GA4 settings cleaned. Part of the Build behind the +20%No separate figure published
Check yours: three settings in GA4 Admin

Data retention limits how far back Explorations can reach, and GA4 keeps it at 2 months until someone changes it. Data filters decide whether internal and developer traffic is counted. The unwanted referrals list decides whether a payment page or a login domain takes credit for the session.

05 OutcomeRemarketing audiencesMembership hung on events that never arrived. Audiences rebuilt on the repaired events. +20%Remarketing conversions in Google Ads, on the rebuilt audiences
Check yours: what each audience depends on

In GA4, open each audience shared with Google Ads and note the event its membership condition uses. If that event never fires, the audience either stays close to empty or fills with the wrong visitors, and remarketing bids against the wrong list.

Scope of the result. The 20% covers remarketing conversions on the rebuilt audiences. Account-wide Google Ads conversions sit outside the published figure.

The mechanism

How the GA4 audit fix reached Google Ads, step by step

Google Ads remarketing audiences are built from events GA4 records. While the form event never fired, visitors who converted or showed intent never joined the audience meant for them, and Google Ads bid against a list that did not match the CRM.

Before the Build

  1. Form submitLead reaches the CRM
  2. GA4 form eventNever fired
  3. GA4 audienceWaits for an event that never arrives
  4. Google Ads remarketing listInherits the gap from GA4
  5. Base
    Remarketing conversionsBaseline before the Build

After the Build

  1. Form submitLead reaches the CRM
  2. GA4 form eventReaches GA4 again
  3. GA4 audienceRebuilt on the repaired events
  4. Google Ads remarketing listFed from the rebuilt audience
  5. +20%
    Remarketing conversionsOn the rebuilt audiences
Reading a gap

Normal gap vs tracking fault in GA4 and CRM lead counts

GA4 will never match the CRM lead for lead. The useful question is whether each part of the gap has a cause you can name. The right-hand column is what this audit found.

ExpectedExplain it, then leave it alone

  • Visitors who decline consentGA4 records less for them, or modeled data only. The CRM still gets the lead.
  • Ad blockers and privacy browsersRequests to Google domains are stopped. The CRM still gets the lead.
  • Different counting rulesGA4 counts events and sessions. The CRM counts people and records.
  • Cross-device journeysA visitor who researches on a phone and converts on a laptop can be two users in GA4. The CRM keeps one person.

FaultFind it, then fix it

  • Form events that never fireFound in this auditGA4 misses leads that consent and blockers cannot account for.
  • A broken first eventFound in this auditSessions start without a clear source or landing page.
  • Consent Mode v2 set up wrongRebuilt in this BuildData is held back for visitors who accepted, or sent for visitors who did not.
Two analysts reviewing a printed GA4 audit report with a tablet showing conversion charts
Tracking Audit7 business days with read-only access to GA4, Tag Manager, consent and Google Ads
Questions from this case

Before you compare GA4 with a CRM

Why do GA4 and my CRM show different lead numbers?
A CRM keeps every lead that arrives, while GA4 counts only what its tags manage to send. Consent choices, ad blockers and different counting rules account for part of that difference. When the gap is wider than those three explain, look for a tracking fault such as a broken first event or a form tag that never fires.
Can GA4 and a CRM ever match exactly?
No. GA4 will never mirror the CRM lead for lead, because consent choices, ad blockers and counting rules always sit between them. The aim is a gap you can explain row by row. In this SaaS case, fixing the form tags brought form tracking about 25% closer to CRM records.
How long did the GA4 audit take?
The Tracking Audit took 7 business days with read-only access and traced the gap to the two faults at the top of the ledger. The fixes followed as a separate Tracking Build inside the client's Tag Manager and GA4, and the audiences were rebuilt once the events fired again.
Your next step

Line up one week of form events against your CRM

Two counts for the same week tell you whether your gap looks like consent and blockers, or like a ledger row.

Compare my two counts

Send both numbers and the page the form sits on.

A name helps us address the reply.
Check the email address for a typo.

What happens next: a reply within one business day naming the ledger row your gap most resembles.