Why your marketing tools never show the same number
Ask three people on a small team how many signups you had last month and you can easily get three answers. Marketing quotes Google Analytics, sales quotes HubSpot, and the founder quotes Stripe. Each number is real, and each one comes from a tool that is working as designed. The trouble is that "signups" means something slightly different in each tool, and nobody wrote down which meaning the team uses.
That disagreement costs more than a few minutes at the start of a meeting. When nobody trusts the number, nobody trusts the decisions built on it either. A campaign looks like a winner in one report and a flop in another, and the budget conversation turns into a debate about data instead of a decision about marketing.
A single source of truth for marketing data doesn't mean forcing everything into one tool. It means three things:
- One definition for each number. "Signup" means a person who created an account, counted once, excluding your own team and test accounts.
- One official tool for each number. Signups come from your product's records, new leads come from the CRM, and new paying customers come from billing.
- A known gap between tools. You know roughly how far Google Analytics usually sits from the official count and why, so a change in that gap tells you something broke.
This is good work for an AI agent. It means reading the same date range in several tools, comparing them carefully, and doing it again every month without getting bored. Kite is an AI marketer. It researches your business, builds a growth strategy, and ships the work that brings you new customers. Trustworthy numbers are where that work starts, so Kite treats them as part of the job.
How Kite settles on one source of truth for your metrics
Kite starts with the numbers your team argues about, usually signups, leads, and new customers. It reads each one from every connected tool for the same period and puts them side by side. Then it works out where each gap comes from, so you can see which differences are expected and which ones point to a real problem.
With the causes in hand, Kite proposes a definition for each number and names the tool that should own it, along with the reasons. Your team agrees on the list, and Kite records it in your team's knowledge base. From then on, every report Kite writes uses the agreed number from the agreed tool and says so.
After that, Kite keeps the numbers honest. It reruns the comparison on a schedule, watches whether the usual gap between tools holds steady, and tells you when it moves.
- Put every tool's version of the number side by side
- Find out why Google Analytics shows different numbers than your CRM
- Decide which tool owns each number
- Write the agreement down where every report can use it
- Keep the numbers agreeing every month
Put every tool's version of the number side by side
The first step is a single table that shows what each tool reports for the same number over the same dates. Disagreements are impossible to settle when one person pulled last month in Pacific time and another pulled the last 30 days in UTC, so Kite fixes the date range and time zone before it reads anything.
Kite reads each connected tool the way an analyst would:
- Google Analytics. The sign-up key event and how many users triggered it, broken down by channel, source, and landing page.
- HubSpot. Contacts created in the period, with their original source, lifecycle stage, and how each record was created, such as a form, an import, or a salesperson.
- PostHog. The signup events your website or product sends, and how many distinct people sent them.
- Stripe. New customers and new subscriptions, including trials, along with whether each one went on to pay.
- Segment. How many events each source received each day and how many reached each destination, when Segment sits in the middle of your tracking.
If Kite built and hosts your website, its built-in analytics already records form submissions and conversions on the site, and Kite reads those too.
Here's what that table might look like for September. Google Analytics shows 512 sign-up events from 471 users. HubSpot shows 548 new contacts. Stripe shows 497 new customers. Those three numbers are the start of the investigation, not the answer.
Find out why Google Analytics shows different numbers than your CRM
Google Analytics and your CRM disagree because they measure different things in different ways. Google Analytics counts events that happen in a visitor's browser, and only when the browser lets it. Your CRM counts records, and a record can be created in ways that never touch your website. Kite measures each cause it can find, so the gap gets explained in numbers rather than guesses.
The most common causes fall into a few groups:
- Counting the same person more than once. A visitor who reloads the confirmation page can fire the sign-up event twice, and someone who signs up on a phone and again on a laptop can look like two users.
- People your browser tracking can't see. Cookie banners that visitors decline and ad blockers keep some signups out of Google Analytics entirely, while the CRM still gets the record.
- Records that never came from the website. Salespeople add contacts by hand, someone imports a list from an event, or a partner sends leads over, and all of them count as new contacts in the CRM.
- Test and internal accounts. Your own team signing up to check a new page shows up everywhere unless someone filters it out.
- Different time zones and dates. A signup at 11 p.m. on September 30 can land in September in one tool and October in another.
- Tracking that broke. A release that removed the tracking code from one page, or a renamed event that a tool now ignores, quietly drops signups from one tool from a certain date onward.
Kite checks each cause with the data that can confirm it. It compares sign-up events with users in Google Analytics to measure double counting. It reads how each HubSpot contact was created to separate form signups from imports and manual entries. It matches HubSpot contacts with Stripe customers on email address to find the people who appear in one but not the other. When Segment is connected, it reads daily counts per source to find the day a tracking problem started.
In the September example, the explanation might come out like this. Google Analytics counted 41 repeat events, which brings it to 471 people. HubSpot's 548 includes 37 contacts that sales added by hand and 9 from your own team, so 502 came from the signup form. Stripe's 497 is lower because 5 people who signed up never started a trial. Once each gap has a cause, the three numbers stop competing. They describe the same signups from three angles, and the remaining 31 people missing from Google Analytics are visitors whose browsers blocked tracking.
Related How-to pages
- How to find gaps in conversion tracking with Segment: Compare a count you trust, such as new accounts in your CRM, with what each Segment source receives and each destination records, and get every gap with its date, size, cause, and fix.
Decide which tool owns each number
Each number should come from the tool closest to the thing it counts. Kite applies that rule to every metric your team reports and proposes one official tool for each, with the reason written beside it.
The usual result looks like this. Signups come from your product's own records, through PostHog or your CRM, because the account either exists or it doesn't. Leads come from your CRM, because that's where sales decides what counts as a lead. Paying customers and revenue come from Stripe, because a payment is the most reliable record of a sale. Traffic, channels, and landing pages come from Google Analytics, because it sees the visit before the signup.
That last point settles a lot of arguments. Google Analytics is rarely the right place to count signups, but it's usually the right place to ask which channel or page they came from. You can report 502 signups from the CRM and still use Google Analytics to say that 40 percent of tracked signups came from organic search.
Kite also writes the definition itself, in a sentence anyone on the team can check. For leads, that might be "A lead is a contact created through the website form or the demo booking page, with a work email, excluding existing customers and our own team." Getting your team to agree on how you count leads is mostly a matter of writing a sentence like that and having everyone read it before the next report goes out. Kite drafts it from what it found in your tools, and your team edits it until it's right.
Write the agreement down where every report can use it
An agreement that lives in someone's memory falls apart the first time that person is on vacation. Kite records each agreed metric in your team's knowledge base, the same shared place that holds your positioning, customers, and results from earlier work.
Each entry covers what someone would need to pull the number correctly:
- The name of the metric and its one-sentence definition.
- The official tool and the exact report, property, or filter to use.
- The time zone and how the dates are counted.
- What gets excluded, such as test accounts, internal users, or imported lists.
- How far the other tools usually sit from the official number, and why.
From then on, every report Kite writes uses the agreed number from the agreed tool and names its source. When someone asks Kite how many signups you had last quarter, the answer comes from the definition your team approved, not from whichever tool was easiest to open. If you correct Kite on how a number should be counted, it records that correction as a rule for future work too.
You can also ask Kite to publish the definitions as a page your team can open from a link, so new hires and agencies read the same rules you do.
Keep the numbers agreeing every month
The gap between your tools never disappears, but it should stay roughly the same size. Kite turns your first comparison into a baseline. If Google Analytics usually sees about 94 percent of the signups in your CRM and suddenly sees 70 percent, something changed, and it's almost always worth knowing what.
Kite can rerun the comparison on a schedule, such as the first Monday of each month, and report whether each gap held steady. When a gap moves, Kite looks for the cause the same way it did the first time. It checks for a date when one tool's count dropped, a new source of imported contacts, or a change in how a campaign was tagged. Then it tells you what changed and what to fix, before the next meeting turns into a debate about the data.
When you want the agreed numbers in front of everyone, Kite can build a dashboard at a stable link that shows each metric from its official tool, with its definition beside it.
What you get
A side-by-side comparison of your numbers
Each metric your team argues about, as every connected tool reports it, for the same dates and time zone.
An explanation of every gap
The causes Kite found, such as duplicate events, manual entries, test accounts, or broken tracking, with how much of the difference each one accounts for.
A metrics definition sheet
For each number, a one-sentence definition, the official tool, the exact report to use, what's excluded, and how far other tools usually sit from it.
Reports that use the agreed numbers
Every report Kite writes for you pulls each number from its official tool and says where it came from.
A recurring check on the gaps
A scheduled comparison that tells you when the usual gap between two tools changes and what caused it.
How to get started
Start with the number your team argues about most. You might tell Kite, "Google Analytics, HubSpot, and Stripe all show different signup numbers for last month. Figure out why and tell us which one to use." Or you might ask, "Help us agree on how we count leads."
Kite already knows how people sign up and buy from you from its research on your business. It proposes the metrics to settle, the date range to compare, and the tools it needs, then asks you to connect them. That usually means your analytics tool, your CRM, and your billing system, each connected by signing in to your own account. Connect Segment as well if it sits between your website and those tools.
Kite reads and compares the data on its own, then brings you the explanation and its proposed definitions. The definitions become official once your team agrees on them. You can then ask Kite to repeat the check every month on a schedule.
You can work with Kite in your browser or in Slack. Scheduled checks arrive as their own conversation in the Kite web app, by email, or in a Slack channel if you've added Kite to Slack.
Integrations used to settle on one source of truth for your metrics
Settling your metrics takes the tools that hold each version of the number. Your analytics tools show what happened on your website, your CRM shows the records your team works from, and your billing system shows who paid. Segment, when you use it, shows whether data moved correctly between them.
See what happened on your website and in your product
Supplies sign-up key events, the users behind them, and the channel, source, and landing page for each, which makes Google Analytics the usual official source for where signups came from.

Supplies the signup events your website or product sends and the distinct people behind them, which often makes PostHog the closest record of accounts actually created.
Count leads and customers where they're recorded

Supplies new contacts with their original source, lifecycle stage, and how each was created, so Kite can separate form signups from imports, manual entries, and your own team.

Supplies new customers, trials, subscriptions, and payments, which makes Stripe the official source for paying customers and revenue and lets Kite match them to CRM contacts by email.
Check that data moves correctly between tools
Common questions
Which signup number should I report when my tools disagree?
Report the number from the tool closest to the signup itself, which is usually your product's own records or your CRM, after removing test accounts and your own team. Use Google Analytics to explain where signups came from rather than to count them, because browser tracking misses some visitors and can count others twice. Whatever you choose, write down the definition and the tool, and report the same one every time. A slightly imperfect number that everyone uses consistently is more useful than a perfect one that changes from meeting to meeting.
How big a gap between Google Analytics and my CRM is normal?
There's no universal figure, because the gap depends on your audience, your cookie banner, and how your tracking is set up. A site whose visitors are mostly developers with ad blockers will see a bigger gap than a site selling to small retailers. The useful number is your own: measure the gap once, learn its causes, and watch whether it stays steady. Kite sets that baseline in the first comparison and checks it on every run after that.
Should the CRM or Google Analytics be my source of truth?
Use both, for different questions. The CRM is the better source for how many leads and customers you have, because it holds the actual records. Google Analytics is the better source for how people found you and which pages they saw first, because it sees the visit itself. Most arguments end once the team agrees which question each tool answers.
Do I need a data warehouse to have a single source of truth?
Not to start. A data warehouse is a database that collects copies of data from all your tools in one place, and it helps larger teams run complex reports across them. A small team can settle its metrics by agreeing on definitions and an official tool for each number, then reading each tool directly. Kite does that comparison against the tools themselves, so you get agreed numbers without building and maintaining a warehouse first.
What happens when we change a definition later?
Update it in the knowledge base and note the date, then report the old and new numbers side by side for one period so everyone can see the effect. Kite can make the change for you when you tell it what's different, and it uses the new definition in every report from then on. When it compares months across the change, it says which definition each month used.
