Weekly
List deals that have gone quiet
Every Monday you get open deals with no changes in two weeks, grouped by owner.
- Runs
- Weekly
- Apps
- ActiveCampaign
- AI
- Not needed
- Access
- API key
Send this to your assistant
Create a ClickRuntime automation: every Monday at 8am, email me open ActiveCampaign deals not updated in 14 days, grouped by owner.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Pipelines in ActiveCampaign fill up with deals that nobody has touched for weeks. A deal sits in Negotiation because the champion went quiet, or a rep forgot it after a holiday. These deals still count in forecasts, inflate the pipeline total and make the next quarter look healthier than it is. Leadership plans hiring and spending around numbers that include dead opportunities.
Every week the automation lists open deals, keeps those whose last modified date (mdate) is older than 14 days, groups them by owner and emails the result. Each owner sees which of their deals need a decision: follow up, move on or close as lost.
It works for sales teams of any size that review pipeline weekly, and for founders who run their own deals and would like a nudge.
What you get out of it
Forecasts reflect real opportunities
Deals that cannot be revived get closed, so the open pipeline total is closer to what could actually be won. Plans built on it are less likely to be wrong. A pipeline that holds only real deals makes hiring and spend decisions safer.
Reps decide instead of drifting
A named list makes it hard to ignore a deal. Each one is either followed up or closed, which turns vague hope into a clear next step. Deals close out sooner and the reasons for losing are recorded while still remembered.
Warm deals are rescued
Some stale deals only need a nudge. A reminder after two weeks of silence can restart a conversation that would otherwise fade. Sometimes a single message from a rep is enough to restart the conversation.
Pipeline reviews get shorter
When the stale list is already prepared, the weekly meeting skips the hunt for old deals and spends its time on the ones that can still move. The meeting then spends its time on strategy, not archaeology.
Cleaner data for reports
Closing lost deals promptly gives a more accurate win rate and cycle length. Reports about conversion stop being distorted by deals that were never going to close. Leadership trusts the numbers more when the pipeline is regularly pruned.
How it works
What happens, step by step
Every Monday ClickRuntime looks at your open ActiveCampaign deals.
It picks out the ones with no changes in the last 14 days.
It groups them by deal owner.
You get one email listing each owner's quiet deals with the date they were last updated. If none are stale, no email is sent.
Before it runs live
- Connect ActiveCampaign
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 Slack
- Combine it with other ActiveCampaign steps into one automation
Under the hood
The code that runs this automation
from collections import defaultdict
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify
BASE = "https://acme.api-us1.com/api/3"
@on_trigger
def run(event):
h = {"Api-Token": credentials.secret("ACTIVECAMPAIGN_API_KEY")}
data = http.get(f"{BASE}/deals", params={"filters[status]": 0, "limit": 100, "include": "owner"}, headers=h).json()
owners = {u["id"]: f"{u['firstName']} {u['lastName']}" for u in data.get("users", [])}
cutoff = datetime.now(timezone.utc) - timedelta(days=14)
by_owner = defaultdict(list)
for d in data["deals"]:
if datetime.fromisoformat(d["mdate"]) < cutoff:
by_owner[owners.get(d["owner"], "No owner")].append(f" {d['title']} (last update {d['mdate'][:10]})")
if by_owner:
notify.email_me("Open deals untouched for 14 days",
"\n\n".join(f"{o}\n" + "\n".join(rows) for o, rows in by_owner.items()))
return {"owners": len(by_owner)}FAQ
Common questions
Why 14 days and not another number?
Does a note or task update count as movement?
Are won and lost deals excluded?
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
Get overdue tasks every morning
Each morning you see every task past its due date with the contact or deal it belongs to.
See how it worksGet last week's campaign numbers on Monday
A table of every campaign sent last week with sends, opens, clicks and unsubscribes.
See how it worksPost new ActiveCampaign contacts to Slack
Each new contact appears in Slack with their name, email and the list they joined.
See how it worksKeep exploring
Set up “List deals that have gone quiet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
