Daily
Flag HubSpot deals that have gone quiet
Every morning your sales channel lists deals with no activity in 21 days, with the owner tagged so they can follow up.
- Runs
- Daily
- Apps
- HubSpot, Slack
- AI
- Not needed
- Access
- HubSpot deals read(+write); Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: every morning, find HubSpot deals with no activity in the last 21 days and post them in #sales with the owner tagged.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A sales manager reviews the pipeline before the weekly forecast and finds a handful of deals nobody has touched in a month. Some are dead, some just slipped through the cracks while a rep was busy with a bigger account. By the time they are noticed, the buyer has often moved on.
This automation checks every open deal each morning and posts the ones that have gone quiet, tagging the owner. Slipping deals are caught while a follow-up can still save them.
What you get out of it
Deals are rescued before they go cold
Three weeks of silence is often the point where a buyer starts looking elsewhere. A nudge at that moment gives the rep a real chance to re-engage.
A more honest forecast
Deals that sit untouched inflate the pipeline. Surfacing them pushes reps to update, move or close them, so the forecast reflects reality.
Owners hear about their own deals
Tagging the owner makes the follow-up personal and specific, without the manager chasing each rep individually.
No pipeline review needed to spot it
The check runs every day, so stale deals are noticed when they cross the line, not at the end of the quarter.
How it works
What happens, step by step
Every morning ClickRuntime looks at your open deals in HubSpot.
It picks out deals with no logged activity in the last 21 days.
A list of those deals, with their value and owner, is posted in your #sales Slack channel with each owner tagged.
Before it runs live
- Connect HubSpot
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Google Sheets
- Combine it with other HubSpot and Slack steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify
DAYS = 21
OWNER_SLACK = {"12345": "<@U01ABCDEF>"} # HubSpot owner id -> Slack mention
@on_trigger
def run(event):
h = {"Authorization": f"Bearer {credentials.secret('HUBSPOT_API_KEY')}"}
cutoff = int((datetime.now(timezone.utc) - timedelta(days=DAYS)).timestamp() * 1000)
body = {"filterGroups": [{"filters": [
{"propertyName": "notes_last_updated", "operator": "LT", "value": cutoff},
{"propertyName": "hs_is_closed", "operator": "EQ", "value": "false"}]}],
"properties": ["dealname", "amount", "hubspot_owner_id"], "limit": 100}
deals = http.post("https://api.hubapi.com/crm/v3/objects/deals/search", headers=h, json=body).json()["results"]
if not deals:
return {"stale": 0}
lines = []
for d in deals:
p = d["properties"]
owner = OWNER_SLACK.get(p.get("hubspot_owner_id"), "unassigned")
lines.append(f"• {p['dealname']} (${float(p.get('amount') or 0):,.0f}) {owner}")
notify.slack(f"Deals with no activity in {DAYS} days:\n" + "\n".join(lines), channel="#sales")
return {"stale": len(deals)}FAQ
Common questions
What counts as activity?
Can I use a different number of days?
Can it close deals automatically?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Remind account owners about upcoming contract renewals in Slack
Every Monday, #renewals lists the HubSpot companies renewing in the next 60 days, each tagged with its owner.
See how it worksRemind deal owners to follow up on quiet proposals
Each morning, reps get a Slack message about their deals in Proposal sent with no activity for five days.
See how it worksAlert on large HubSpot deals
Every 15 minutes, deals over a set value that changed stage are posted to your sales channel.
See how it worksKeep exploring
Set up “Flag HubSpot deals that have gone quiet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.