Why do our numbers never match across Google Analytics, Amplitude, and our CRM?
The primary reason why do our numbers never match across Google Analytics, Amplitude, and our CRM is that each tool uses a different methodology for capturing, identifying, and attributing user actions. Google Analytics focuses on sessions and traffic sources, Amplitude tracks behavioral events and product engagement, and your CRM (Customer Relationship Management) serves as the system of record for revenue and human interactions.
In our experience working with early stage startups, we have found that some discrepancy between client-side tracking (like Google Analytics) and server-side records (your CRM) is normal and expected. This gap exists because of ad blockers, cookie consent choices, and different definitions of what constitutes a "conversion." A modest, stable difference usually means your tracking is working as intended. If the gap is large or keeps widening, you usually have a technical implementation error or a fundamental breakdown in how you identify users across platforms.
| Feature | Google Analytics 4 | Amplitude | CRM (HubSpot/Salesforce) |
|---|---|---|---|
| Primary Purpose | Traffic Acquisition | Product Behavior | Sales and Revenue |
| Tracking Method | Client-side Browser | Client and Server | Server-side API |
| Identity Basis | Browser Cookies | User ID and Device ID | Email Address |
| Data Freshness | 24 to 48 hours | Near real-time | Real-time |
| Typical Variance | Higher (client-side loss) | Lower (client and server) | The Ground Truth |
What is the data discrepancy between GA4 and CRM?
The data discrepancy between GA4 and CRM usually stems from the battle between the browser and the server. Google Analytics 4 (GA4) relies heavily on client-side tracking. This means a piece of JavaScript runs in the user's browser, sends a "ping" to Google, and records the event. If a user is running a strict ad blocker, has disabled cookies, or uses a privacy-focused browser like Brave, that ping never reaches Google.
Conversely, your CRM (like HubSpot or Salesforce) typically records data when a form is submitted or a deal is moved. These are server-side actions. When a customer pays you, your Stripe or billing system sends an API (Application Programming Interface) call directly to your CRM. This bypasses the browser entirely. Because the CRM does not rely on browser cookies to know that a check cleared the bank, its numbers will always be more accurate for revenue than GA4.
We often see founders get frustrated when GA4 shows 100 signups but the CRM only shows 85. Usually, those 15 missing people are simply users who blocked the tracking script but still completed the signup form. GA4 is a tool for observing trends and proportions, not for auditing your bank account.
How do you reconcile amplitude events with salesforce revenue?
To reconcile amplitude events with salesforce revenue, you must first align your identity resolution strategy. Amplitude identifies a user based on a Device ID or a User ID that you assign when they log in. Salesforce identifies a person based on their email address or a unique Lead ID.
If you do not pass the Salesforce Lead ID into Amplitude as a user property, you are essentially looking at two different people in two different rooms. We recommend implementing a "cross-stitch" approach:
- When a user signs up, capture their internal database ID.
- Pass that database ID to Amplitude as the User ID.
- Pass that same database ID into a custom field in Salesforce.
When you have a common key between the two systems, you can use a data warehouse like BigQuery or Snowflake to join the tables. Without this common key, you will always be guessing whether the "Power User" in Amplitude is the same person who just signed a $50,000 contract in Salesforce.
Another common issue is session timeouts. Amplitude might count a conversion because a user clicked a button 31 minutes after their last action, starting a "new session" in its logic. Salesforce does not care about sessions; it only cares that the "Contact" record exists. This difference in how time is handled creates a natural "Definition Drift" that makes manual reconciliation nearly impossible.
Why analytics tools show different conversion counts in reality?
The reason why analytics tools show different conversion counts often comes down to how they handle "Attribution Windows" and "Duplicate Logic."
Google Analytics might attribute a sale to the first click that happened 29 days ago. Amplitude might attribute that same sale to the very last feature the user used before upgrading. Your CRM will attribute the sale to the sales rep who closed the deal. All three are "correct" within their own siloed logic, but they will never produce the same number at the end of the month.
We also see issues with "Reload Bias." If a user reaches a "Thank You" page and refreshes their browser three times, a poorly configured GA4 setup might count three conversions. A CRM, however, will see that only one person submitted the form and will deduplicate the entries based on the email address. This is why CRM numbers are almost always lower (and more accurate) than marketing analytics numbers.
If you find yourself spending more than 5 hours a week trying to manually export CSV files and line up these rows in Google Sheets, you are hitting a ceiling that most founders face at the Series A stage. We build these fixes as fixed-price Automation Sprints where we align your tracking schema across your entire stack in one week for $5,000-$8,000. This unblocks your reporting so you can stop arguing about which number is right and start making decisions.
Drowning in spreadsheets?
Get a free 30-minute workflow teardown. I'll show you what to automate first.
Book Free TeardownThe Attribution Hierarchy: Which source of truth should I trust?
When our clients ask which tool they should believe, we tell them to follow the "Proximity to the Bank Account" framework. The closer a tool is to the actual exchange of money, the more you should trust its absolute totals.
- The Bank/Stripe: This is 100% truth. If the money isn't here, it didn't happen.
- The CRM (Salesforce/HubSpot): This is 99% truth for revenue. It is your system of record for who your customers are.
- Product Analytics (Amplitude/Mixpanel): Trust this for "How are people using the app?" and "Where are they getting stuck?"
- Marketing Analytics (GA4/Meta Pixel): Trust this for "Which ads are driving the most clicks?" and "What is the relative cost per lead?"
Never use GA4 to report your ARR (Annual Recurring Revenue) to investors. Conversely, do not try to use your CRM to figure out which blog post is driving the most top-of-funnel awareness. Use each tool for its intended purpose.
The true cost of manual data reconciliation for founders
Many founders believe that a data discrepancy is a technical problem that can be ignored. In reality, it is a massive drain on your most valuable resource: your time and focus.
If you are a founder earning roughly $200 per hour (based on a modest valuation of your time), and you spend 5 hours every Sunday night trying to reconcile GA4 signups with your CRM exports, you are spending $1,000 a week on manual labor. Over a year, that is $52,000 in lost productivity.
Beyond the financial cost, there is a psychological cost. When your numbers do not match, you lose trust in your systems. You stop looking at the dashboard. You start making marketing budget decisions based on "gut feel" rather than performance. This is how startups waste hundreds of thousands of dollars on underperforming ad channels because the data was too messy to read.
If you are tired of the spreadsheet shuffle, you can look into our Startup Hub which outlines how we help founders move from messy spreadsheets to automated, reconciled reporting.
Frequently Asked Questions About Data Discrepancies
Why is my GA4 revenue much higher than my CRM revenue?
This is usually caused by "Duplicate Hits." If a user refreshes the "Purchase Complete" page or returns to it from a bookmark, GA4 may fire the purchase event multiple times. Your CRM uses unique transaction IDs or email addresses to ensure a sale is only counted once. You should implement "Transaction ID" deduplication in GA4 to fix this.
Can I ever get my GA4 and CRM to match 100%?
No. Due to browser privacy settings, ad blockers (which are especially common among tech-savvy audiences), and VPNs, some client-side data will always be lost. Aim for a close match for leads and accept that GA4 will always be a directional tool rather than an accounting tool.
Should I use a Customer Data Platform like Segment to fix this?
A CDP (Customer Data Platform) like Segment can help by sending data to all your tools simultaneously from a single trigger. This ensures that the same event name and properties reach GA4, Amplitude, and your CRM at the same time. However, it does not solve the fundamental difference in how these tools define sessions or attribute conversions. It is a great step for data hygiene but not a magic wand for reconciliation.
Why do signups in Amplitude appear higher than signups in my CRM?
Amplitude often tracks "Intent to Signup" (clicking the submit button), whereas the CRM tracks "Successful Signup" (the database record was created). If your signup form has a high error rate, Amplitude will record many "clicks," but your CRM will record very few "leads." This discrepancy is actually a great way to identify bugs in your onboarding flow.
Ready to automate your reporting?
If you are a founder who is tired of spending your weekends fighting with CSV exports, we can help you build a clean, automated data foundation. We offer fixed-price Automation Sprints for $5,000-$8,000 that reconcile your marketing, product, and sales data into a single source of truth.
Book a free 30-minute consultation today to talk through your current stack and see how we can get your numbers to finally make sense.