
Ask three people in the same business how many leads came in last month and you will get three numbers. The ad platforms say 1,431. The CRM says 1,284. Finance says 1,190. Nobody is lying, nobody has made a mistake, and the gap will still be there next month.
This is the most common thing I get called about, and it is almost never a data problem. It is a definitions problem wearing a data problem's clothes.
The three numbers are all correct
Each system is answering a slightly different question, faithfully.
The ad platform counts a conversion — someone who submitted a form, attributed back to the click that brought them, in the platform's own attribution window. It will happily count a conversion that happened last month against a click from the month before.
The CRM counts a record — a row that got created. If the form fired twice, that is two rows unless something deduplicates them. If a salesperson typed one in by hand, that is a row with no campaign attached at all.
Finance counts something narrower still: a lead that reached a stage worth recognising, in the period the accounting calendar says it belongs to, excluding anything later marked as junk.
Three questions, three answers. The systems are not disagreeing. They were never asked the same thing.
Five reasons the gap appears
In practice the difference is almost always some combination of these.
Different definitions of the object. "Lead" means a conversion in one system, a contact record in another and a qualified opportunity in the third. Until someone writes down which one the business means, every report is a coin toss.
Different clocks. The ad platform reports in its own timezone and back-dates conversions to the click. The CRM stamps rows in UTC. Finance closes on the last working day. A lead created at 11pm on the 31st lands in different months depending on who you ask.
Different filters. Someone, at some point, added "exclude test records" to one report and not the others. That filter is now invisible institutional knowledge held by one person.
No shared key. The ad platform knows a click ID. The CRM knows an email address. Finance knows an invoice number. If nothing carries a common identifier from one end to the other, the systems cannot be reconciled — only compared, which is not the same thing.
Manual repair. Every month someone fixes the numbers in a spreadsheet to make them agree for the board pack. The spreadsheet is the only place the reconciliation exists, and it is never written back.
What agreeing should actually mean
Here is the part that saves the most time: the numbers do not need to be identical. They need to be explicable.
A business with healthy reporting can say: the ad platforms report 1,431 conversions; 94 of those were duplicate submissions and 53 were attributed to a click from the prior month, which is why the CRM holds 1,284 records; of those, 94 were marked junk, which is why finance recognises 1,190.
That is a reconciliation. Every number is reachable from every other number, and the difference has a name. Chasing a single figure that every system reports identically is a waste of a quarter — the systems have different jobs and should be allowed to do them.
How the gap gets closed
The sequence matters more than the tooling.
- 01Agree the definitions first, in writing. One page. What is a lead, what is qualified, what counts as won, and which timezone and calendar each is measured in. This meeting is uncomfortable and it is the whole job. Do not skip to the dashboard.
- 01Give every record a key that survives the journey. A click identifier captured on the form, carried into the CRM, kept on the opportunity, and present on the payment. Without this, everything downstream is estimation.
- 01Land the raw data somewhere neutral. Not in a report. A warehouse where the ad platform export, the CRM export and the finance ledger sit side by side, unmodified, with the timestamps they arrived with.
- 01Model the differences explicitly. Build the reconciliation as a table, not a footnote: total, minus duplicates, minus out-of-period, minus junk, equals recognised. When a number moves, that table tells you which line moved.
- 01Validate on a schedule, and alert on drift. If the gap between two systems moves outside its normal range, someone should hear about it that morning — not discover it in the board pack three weeks later.
- 01Stop the manual repair. Once the model reproduces the reconciliation, delete the spreadsheet. If it survives, people will keep using it and the model will quietly rot.
Where to start on Monday
You do not need a project to find out how bad it is. You need ninety minutes.
Pick one month that is already closed. Get the lead count for that month from each of your three systems. Write the three numbers on a whiteboard, then try to explain the difference out loud, in specific terms — not "attribution windows" but "these 53 records".
One of two things happens. Either you can account for the difference, in which case your problem is that the reconciliation lives in someone's head and needs to be written into a model. Or you cannot, in which case you now know exactly which handoff to look at first.
Both outcomes are worth the ninety minutes. The version where nobody does the exercise is the version where the board pack keeps getting assembled by hand.
Common questions
- Why do my CRM and finance system report different lead numbers?
- Because they count different objects over different periods. The CRM counts records created; finance counts leads that reached a recognised stage inside the accounting period, excluding anything later marked junk. Both are correct answers to different questions.
- Should the numbers match exactly?
- No. They should be explicable. A healthy reconciliation states the total, then names each difference — duplicates, out-of-period conversions, junk records — until one number reaches the other. Chasing identical figures across systems with different jobs wastes a quarter.
- What is the first thing to fix?
- The definitions, written down on one page: what a lead is, what qualified means, what counts as won, and which timezone and calendar each is measured in. Every technical fix downstream depends on that agreement existing first.
- How long does it take to reconcile marketing, CRM and finance data?
- Finding out how large the gap is takes about ninety minutes with one closed month and three exports. Building a model that reproduces the reconciliation automatically is usually a matter of weeks, and depends mostly on whether a shared key already survives the journey between systems.
- Data reconciliation
- CRM
- Revenue operations
- Reporting