Checklist
The 15-minute dormant-pipeline self-check
You shouldn't have to take our word for the premise. This check takes about fifteen minutes in HubSpot and ends with a number you calculated yourself. You'll need list access and nothing else.
Two ground rules before you start. First, count conservatively at every step; the point of this number is that nobody can argue with it, including you at your most skeptical. Second, write the four counts down with today's date. The check is worth rerunning quarterly, and the trend tells you more than any single snapshot.
The four filters
1. Contacts → filter: create date more than 90 days ago AND (no owner OR no last activity date). Write down the count. These are the leads that were paid for and never worked. If the count looks implausibly high, skim twenty of them; you'll find some ghosts (students, vendors, bounced emails), and you should mentally discount for them, but you'll also find real buyers who asked to be contacted and weren't.
2. Deals → filter: open, in a proposal or quote stage, no activity in the last 30 days. Write down the count and the summed amount. A proposal with no follow-up is the most expensive kind of silence in the portal; everything costly already happened.
3. Deals → filter: open, close date in the past. These have been pushed at least once already. Count and summed amount. For the fuller treatment of why pushed dates predict quiet deaths, see a pushed close date is a decision nobody made.
4. Contacts and deals → filter: owner is a deactivated user. Count both. Every departure leaves a layer; this filter reads the strata.
The honest multiplication
Take the filter-1 count. Multiply by your worked-lead close rate. If you don't know it, use 3%, which is deliberately low. Multiply by your average deal size. Add the summed amounts from filters 2 and 3 at one-tenth of face value. That's a floor, not a forecast.
Worked example, illustrative numbers: 420 unworked contacts × 3% × $18K is roughly $227K. Add $260K of stalled proposals and $180K of past-date deals at one-tenth each, $44K total. Floor: about $271K. Your inputs will differ; the arithmetic won't.
Why one-tenth of face value on the deal buckets? Because face-value deal amounts are the most inflated numbers in any CRM, and this check should be immune to the accusation of optimism. The real recoverable share of stalled deals is usually higher; the audit establishes it record by record instead of by ratio. The reasoning behind counting this way is laid out in why we count conservatively.
Reading your result
A floor under 2% of annual revenue: your portal is tighter than most, and the honest next step is nothing. Rerun the check next quarter and guard the standard that got you here.
A floor between 2% and 5% of revenue: ordinary, which is not the same as fine. The four filters just showed you where it concentrates; the corresponding fixes are the SLA, the next-step rule, and an owner for re-entry, all covered across the four places revenue leaks.
A floor above 5% of revenue: the pile is material, and the constraint on recovering it is attention, which is exactly what your team already lacks (that's how the pile formed). This is the profile where a managed recovery system pays for itself fastest.
If the result is a number you can shrug at, your team is running a tight portal. Close this tab with our respect. If it isn't, the Revenue Leak Audit does this properly: every record inspected, exclusions applied, and a figure you can check against your own portal, free.
Apply the same analysis to your CRM.
Request the free audit