Why Your Marketing, CRM and Revenue Reports Don’t Match

Different platforms can report different numbers without any one of them being completely wrong. The real question is which system should own each business truth.

Why marketing reports don’t match: each system counts a different event, over a different window, with a different rule for who gets credit and a different definition of what one row represents. The numbers disagree because they’re answers to different questions, not because one of them is broken.

But here’s where it gets complicated. Some of those gaps are legitimate and some are genuine errors. In a report, though, they look identical.

So the cost of not knowing which is which isn’t the reporting time. It’s that budget decisions default to whoever argues most confidently. For example, a business spending $300,000 a year on acquisition, unable to reconcile its own numbers, isn’t making bad decisions. It’s making unexamined ones, which is harder to correct because nothing ever looks wrong.

Here’s what that looks like, in an illustrative October rather than client data. Google Ads reports 31 conversions. GA4, meanwhile, reports 22. Your CRM contains 19 leads tagged google, out of 48 leads from every source. Accounting shows 7 invoices from those google leads and $28,000 collected. Four systems, four numbers, one month.

But every one of those numbers can be correct. Later in this article, we walk all four back to each other and account for every single drop.

Why Do Marketing Platforms Report Different Conversion Numbers?

Because each platform counts only the conversions it can connect to itself, inside its own attribution window, on its own clock. So change any one of those three and the total changes with it.

Five mechanics produce most of the gap, and they stack.

The attribution window. Meta and Google each decide how long after an ad interaction a conversion still counts. But those windows differ by platform and by campaign setting. That’s why a conversion 12 days after a click may count in one platform and not the other.

View-through versus click-through. Some platforms credit conversions to people who saw an ad without clicking it. That’s a defensible thing to measure and a terrible thing to add to another platform’s number.

Dates, Time Zones and Modeled Numbers

Conversion date versus click date. Google Ads’ standard conversion columns credit a conversion back to the date of the click that produced it. Google’s own Ads help recommends its separate “by conv. time” columns when you’re comparing against Google Analytics, because those columns report conversions by when they occurred. When a September click converts in October, Google Ads files it in September by default and GA4 files it in October. So your October never matches their October.

Time zone. Each ad account carries its own reporting time zone, set when the account was created and rarely checked since. As a result, an account on Pacific time and a CRM on Eastern time will disagree on every day boundary of every month.

Modeled conversions. When consent is declined or cookies are unavailable, platforms estimate conversions they can’t directly observe. Those estimates are labeled as such inside the platform and disappear the moment the number gets copied into a spreadsheet.

MechanicWhat it does to the numberIs the platform wrong?
Attribution windowIncludes or excludes late conversionsNo
View-through creditAdds conversions with no clickNo
Conversion date vs click dateMoves conversions between monthsNo
Time zone offsetShifts activity across day boundariesNo
Modeled conversionsAdds estimated, unobserved conversionsNo, but it’s an estimate

None of those five is a defect. Instead, each is a documented choice. But all five are invisible once the number leaves the platform, which is how a report becomes an argument.

How do I know which marketing is actually working covers the tracking chain underneath all of this, which is what makes any comparison possible in the first place.

Why Can GA4 and Your CRM Disagree?

Because GA4 measures behavior on your website and your CRM measures records your team created. Between those two things sit a form, an integration and a person.

Any of those can lose data, but they lose it in different directions.

GA4 undercounts because of collection loss. Ad blockers, declined consent, browser tracking prevention and people switching from phone to laptop all remove sessions GA4 would otherwise record. The visit happened. But nothing recorded it.

The CRM undercounts because of handoff failure. A form can fire its GA4 event successfully and still fail to write a record, if the integration times out, the field validation rejects an entry, or the notification lands in spam. Nothing errors visibly. The lead simply isn’t there.

The CRM sometimes undercounts on purpose. A CRM can deduplicate contacts by email by design. HubSpot, for example, adds a form submission to the existing contact when that email address is already in the system. So one person submitting three forms across two weeks is three GA4 conversion events and one CRM contact. Neither system miscounted. Instead, they’re counting different objects.

Phone calls are invisible to GA4 entirely. For a service business where a large share of inquiries arrive by phone, GA4 will always look low against the CRM, and correctly so, unless call tracking is in place.

So notice that three of those four push the numbers apart legitimately, but one is real breakage. Telling them apart is the whole skill, and the last section gives you the procedure.

Why Can Google Ads, Meta and GA4 All Claim the Same Customer?

Because each one applies its own attribution model to its own data, and none of them can see the others. A buyer who touches two platforms appears in both, in full.

In fact, the buying path makes this almost guaranteed. Someone sees a Meta ad on Monday, searches your brand name on Wednesday, clicks a Google ad, and converts. Meta legitimately claims a view-through conversion. Google legitimately claims a click conversion. GA4 applies a third model across both and may credit either, or split it.

Google’s attribution documentation is explicit that different models assign credit differently to the same set of touchpoints. HubSpot’s attribution reporting shows the same models applied inside a CRM, which can follow the path further than any ad platform can.

SystemCan seeCannot see
Google AdsIts own clicks and impressionsMeta, organic, referral, offline
Meta AdsIts own impressions and clicksGoogle, organic, referral, offline
GA4On-site sessions across channelsPhone calls, offline sales, refunds, margin
CRMRecords your team created and taggedAnything nobody recorded
AccountingMoney receivedWhere any of it came from

The arithmetic consequence is easy to state but rarely applied. In the same illustrative October, Meta claims 42 conversions and Google claims 31. But that doesn’t mean 73 customers. The CRM holds 48 leads from every source combined. The overlap isn’t an error in either platform. It’s the predictable result of two systems each answering “did I contribute to this?” rather than “who gets this one?”

That’s why you never sum conversion counts across platforms. Instead, pick one system as the count of record and use the platforms to explain that count, not to build it.

Does One of the Systems Have to Be Wrong?

No. Every system can be accurate and they’ll still disagree, because they’re counting different things at different grain.

Grain is the useful word here, borrowed from data modeling. Microsoft’s star schema guidance for Power BI makes the point that a fact table has to load at a consistent grain, meaning every row represents the same kind of observation. Mix grains in one table and every total you compute afterward is meaningless.

Your reporting stack mixes four grains by default:

SystemWhat one row representsGrain
Google AdsA conversion action firingEvent
GA4An event inside a sessionEvent, session-scoped
CRMA person, or an opportunityEntity
AccountingAn invoice or a paymentTransaction

So “31 versus 19” isn’t a discrepancy. It’s a unit conversion that nobody performed. Comparing conversion events to CRM contacts is comparing miles to gallons.

But don’t use grain as an excuse to stop looking. Some gaps genuinely are errors, and the two categories are separable.

SymptomUsually legitimateUsually a real error
Ads reports more conversions than CRM leadsGrain, windows, one person converting twiceDuplicate conversion tags both firing
GA4 lower than CRMConsent decline, blockers, phone callsTracking code missing from a page or template
CRM lower than GA4 form eventsDeduplication by emailIntegration silently dropping records
Accounting lower than CRM closed dealsInvoicing timing, payment termsDeals marked closed that never paid
Last month’s numbers changedBack-dated conversions, modeled data settlingSomeone edited the report definition

Print that table. It converts a vague sense that the reports are wrong into a short list of things to actually check.

How Do You Decide Which Number to Trust When Reports Conflict?

Stop trying to pick a winner. Instead, assign each fact to the system that’s authoritative for that fact, and use only that system for that number.

Different systems are authoritative for different things. The ad platform owns what you spent, because it’s the one billing you. The CRM owns customer status, because that’s where a human recorded it. Accounting owns recognized revenue, because that’s where the money actually arrived. This is commonly called establishing a system of record for each type of information, and the practical version fits on an index card.

The working rule for meetings: every number presented has to be introduced with the system it came from. “October revenue from google leads is $28,000 per accounting” and “we have 48 leads per the CRM” end most reporting arguments before they start, because the disagreement was never really about the number. It was about which system got to define it.

How Do You Diagnose a Reporting Mismatch?

Walk the funnel from the largest number to the smallest and give every drop a named cause. Six steps, in order.

1. Align the window and the time zone first. Check the reporting time zone on every ad account and set the same date range everywhere. Also decide whether you’re reporting by click date or conversion date, then apply that choice to every platform. Skip this and every later step produces noise.

2. Write down the grain of each number. Event, session, person, opportunity, invoice. Do this before comparing anything.

3. Order the numbers largest to smallest. They should form a funnel. If a later stage is larger than an earlier one, you’ve found a real problem immediately.

4. Account for every drop with a named cause. Not “attribution,” because that explains nothing. A named cause is “three duplicate conversion actions firing on the thank-you page.”

5. Sort each cause into legitimate or error, using the table above.

6. Fix the errors and document the legitimate gaps. Documented gaps stop being re-litigated every quarter, which is most of the value.

The October Example, Walked All the Way Down

Here’s the illustrative October from the opening, walked all the way down. The figures are an example, not client data.

StepCountWhat explains the drop
Google Ads reported conversions31Starting number
Less conversions credited to September clicks27Reported on click date, not conversion date
Less duplicate conversion actions firing24Form submit and thank-you page both tagged
GA4 recorded conversions22Consent declines and cross-device sessions
CRM leads tagged google19Three form fills never wrote to the CRM
Qualified opportunities9Ten inquiries were out of service area
Closed and invoiced in October7Two deals still open at month end

Two of those six drops are errors worth fixing: the duplicate conversion actions and the three lost form fills. But the rest are legitimate and now documented. That middle failure, where a form fires its tracking and never creates a record, is worth checking on every form you own, because it’s silent by design.

What good looks like at the end of this: one date convention, one time zone, a named grain for every number, a documented reconciliation you can rerun every month, and one system named as authoritative for each fact. Not a new platform. Instead, a set of decisions, written down once.

More at Business Intelligence.

Frequently Asked Questions

How do I explain to leadership why marketing reports don’t match?

Say that each system answers a different question, then show the funnel walk. A single table that starts at the ad platform number and ends at collected revenue, with a named cause for every drop, resolves the conversation faster than any explanation of attribution theory. Leadership rarely wants one true number. They want to know the gaps are understood.

Which number should I put in the board report?

Revenue from accounting, customers from the CRM, spend from the ad platforms. Label the source next to each. Never present a platform conversion count as a customer count, because those are different units and the board will reasonably treat them as the same.

How much of a gap between platforms is normal?

There’s no universal figure, which is precisely why marketing reports don’t match in a way that alarms people. Google’s Ads help says discrepancies of up to 20 percent against analytics tools are often expected. What matters is whether your gap is stable and explainable. A gap that swings widely month to month means something’s breaking intermittently.

Can a reporting dashboard fix this?

No. A dashboard pulls the same conflicting numbers into one screen faster. If the underlying definitions, windows and grain disagree, the dashboard renders the disagreement in nicer fonts. Write down the date convention, time zone and grain behind every number, so the dashboard has something consistent to show. Settle the definitions first, then build the view.

Do I need to fix this before spending more on ads?

Fix the errors first, meaning duplicate tags and broken integrations, because those actively distort what the ad platforms optimize toward. The legitimate gaps can be documented and left alone. Understanding why marketing reports don’t match isn’t a prerequisite for spending. Knowing which of your numbers is trustworthy is.

Before adding another platform, understand what your existing systems are doing and what they are not. See how the Insights Engine works.