When a pipeline number comes in short, there is a predictable chain of meetings. Someone pulls the funnel report, stages get audited, reps get coached, and the narrative lands on MQL-to-SQL conversion or late-stage deal velocity. The assumption is that the gap lives between two funnel stages, and fixing the handoff will recover the number.
My experience is that this is the wrong starting point for most teams. The revenue leak we spend the most time diagnosing at Checkpoint GTM isn't in the funnel at all. It's in the CRM data underneath it.
Let me explain what I mean by that.
What the data problem actually looks like
There are three categories that come up in every CRM audit we run. I call them the three dead weights: duplicates, inactive contacts, and unrouted leads.
Duplicates are the most visible but the hardest to quantify. A contact created from a form fill sits alongside the same person created from a list import six months earlier. Neither is enriched. Neither is owned. A rep eventually calls one; the other sits permanently in a "new" lifecycle stage. When you query pipeline, that contact registers as never-touched. It looks like a lead that fell through the cracks. It is, but the crack was created by bad data, not a broken process.
Inactive contacts are trickier. These are real people who at some point opted in, attended a webinar, or downloaded something, and then went completely cold. The CRM has no mechanism to flag them as no longer worth nurturing, so they stay in the database, inflating your totals and your email bounce rates. Buyers we talk to describe SDRs spending a material portion of each week calling numbers that have changed or emailing addresses that bounce. That time is a direct revenue leak even if it never appears in a conversion report.
Unrouted leads are the most expensive and the most fixable. These are leads that made it into the CRM but were never assigned to a rep, never placed into a sequence, never touched. Sometimes the routing rule broke. Sometimes territory assignments were never configured for a new segment. Sometimes a trade show import landed in the database with no owner field set. These leads believe they raised their hand. The company has no idea they exist. There is no revenue leak more clear-cut than a qualified lead that nobody called.
Why this revenue leak stays unmeasured
The reason this specific revenue leak doesn't show up in standard reporting is that CRMs are built to report on activity. They track what happened. They don't surface what didn't happen. An unrouted lead doesn't trigger a missed-activity alert. A duplicate doesn't create a visible gap in a stage-transition report. A dead contact doesn't register as an anomaly anywhere.
For better or worse, most revenue reporting is built on top of this flawed foundation. When the dashboards look reasonable, there is no signal that anything is wrong. The revenue leak is invisible by design.
I've seen this in CRMs that look well-maintained on the surface: consistent naming conventions, lifecycle stages filled in, a real segmentation structure. Then you pull a query of contacts created in the last ninety days with no owner and no activity, and you find hundreds of leads that have never been touched. The system looked clean. The data wasn't.
What a data audit actually surfaces
The way we frame this work at Checkpoint GTM is as a data audit first, a funnel audit second. The sequence matters. There is no point optimizing lead scoring if the same lead exists three times in the database. There is no point building a nurture track if 40% of the contacts in a given segment haven't opened an email in eighteen months.
In practice, a CRM data audit has four components. First, a duplicate analysis: how many contacts share an email domain, a company name, or a phone number, and what is the merge strategy? Second, a contact health check: engagement age, last activity date, deliverability status. Third, a routing audit: are there leads in any queue with no owner assigned, and how old is the oldest one? Fourth, a lifecycle integrity check: are contacts stuck in stages they should have exited, which usually signals that a process broke and nobody noticed.
The numbers in these audits are almost always surprising. A rule of thumb I use is that in a CRM that hasn't been audited in over a year, somewhere between 15% and 30% of the contact database is either duplicated, completely inactive, or effectively unowned. That is the population your pipeline is being generated from. That is the revenue leak that doesn't appear on any dashboard.
I don't have a great answer for why teams let this accumulate as long as they do. Some of it is that fixing data is unglamorous work. Some of it is that the market is slowly waking up to the problem: the tools available to embedded RevOps teams now treat this as a front-door diagnostic rather than a cleanup afterthought. But mostly, nobody owns the audit until someone decides to.
The case for fixing data before adding headcount
The part I push hardest on with CROs and founders is sequencing. Adding a new SDR into a CRM with 20,000 unrouted leads and a 25% duplicate rate does not fix the revenue leak. It dilutes it. The SDR calls the same people as the last SDR, works from the same inflated lists, and hits the same quality problems. The reporting eventually shows lower productivity per rep, and the instinct is to add training or tooling.
What it needs is a data audit.
The standard GTM implementation approach in this market leads with funnel optimization or technology deployment. Our starting point is different: you cannot build a reliable revenue engine on unreliable data. Fix the foundation, and the funnel math changes on its own. That is the work we document and the work we do alongside teams, not at a distance from them.
If you want to see what that looks like in practice, the details are in our insights archive. The sequence is almost always the same: data audit, then funnel work, then headcount or tooling decisions. In that order.
