intermediate45 minutes3 min read

How to auto-archive stale HubSpot deals with no activity for 60 days

Auto-archive stale HubSpot deals after 60 days of inactivity. Compare n8n, Make, code, and Claude Code approaches with setup guides.

How to auto-archive stale HubSpot deals with no activity for 60 days

This recipe includes a downloadable n8n template and Claude Code skill.

Workflow

Daily schedule
Find stale deals
Slack warning to rep
Rep objects?
Yes
Keep deal open
No
Close as lost

Why auto-archive stale deals?

Every sales team has zombie deals — opportunities that stopped moving months ago but nobody bothered to close out. In a typical 100-deal pipeline, 15-25% are stale (60+ days without activity). That's $500K-2M of phantom pipeline inflating forecasts and misleading leadership.

The problem compounds: reps avoid closing their own deals because it hurts their numbers, managers don't enforce it because the manual review takes 30-60 minutes per week, and the pipeline gets less accurate over time. Auto-archiving with a grace period solves this — stale deals get flagged, owners get 48 hours to object, and deals that are truly dead get closed automatically.

How it works

Every approach in this guide follows the same two-phase pattern:

  1. Scan the pipeline daily for deals where hs_lastmodifieddate is older than 60 days
  2. Warn the deal owner in Slack with the deal name, value, and days stale
  3. Wait 48 hours for the rep to update the deal (any activity resets the clock)
  4. Verify the deal is still stale after the grace period
  5. Close the deal as Closed Lost with a stale reason if no activity occurred
What you'll get
HubSpot Deal
Deal NameAcme Corp - Enterprise
Stage
Proposal SentClosed Lost (archived)
Days Stale45 days
Archive ReasonAuto-archived: no activity

What you'll need

Prerequisites
  • HubSpot account with API access (including crm.objects.deals.write scope)
  • Slack workspace with bot access
  • A defined inactivity threshold (e.g., 60 days)
  • A "Closed Lost — Stale" close reason in HubSpot

Which approach should I use?

  • n8n (recommended) if you want the full warn-then-close pattern in a single visual workflow. n8n's Wait node pauses mid-execution for 48 hours, making the grace period trivial to implement. Free self-hosted or $24/mo cloud.
  • Code + Cron if you want zero ongoing cost. Uses a state file to track warned deals across runs. Best for teams with a developer who can maintain the two-phase script.
  • Make if your team already uses Make. Requires two separate scenarios (warn + close) since Make doesn't have a built-in wait equivalent. Data Store tracks warned deals between scenarios.
  • Claude Code if you want human review before any deal is closed. The agent finds stale deals, shows you the list, and waits for your confirmation — ideal for weekly pipeline cleanup sessions.

Select an approach below to see the full step-by-step guide.

Compare approaches

n8n

high
Cost: $0-24/mo
Latency: polling
Code: low
Reliability: 24/7 cloud

Make

medium
Cost: $10-29/mo
Latency: polling
Code: none
Reliability: 24/7 cloud

Code + Cron

medium
Cost: $0
Latency: real-time
Code: high
Reliability: Self-hosted

Claude Code

low
Cost: Usage-based
Latency: on-demand
Code: none
Reliability: On demand

n8n

high

Schedule → Find stale deals → Slack warning → Wait 48h → Close if no objection

Downloadable templateView guide

Make

medium

Scheduler → Search Deals → Filter stale → Slack notify → Delayed close

Cost: $10-29/moView guide

Code + Cron

medium

Two-phase script: warn first, close after grace period

Cost: $0View guide

Claude Code

low

Guided Claude Code skill — ask Claude to find stale deals and archive them with your confirmation

Downloadable skillView guide

Related Recipes

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.