River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Sales Pipeline Hygiene Checklist

Every rule scored on the win-rate gap between the deals that pass it and the deals that fail it.

Free download  ·  No account needed

Eight rules, 1,064 closed deals, one column that decides. Base win rate 31.4%.

RuleFires onFailedPassedGap
Three or more close-date pushes recorded6.5%10.1%32.9%22.8
Time in stage past twice that stage's own median20.9%14.7%35.8%21.1
Close date written by the platform, never edited40.9%19.4%39.7%20.3
Close date already in the past17.0%21.8%33.3%11.5
No logged activity in 21 days36.0%26.1%34.4%8.3
Next step field blank51.3%30.8%32.0%1.2
Contact role blank on the primary contact55.2%31.1%31.7%0.6

The bottom two are on every hygiene checklist published and had been enforced here for three years. They fire on more than half the book and separate by roughly one point. The top three separate by more than twenty and none of them can be computed from a report the platform ships with.

Every pipeline hygiene checklist published is a list of fields that should not be blank. Next step, contact role, amount, close date in the future. Circulate it, nudge the reps, watch the completeness percentage climb past ninety. The percentage climbing is not the same thing as the forecast getting better, and on a real book those two numbers move independently. Nobody publishes the win-rate gap behind any of those rules, which is the only number that would say which ones matter.

Ravensgate Software scored all eight rules it enforced against four quarters of closed deals. Next step blank fired on 51.3% of the open book and separated win rates by 1.2 points. Contact role fired on 55.2% and separated by 0.6. Both had run for three years. The three rules that separated by more than twenty points were invisible to every standard report. The largest was a date nobody typed: a deal created in an open stage with no close date gets the last day of the month.

So this pack scores each rule before anybody enforces it, and the three survivors read field history rather than field values. A close date with an edit count of zero. Every push counted, not only the ones crossing a reporting boundary. Staleness at twice each stage's own median. Reweighted at their measured rates, a $9.4M commit becomes $6.57M. It pairs with the forecast call that reads that number, with reconciling a rep's own sheet against the export and with two revenue views that agree.

The three rules that carry weight, and what they cost the forecast

One quarter in flight for a fictional B2B software company: 1,144 open deals worth $47.3M, 1,064 closed deals behind the measurements, and a $9.4M commit submitted. Every figure on these sheets reconciles against the others.

Hygiene Rules

Every rule applied retroactively to 1,064 closed deals from the trailing four quarters, evaluated at the state each deal was in while open. The separation column is the win-rate gap between the deals that passed and the deals that failed. Base win rate 31.4%.

RuleHow it is computedOpen dealsOpen valueShare of bookFailed itPassed itSeparationIn the submissionVerdict
Close date equals the last day of the creation month and has never been editedClose date field history joined against create date468$17,600,00040.9%19.4%39.7%20.3 pts$1,340,000Keep, and lead with it
Three or more close-date pushes recordedCount of close-date edits moving the date later, from field history74$4,200,0006.5%10.1%32.9%22.8 pts$4,200,000Keep
More than twice the stage's own median days in stageTime in current stage against the median for that stage239$11,200,00020.9%14.7%35.8%21.1 pts$5,100,000Keep
Amount blank or zero on a deal past the demo stageField completeness, restricted to late stages380 by definition3.3%n/an/aNot forecastableNot weightableKeep
No logged activity in 21 daysLast activity date against today412$15,800,00036.0%26.1%34.4%8.3 ptsInformationalKeep for the review, not the forecast
Close date in the pastClose date against today194$6,300,00017.0%21.8%33.3%11.5 ptsAlready countedMerge into the undated rule
Next step field blankField completeness587$22,400,00051.3%30.8%32.0%1.2 ptsNothingCut from the forecast review
Contact role not filled on the primary contactAssociation completeness631$24,100,00055.2%31.1%31.7%0.6 ptsNothingCut from the forecast review

Eight tested, five kept, one merged, two cut. The two cut fire on more than half the book each, which is the other reason they cannot carry a weight: at that share the two sides are no longer a signal and a baseline, they are two halves of the pipeline. Both stay on the standard permanently with the number attached, because a retired rule with no figure beside it comes back every time somebody writes a fresh checklist.

Close Date Slippage Log

Pushes counted from the close-date field history, every edit that moved the date later, whether or not it crossed a reporting boundary. 1,417 pushes recorded across 1,064 closed deals.

Pushes recordedDeals closedWonWin rateAgainst the 31.4% baseTotal pushesOpen deals nowOpen value nowWhat the forecast does with them
040217844.3%1.41x0486$18,900,000Weight at 44.3%. The only bucket a stage probability roughly fits
12899633.2%1.06x289341$14,200,000Weight at 33.2%. One push is normal and carries a measurable cost
21784123.0%0.73x356243$10,000,000Weight at 23.0%. Below base, so it dilutes coverage rather than building it
31061413.2%0.42x31844$2,480,000Remove from commit. 13.2% is not a commit at any stage
4 or more8955.6%0.18x45430$1,720,000Remove from the forecast. Closer to zero than to any stage probability
All buckets1,06433431.4%1.00x1,4171,144$47,300,000The book reweighted by push count rather than by stage

Never pushed wins at 44.3% and four-or-more at 5.6%, a factor of 7.9 on the same book. Only 486 of the 1,417 pushes crossed a quarter boundary, so 65.7% of the pushing was invisible to the platform's own push report, which by its published definition only counts a date leaving the selected timeframe. Of the 89 worst deals, 27 never appeared in a quarterly push report at all and one of those 27 won.

The forecast correction is a union, not a sum. Inside the submitted $9,400,000: 23 undated, 74 pushed three or more times, 96 stale against their stage median. Fourteen deals are both undated and stale, 51 are both pushed and stale, and undated-and-pushed is empty by construction, because a push is an edit and the undated test requires zero edits. Union: 128 deals worth $6,980,000 against a naive sum of 193. Those 128 contributed $4,120,000 to the submission and are worth $1,290,000 at their measured rates, so the commit corrects from $9,400,000 to $6,570,000, a 30.1% correction.

Stale Deal Report

Thresholds set at twice each stage's own median days in stage, computed from closed-won history. The flat-rule columns stay on the sheet permanently, because they are the argument for the per-stage numbers.

StageMedian days in stageOpen dealsOpen valueStale pastA flat 30-day rule flagsThe stage-relative rule flagsFlagged by the flat rule where 30 days is normalMissed by the flat ruleValue missed
Discovery34486$14,900,00068 days291642270$0
Demo22318$13,200,00044 days14171700$0
Proposal19214$11,400,00038 days8846420$0
Negotiation11126$7,800,00022 days4158017$1,180,000
All stages1,144$47,300,00056123933917$1,180,000

The flat rule fires on 561 deals and 339 of them sit in stages where thirty days is normal, which is why the list stopped being read. It also misses 17 negotiation deals worth $1,180,000 that are past twice the eleven-day median for that stage, and those 17 are the most urgent deals in the book. No threshold fixes both problems, because one number cannot serve a 34-day stage and an 11-day stage at once.

Deals past their stage threshold closed at 14.7% against 35.8% for deals inside it, so leaving them at the stage default overstates the forecast by a measurable amount. The review list is sorted by value at risk rather than by days stuck, because the review has finite time and the ordering decides what actually gets looked at.

What the pack does that a hygiene checklist does not

01

Scores every rule on measured win-rate separation

Each rule applied retroactively to four quarters of closed deals, evaluated at the state each deal was in while open. The gap between the pass side and the fail side is the score, and everything else is context.

02

Cuts the rules that measure tidiness, by name and with the number

Next step blank at 1.2 points on 51.3% of the book. Contact role at 0.6 points on 55.2%. Both stay on the standard permanently with their figures, because a retired rule with no number beside it comes back.

03

Proves a close date was written by the platform, not a person

Two conditions joined: the date equals the last day of the creation month, and the field has no edit recorded against it, ever. That is certainty rather than inference, and it was 37.2% of open pipeline value.

04

Counts every push, not just the ones crossing a boundary

A platform push report only fires when a date leaves the selected timeframe, so 65.7% of the pushing here was invisible to it. Counting edits in the field history turns a binary flag into a curve from 44.3% down to 5.6%.

05

Sets staleness from each stage's own median

A flat thirty-day rule fired on 561 deals, 339 of them in stages where thirty days is normal, and missed 17 negotiation deals worth $1.18M stuck past twice their stage's median. Those 17 were the urgent ones.

06

Corrects the forecast as a union rather than a sum

The defect sets overlap, so the correction subtracts the intersections: 128 deals worth $6.98M against a naive sum of 193. Reweighted at measured rates, a $9.4M commit becomes $6.57M.

07

Reports completeness by value beside completeness by count

The team read 88.7% complete by record count and 61.6% by value. One rep sat at 94.0% by count and 38.0% by value, which by count made them look like the second cleanest book on the team.

How the pack runs

  1. 1

    Send the exports

    The open deal or opportunity export, closed deals from the trailing four quarters, and the close-date and stage field history. The history is the one worth pushing for, because two of the three rules that matter cannot be computed without it.

  2. 2

    Score every rule against closed history

    Candidates and the rules already in force together, each with the share of the book it fires on and the win-rate gap it produces. The cut list usually arrives first and is the most immediately useful output.

  3. 3

    Run the three that survive

    Defaulted close dates proven from an edit count of zero, pushes counted per deal and bucketed with their win rates, and per-stage staleness thresholds computed from each stage's own median dwell time.

  4. 4

    Correct the commit and brief the managers

    The union of the flagged deals reweighted at their measured rates, then one list per manager sorted by value at risk, with platform-written values routed upstream instead of onto a rep's list.

Frequently asked questions

Why cut the next-step rule? Everyone enforces it.

Because it fired on 51.3% of the open book and separated win rates by 1.2 points. Deals with a blank next step closed at 30.8% against 32.0% for deals with one. There may be good reasons to want the field filled in. Forecast accuracy measurably is not one of them.

How can a close date be wrong if nobody touched it?

That is exactly why it is wrong. HubSpot documents that a deal created in an open stage with no close date gets the last day of the month. Nobody committed to it. Every rule checking whether the close date is in the future passes all 468 of them, which was 37.2% of open value here.

Our CRM already reports pushed deals. What is missing?

Two things. The report's own definition only counts a close date moving from inside the selected timeframe to outside it, so three pushes inside one quarter show as nothing. And it is binary, so one push and six pushes arrive identical when they close at 33.2% and 5.6%.

Why not just use a 30-day stale rule?

It fails in both directions at once. Ours fired on 561 deals, 339 in stages where thirty days is normal, so nobody read the list. It also missed 17 negotiation deals worth $1.18M past twice the eleven-day median for that stage. No single threshold serves a 34-day stage and an 11-day stage.

Does this work on Salesforce, or only HubSpot?

Both, and any warehouse table holding field history. The three mechanisms are platform independent: an edit count of zero on a date field, a count of edits moving a date later, and time in stage against that stage's own median. Confirm your platform's creation default before trusting the month-end match.

We do not have field history. What can still be done?

Current-state findings, and the pack says plainly which two rules are blocked rather than producing a thinner pass and calling it complete. Field histories are commonly retained for a fixed window, so check yours before trusting a four-quarter figure. A CRM audit covers what the export alone can show.

Is this the same as fixing our stage definitions?

Different job, and worth doing first if your stages have no exit criteria, because a median dwell time per stage means nothing while reps disagree on what each stage is. That is lifecycle stage definition work. This pack takes the stages as they are and measures against them.

Find out which of your hygiene rules earn their place

Send an opportunity export, four quarters of closed deals and the close-date field history, and get every rule scored on what it separates.

Get the template