How to alert Slack when a HubSpot deal is stuck in a stage for over 14 days
Flag stale HubSpot deals in Slack automatically. Compare 5 approaches — n8n, Zapier, Make, code, and Claude Code — with costs and trade-offs.

This recipe includes a downloadable n8n template and Claude Code skill.
Workflow
Why track stale deals?
Stale deals are the silent killer of forecast accuracy. A pipeline full of deals that haven't moved in 2-3 weeks looks healthy on paper, but in practice, many of those deals are dead — the prospect ghosted, the budget got cut, or the champion left the company. Forrester research found that 25-40% of pipeline deals at any given time are effectively dead but haven't been marked as lost.
The cost is real: inflated forecasts lead to bad hiring decisions, missed revenue targets, and false confidence in board meetings. Reps avoid disqualifying deals because it hurts their pipeline coverage numbers, and managers don't catch it because they're reviewing 50+ deals across the team.
Automated stale deal alerts solve this by surfacing deals that haven't been touched in 14+ days. When a rep sees their name on a stale deal alert in a shared Slack channel, they either advance the deal or disqualify it — both of which improve forecast accuracy.
⚠️ Stale Deal Alert
Deal: GlobalTech Platform Upgrade
Amount: $45,000
Stage: Qualification
Days inactive: 18 days
Owner: Marcus Rivera
Last activity: Feb 14, 2026
How it works
Regardless of which tool you use, every approach follows the same pattern:
- Search for inactive deals — query HubSpot for deals where
hs_lastmodifieddateis older than your threshold (e.g., 14 days ago), excluding closed-won and closed-lost stages. - Resolve context — look up the human-readable stage name (HubSpot returns IDs like
closedwon, not labels), calculate how many days each deal has been stale, and pull in the deal amount and owner. - Alert the team — post a formatted message to Slack listing each stale deal with enough context for the rep or manager to take action.
All approaches run on a schedule (daily or weekly) rather than reacting to real-time events. Stale deal detection is inherently a batch operation — you're checking the current state of the pipeline, not responding to a specific trigger.
What you'll need
- HubSpot account with API access
- Slack workspace with bot access
- A defined threshold for "stale" (e.g., 14 days with no activity)
Which approach should I use?
- n8n (Recommended) — visual workflow editor with a Code node for grouping deals by owner. Self-hostable for free. Best for teams who want a visual builder with flexibility to customize the output format.
- Zapier — requires Professional plan for the Schedule + Webhooks + Code steps. Best for teams already on Zapier who want a quick setup, but the multi-step configuration is more complex than simpler recipes.
- Make — visual builder with built-in search, aggregation, and scheduling. Best for teams already using Make or who want a no-code approach with lower pricing than Zapier.
- Code + Cron — Python or Node.js script on a cron schedule. Best for engineering teams who want full control, pagination support for large pipelines, and zero ongoing cost.
- Claude Code — a guided Claude Code skill with workflow guidelines and API references. Ask Claude to audit your pipeline for stale deals conversationally. Best for on-demand checks during pipeline reviews — "which deals in Negotiation haven't moved in 3 weeks?"
Choose your approach
Select an approach below to see the full step-by-step guide.
Compare approaches
| Approach | Complexity | Cost | Latency | Code | Reliability |
|---|---|---|---|---|---|
n8n | medium | $0-24/mo | polling | low | 24/7 cloud |
Zapier | medium | $20-50/mo | real-time | none | 24/7 cloud |
Make | medium | $10-29/mo | polling | none | 24/7 cloud |
Code + Cron | medium | $0 | real-time | high | Self-hosted |
Claude Code | low | Usage-based | on-demand | none | On demand |
n8n
mediumZapier
mediumMake
mediumCode + Cron
mediumClaude Code
lown8n
mediumSchedule → Search deals → Code node to find stale → Slack alert per deal
Zapier
mediumSchedule → Webhooks to HubSpot search → Code to filter stale → Slack
Make
mediumScheduler → Search Deals → Filter by date → Iterator → Slack DM per owner
Claude Code
lowGuided Claude Code skill — ask Claude to find stale deals and post alerts conversationally, or run via Cowork in the background
Related Recipes
How to send a Slack alert when a HubSpot deal changes stage
HubSpot + Slack
How to request discount approval in Slack for HubSpot deals
HubSpot + Slack
How to notify Slack when a HubSpot deal over $50K is created
HubSpot + Slack
How to send a Slack alert when a Pipedrive deal changes stage
Pipedrive + Slack
Frequently Asked Questions
Looking to scale your AI operations?
We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.