Why "stuck in stage" is the most-asked sales-ops question
When a deal spends too long in a single stage, your buyer is doing one of three things:
- Comparing you to two competitors — late-stage silence is the strongest signal of an active eval.
- Quietly de-prioritizing the project — internal champion lost air cover.
- Already gone — and the rep hasn't updated the stage out of either denial or laziness.
All three lose deals. None of them get fixed by waiting another two weeks. The defense is to know which deals are stalled right now — not at the end of the quarter when forecast attainment forces a clean-up.
What stage-stagnation looks like beyond the native flag
Two layers of signal:
- Time in current stage > stage-specific threshold. Not a single team-wide threshold — the right number for Lead is wildly different from Negotiation.
- Time in stage AND no recent activity. A deal that's been in Negotiation for 21 days but had a meeting yesterday is fine. A deal that's been in Negotiation for 21 days with no activity is not.
The combination of "old in stage + recently silent" is the strongest stalled signal. The native HubSpot flag covers the first half well; you have to layer the activity check on top.
Why the native flag misses the deals that matter most
hs_is_stalled uses a single team-average baseline per stage, which has two known failure modes:
One-size-fits-all baselines. If your top reps close in 8 days and slow reps take 60, the average gets dragged toward the slow end — a 14-day stall for a fast rep won't trigger the flag even though it's a clear anomaly for them. There's no per-rep adjustment.
Late-stage stalls weighted the same as early-stage. A deal stuck 30 days in Lead is probably dead. 14 days in Negotiation is catastrophic. The native flag treats both as "stalled" with no escalation tier.
The deeper issue is that stalling isn't one signal — it's a family of them: time in stage, days since last activity, close date already pushed, buyer not replying to email. A deal failing one might be fine. A deal failing three is dying. To detect compound stalls you need a custom calculation property (Operations Hub Pro+) or a rules engine running outside HubSpot. The native flag is fine as a starting filter — not as a finished answer.
The manual HubSpot recipe
Here's the closest-to-good answer using only native filters. Combines the stall flag with an activity-recency check.
- Open the Deals tabSales → Deals → Create view. The view will track stalled deals across every pipeline you have.
- Add filter: Is deal stalled is trueFilter by Deal properties →
Is deal stalled→ 'is true'. This is HubSpot's native check against your team's stage-time average. - Add filter: Deal stage is not closed won/lostAND group →
Deal stage→ 'is not any of' → 'Closed Won', 'Closed Lost'. Closed deals don't matter. - Add filter: Last activity date is more than 7 days agoAND group →
Last activity date→ 'is more than' → 7 days ago. The combination of 'stalled' AND 'silent' is the strongest signal. - Sort by amount, descendingBiggest deals at the top. Triage starts there — a stalled $400K deal needs a different conversation than a stalled $5K deal.
- Save and pinSave as 'Stalled deals'. Pin to your sales-ops dashboard. Review weekly with each rep on their stalled rows.
What Bloated does instead
Stalled deals — by stage, by activity, by repeat-push history.
Bloated layers HubSpot's hs_is_stalled flag with per-stage thresholds (Lead 14d, Discovery 21d, Negotiation 7d) and activity-recency, so you see *why* each deal is flagged. The compound signal — old in stage AND recently silent AND close-date pushed — is the strongest stalled indicator in your data. Pair with the suggested action (push date with intent, escalate to manager, mark lost) for a clean weekly review.
hs_is_stalled · HubSpot deal property