Alert Slack when a HubSpot deal is stuck in a stage for over 14 days using Make

medium complexityCost: $10-29/mo

Prerequisites

Prerequisites
  • Make account (Free plan works for low volume)
  • HubSpot connection in Make via OAuth
  • Slack connection in Make

Step 1: Schedule daily execution

Create a new scenario. Set the schedule:

  • Schedule type: Every day
  • Time: 08:00

Step 2: Search for stale deals

Add a HubSpot CRM → Search CRM Objects module:

  • Object type: Deals
  • Filter: hs_lastmodifieddate less than {{addDays(now; -14)}} AND dealstage not in closedwon, closedlost
  • Properties: dealname, amount, dealstage, hs_lastmodifieddate, hubspot_owner_id

Make handles pagination automatically — it returns all matching deals as individual bundles.

Step 3: Aggregate into a single message

Add a Text Aggregator module:

  • Source module: Search CRM Objects
  • Text: • *{{dealname}}* — {{dealstage}} — ${{formatNumber(amount; 0)}} — {{round(dateDifference(now; hs_lastmodifieddate; "d"))}}d stale
  • Row separator: newline

This compiles all stale deals into one formatted string.

Step 4: Send to Slack

Add a Slack → Create a Message module:

  • Channel: #sales-pipeline
  • Text:
⚠️ *Stale Deals Alert*
{{Text Aggregator output}}

Step 5: Handle empty results

Click the connection between the Search and Aggregator modules and enable Stop Processing After Empty Aggregation on the Text Aggregator. This prevents an empty Slack message when no stale deals are found.

Alternatively, add a Filter after the Aggregator that checks length(output) > 0.

Step 6: Activate

  1. Click Run once to test
  2. Verify the Slack message
  3. Toggle to Active

Cost

  • Free plan: ~2-3 credits per run (search + aggregator + Slack). 30 runs/month = ~90 credits. Well within the 1,000 free credits.

Need help implementing this?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.