Sign in

Blog · Data quality and reconciliation

Pipeline hygiene: five checks to run on the CRM every week before the forecast call

Five checks on the open pipeline that take a minute from a weekly export and remove most of the argument from the forecast call: close dates in the past, deals without a next step or activity in a stated window, deals in the same stage past the team's own median stage duration, values unchanged since creation on late-stage deals, and duplicate opportunities on one account. Each with the count, the value affected and the rep.

The short answerFive checks from a weekly pipeline export: opportunities with a close date in the past and an open stage; opportunities with no activity or next step in a stated window; opportunities in one stage longer than the team's own median duration for that stage by a stated multiple; late-stage opportunities whose value has not changed since creation; and two or more open opportunities on the same account and product. Each produces a count, the value affected and the owner. Run before the forecast call, the five lists are what the call would otherwise spend its time discovering.

A forecast call spends its first twenty minutes discovering that three of the committed deals have close dates last month, two have not been touched since spring, and one is in the pipeline twice. A weekly export and five checks find all of that on Monday morning. This guide sets out the five, the value each finds, and what to do with the lists.

The five checks

# Check Rule What it catches
1 Past close date Close date < today and stage open Deals nobody updated
2 No activity No logged activity or next step in the stated window Deals nobody is working
3 Stuck in stage Days in stage > multiple × team's median for that stage Deals that are not moving
4 Value never changed Late stage and value equals value at creation Deals never scoped
5 Duplicates Two or more open on one account and product Double-counted pipeline

The rows you need

  • Pipeline snapshot: opportunity, rep, account, product, stage, value, close date, created date, stage entered date, last activity date, next step.
  • Stage durations: team median days per stage, from outcomes.

Opportunity and rep identifiers only.

The assertion

open pipeline = clean + flagged by at least one check

A deal can fail more than one check; it is counted once in flagged, and the checks it failed are listed on its row.

A worked hygiene report

Check Deals Weighted value Share of forecast
Past close date 14 $410,000 9%
No activity in 21 days 31 $880,000 19%
Stuck: over 3× median 22 $620,000 13%
Value unchanged, late stage 9 $290,000 6%
Duplicates 6 pairs $180,000 4%
Flagged, any check 58 $1.7m 36%

More than a third of the weighted forecast is on deals that fail at least one check. The forecast call now starts from the clean 64 percent and the list, rather than discovering the 36 in the room.

Per rep

Rep Open deals Flagged Flagged value Worst check
R-04 31 19 $740,000 No activity: 12
R-11 22 6 $140,000 Past date: 3
R-17 14 2 $30,000

Rep R-04 has twelve deals nobody has touched in three weeks. That is the one-to-one.

Where it goes wrong

Rules from a guess. Thirty days in proposal for a team whose median is forty-five.

Automatic closure. Reps move dates the day before the check runs.

Counts without value. Fourteen stale deals is a number; nine percent of the forecast is a priority.

Run after the call. The lists exist to make the call short.

Every Monday, five lists

Mapped once, the weekly pipeline export produces the five checks, the flagged share of the forecast and the per-rep lists before the call. Covirage builds this from the export as it is. The forecast analysis solution describes the setup, and the slip count guide covers what the past-close-date check turns into over time.

Questions people ask

Why the team's own stage duration?

Because a rule like 'thirty days in proposal' is a guess. The team's own median duration per stage, from deals that reached an outcome, is a fact, and a deal at three times that median is stuck by the team's own standard.

Should stale deals be closed automatically?

No. The list goes to the rep with the count and the value, and the rep updates or closes. Automatic closure hides the problem and teaches reps to move dates instead of deals. The list is the pressure; the rep is the decision.

What is the value affected?

The weighted value of the flagged deals at the CRM's probability. It is what the forecast is carrying on deals that fail a hygiene check, and it is usually a larger share of the forecast than anyone expected.