
CRM Cleanup: How to Find and Close Stale Deals
How to run a CRM cleanup: setting an inactivity threshold, three queries that find stale deals, running a bulk close, and rules that stop them piling up.
The most misleading number in any CRM is the total value of open deals. Inside that number sit records where nothing has happened for months: the customer stopped replying, the project got shelved, the rep left the company. Because nobody closed them, they all still look open. CRM cleanup is the work of finding and closing those records, and it is the fastest fix available for a broken forecast.
What counts as a stale deal?
Keep the definition simple: an open deal that has received no activity record, stage change or value update for a defined period. The distinction that matters is between stale and slow. A deal with a long sales cycle can sit in the same stage for months while conversations are still being logged. A record that sits there leaving no trace at all is not moving.
Why they pile up
- Closing is psychologically hard. Marking something lost feels like failure; leaving it open preserves hope.
- Quota pressure rewards keeping deals open. Close one and the rep's open number drops.
- Nobody is assigned to close them. Unowned work does not get done.
- Records belonging to departed reps are never reassigned; they simply sit there.
The result is a forecast that inflates systematically. Leadership plans against a number that will not arrive.
How to set your inactivity threshold
Do not adopt a generic number; derive the threshold from your own data. Look at deals won in the last 12 months and find the longest gap between two activities. If 90 percent of won deals never exceed a 25-day gap, set your threshold somewhere in the 30 to 45 day range.
Differentiating by stage is better still: 21 days is a reasonable threshold early in the process, while 60 days may be perfectly normal at the contract stage.
Three queries that find them
- Last activity date older than the threshold. This is your base list.
- Close date in the past but still open. This group is almost always dead, and it corrupts the forecast directly.
- Stage entry date far in the past. If there is activity but the stage has not changed in months, that is stalling rather than progress.
Start with the records that appear on all three lists. That is where the uncontroversial cases are.
One last pass before you close
Before any bulk close, send the list to the reps with a single question: which of these is genuinely alive? Give them five working days. Every record without a reply gets closed.
For anything claimed to be alive, set one condition: there must be a next step with a date on the calendar. An alive record with no dated next step is just a stale record with a new label.
How to run the bulk close
Closing should produce data, not destroy it:
- Mark the loss reason with the closest real cause you can, not a generic inactivity option.
- Add a separate tag to the cleanup batch so you can filter it out of reports later. Otherwise that month's loss rate becomes meaningless.
- Export the list before you close anything.
- Do not delete records that might revive. Close them and move them to a marketing nurture list.
The common mistake: reading cleanup as a loss rate
After a bulk close, that month's loss rate spikes and the team panics unnecessarily. But those deals were already lost; they simply were not visible in the system.
This is why the cleanup batch needs its own tag, and why the monthly loss report should exclude it. Skip this and nobody will agree to run a cleanup again.
Rules that stop it happening again
Run cleanup as a one-off project and you will be back in the same place in six months. Three rules are enough:
- Every deal must have a dated next step, as a required field.
- Records past the threshold get flagged automatically on the rep's weekly list.
- A 15-minute monthly check: everything past the threshold is either closed or given a dated next step.
Where to start
Today's job: list every deal whose close date has passed but is still open. That single list usually explains a meaningful share of your open pipeline value and makes the case for cleanup impossible to argue with.
Closync shows your stale deals broken down by threshold and stage on a single screen.

