You export leads from your CRM, open GA4 next to it, and the two don’t agree. GA4 says 120 conversions; your CRM says 95 real leads. Same month, same website — different totals. It is one of the most common data questions Malaysian marketers ask, and it usually triggers a hunt for a bug that isn’t there.
This guide is for business owners and marketers who need to trust their numbers before spending on them. It draws on how our team at ZenWeb reconciles tracking across 500+ client accounts, plus Google’s own analytics documentation. When GA4 and your CRM don’t match, the fix is rarely to make them equal — it is to understand why they differ and get each gap into a sensible range. That clarity is the base of every good digital marketing agency decision.
We’ll set the right expectation first, map the causes, match symptoms to fixes, work a reconciliation checklist in order, and show how big a “normal” gap actually looks. The short video below is a useful primer.
Source video: "Why Google Ads and GA4 Data Doesn't Match (And What You Can Do About It)" on YouTube
Quick Answer: No — and expecting a perfect match sends you chasing a phantom bug. GA4 counts on-site events like form submits; your CRM counts qualified leads, including phone and walk-in enquiries GA4 never sees. A gap of roughly 10–20% is normal. Confirm both sides measure the same thing over the same dates before assuming either is wrong.
Before you change a single tag, prove what you are actually comparing. Two minutes lining up definitions and dates tells you whether GA4 and your CRM genuinely disagree, or whether the “gap” is just a mismatch in what each side counts.
This is the same discipline you would use for any data mismatch — the kind that makes GA4 duplicate transactions inflate your sales, or that you follow when GA4 shows no data at all and you confirm the tag even fires before touching anything else.
Not sure which number to trust?
A quick professional check confirms whether your GA4 and CRM gap is normal or hiding a real tracking problem. See how our digital marketing agency reconciles tracking →
Quick Answer: Most of the GA4–CRM gap comes from a short list of causes. Different lead definitions, consent and cookie loss, and offline or phone enquiries GA4 never records explain most of it. Attribution differences, bot and spam form-fills, and duplicated thank-you events cover the rest. Knowing the biggest drivers tells you what to check first.
Not every cause is equally common. Knowing which ones show up most often means you check those first instead of chasing rare edge cases. The chart below shows how the GA4-to-CRM gap breaks down across the Malaysian accounts our team has audited.
| Root cause | Share of the gap |
|---|---|
| Different lead definitions (form submit vs qualified lead) | 26% |
| Consent and cookie loss (privacy blocking) | 21% |
| Offline, phone and WhatsApp leads not in GA4 | 18% |
| Attribution model and window differences | 15% |
| Bot or spam form-fills counted by GA4 | 12% |
| Duplicated or reloaded thank-you events | 8% |
Source: ZenWeb client audits, Malaysia, 2024–2026.
The top three rows — definitions, consent loss, and offline leads — cover about two-thirds of the gap, and none is a GA4 fault. They are the same missing lead-source signals that leave a business unable to attribute sales to a channel at all, so fixing them helps far more than one report.
Quick Answer: The direction of the gap tells you where to look. If your CRM shows more leads than GA4, you are usually missing offline or consent-blocked leads. If GA4 shows more, bots or a form firing on page view are inflating it. Read the symptom first, then check one thing.
Rather than guessing, read the specific pattern you see and go straight to its most likely cause. The table below maps each common symptom to the first place to check.
| What you see | Most likely cause | Look here first |
|---|---|---|
| CRM shows more leads than GA4 | Offline or phone leads, or consent loss | CRM lead-source field for phone / walk-in |
| GA4 shows more than the CRM | Bots or a form firing on page view | DebugView vs real submissions |
| Totals close, but sources disagree | Attribution model mismatch | GA4 channel vs CRM lead-source |
| Gap shows up only on paid campaigns | UTMs not passed into the CRM | Hidden UTM fields on the form |
| Gap appeared on a specific date | Consent banner or tag change | GTM / GA4 change history |
Source: ZenWeb diagnostic framework, Malaysia, 2024–2026.
Notice how often the first check is a single look, not a rebuild. “Totals close, sources disagree” is the classic attribution signature — the same reason GA4 and Google Ads numbers don’t match, because each system credits a different touchpoint in the journey.
Quick Answer: Work these seven checks from fastest to slowest. Fix the date window, match your lead definition, reconcile the counts, check UTM capture, account for offline leads, filter bots and reloads, then close the loop with offline conversions. Stop when the gap sits inside a range you can explain.
When GA4 and your CRM won’t line up, order matters — some causes take seconds to rule out, others need a settings change. Work top to bottom and stop as soon as the gap is small and explainable.
Standardising the lead definition and the source field is what makes the two agree. GA4 assigns each key event to a channel using its own attribution model — a data-driven one by default, per Google’s attribution documentation — while your CRM usually stores a single last-click or first-touch source. That is the same credit problem behind last-click attribution hiding your real winners.
Worked through the list and still stuck?
Some accounts hide two causes at once — a broken UTM and untracked phone leads together. Get our team to reconcile your GA4 and CRM end to end →
Quick Answer: A healthy GA4-to-CRM gap depends on how you capture leads. A clean web-form-only setup usually lands within about 8%. Add WhatsApp, phone calls, and walk-ins and GA4 undercounts your CRM by far more, because those leads never touch the site. The more offline your funnel, the wider the normal gap.
The gap is not evenly spread. How you capture leads drives most of it. The chart below shows the typical amount GA4 undercounts the CRM across audited Malaysian accounts, grouped by lead-capture setup.
| Lead-capture setup | GA4 undercount vs CRM |
|---|---|
| Web form only, clean setup | 8% |
| Form + WhatsApp click | 18% |
| Form + phone calls | 27% |
| Multi-channel (form, phone, walk-in, offline) | 38% |
Source: Modeled from ZenWeb client audits, Malaysia, 2024–2026.
The lesson is that an offline-heavy funnel will always show a bigger gap, and that is fine as long as you can explain it. It is the same reason Search Console and GA4 numbers never match — different tools, different scopes, measuring different moments.
Quick Answer: Set a tolerance band per metric so you know when a gap is normal and when it signals a real problem. Small, stable differences in totals and revenue are fine; a channel that is suddenly double or half, or a trend moving the opposite way, is worth investigating. Track direction, not just the raw number.
Reconciliation is not about zero difference — it is about knowing your acceptable range for each metric. The table below sets sensible bands and the point at which a gap becomes a warning sign.
| Metric | Acceptable gap | When to worry |
|---|---|---|
| Total lead count | ±10–20% | Above ~25% or steadily growing |
| Lead source / channel split | ±15–20% | A channel roughly double or half |
| Revenue / deal value | ±10–15% | Above ~20% |
| Trend direction (week on week) | Should match | GA4 up while CRM is down |
Source: ZenWeb reconciliation framework, Malaysia, 2024–2026.
The revenue row is the one to watch most closely. If GA4’s conversion value drifts from the deal value in your CRM, you may have the wrong conversion value in GA4 feeding your bidding, which is a data problem to fix rather than a reconciliation gap to accept.
Quick Answer: Simple reconciliation is a DIY job — matching definitions, aligning dates, and filtering bots. Bring in help when leads span offline and online channels, when the gap feeds Google Ads bidding, or when it keeps drifting after each fix. A specialist closes the loop so both systems finally agree.
You don’t need an agency for every gap. Use this rough line to decide:
An unexplained GA4-CRM gap is quietly expensive — you budget and bid on numbers that flatter or mislead you. Our team at ZenWeb sets up closed-loop tracking as part of every digital marketing agency engagement, so your GA4, CRM, and ad platforms finally tell one story. The same fast-diagnosis habit helps you catch a sudden ranking drop before it reshapes your traffic too.
When GA4 and your CRM disagree, the goal isn’t a perfect match — it is a gap you can explain. Set the same lead definition, align dates and time zone, then work the seven checks: window, definition, counts, UTMs, offline leads, bots and reloads, and closing the loop. Most accounts land inside a sensible range within an afternoon.
Resist trusting whichever number looks better. Decide your tolerance bands, watch trend direction, and reconcile until both sides move together. If your leads span offline channels or feed ad bidding, the team at ZenWeb’s digital marketing agency can close the loop and keep GA4 and your CRM honest.
Because they count different things. GA4 records on-site events like form submits, while your CRM records qualified leads, including phone and walk-in enquiries GA4 never sees. Add consent and cookie loss, bot form-fills, and attribution differences, and a 10–20% gap is normal, not a bug.
No. A perfect match is neither realistic nor a sign of health. Aim for a gap you can explain by channel mix and lead definition — usually within 10–20% for a mostly-online funnel, and wider when phone, WhatsApp, and walk-in leads are involved.
Usually nothing is broken. GA4 misses offline and phone enquiries and any lead lost to consent denial or blocked cookies. Tag those offline leads in your CRM by source, and the remaining gap should shrink to a range you can account for.
GA4 is likely counting non-leads: bot or spam form-fills, a form event that fires on page view instead of submission, or a thank-you page that reloads. Filter those out and align your GA4 key event with a real, qualified submission.
Standardise the lead definition, align dates and time zone, capture UTMs into the CRM, tag offline leads, and close the loop by importing CRM outcomes back into GA4 and Google Ads. You won’t get identical numbers, but you will get two systems that move together.
Not sure whether to trust GA4 or your CRM?
Book a free 30-minute session — we’ll reconcile your GA4 against your CRM, find every missing offline lead, broken UTM, and bot inflating the count, and set up closed-loop tracking that reports the truth, not a flattering number.
Complete the form and our team will contact you to discuss your goals. Let’s grow your business.

Online