On a schedule
Get a daily list of overdue HubSpot tasks
Each weekday you get the tasks that are past due and not done, grouped by owner.
- Runs
- On a schedule
- Apps
- HubSpot
- AI
- Not needed
- Access
- tasks read scope
Send this to your assistant
Create a ClickRuntime automation: every weekday at 8am, email me HubSpot tasks that are overdue and not completed, grouped by owner.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A sales rep promised a prospect a revised quote by Thursday and created a HubSpot task to remember it. Thursday came and went because the rep was on calls all day and never opened the task queue. By the time the prospect emails asking where it is, the task is nine days overdue, and the manager had no idea any such tasks existed across a team of eight.
On a schedule, ClickRuntime searches HubSpot for tasks whose due date has passed and whose status is not completed, groups them by owner, and emails the list to you. Each owner's section shows the task title, how long it has been overdue and the record it relates to.
It is especially useful for sales managers and customer success leads who need to see slipped follow-ups without auditing every person's queue.
What you get out of it
Promised follow-ups stop slipping quietly
Callbacks, quotes and renewal check-ins are commitments made to customers. A daily list of what is past due puts them back in front of someone while the customer still cares, instead of after they complain.
Managers see overload before it becomes churn
If one rep has twenty overdue tasks and another has none, the grouped list shows it immediately. You can move work or ask for help while deals are still alive, not in the quarterly pipeline review.
Reps get a nudge without a nagging meeting
A concise list by name is less awkward than a status call. People clear their own backlog when it is listed plainly, and the manager does not have to chase individual tasks one at a time.
Dead tasks get cleaned out
Some overdue tasks are obsolete because the deal closed or the contact left. Seeing them listed with their age prompts someone to complete or delete them, which keeps the task queue believable.
A record of who owned what
The emailed digest is a dated snapshot of overdue work by owner. If a deal is lost and someone asks whether follow-up was missed, you have evidence of what was open at the time.
How it works
What happens, step by step
Every weekday at 8 am, the automation finds HubSpot tasks that are past their due date and not completed.
It groups the tasks by the person who owns them.
You get one email listing each person's overdue tasks with their due dates.
Before it runs live
- Connect HubSpot
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 HubSpot steps into one automation
Under the hood
The code that runs this automation
import time
from collections import defaultdict
from clickruntime import on_trigger, credentials, http, notify
@on_trigger
def run(event):
tasks = http.post("https://api.hubapi.com/crm/v3/objects/tasks/search",
headers={"Authorization": f"Bearer {credentials.connection('hubspot', 'work')}"},
json={"limit": 100, "properties": ["hs_task_subject", "hs_timestamp", "hubspot_owner_id"],
"filterGroups": [{"filters": [
{"propertyName": "hs_timestamp", "operator": "LT", "value": int(time.time() * 1000)},
{"propertyName": "hs_task_status", "operator": "NEQ", "value": "COMPLETED"}]}]}).json()["results"]
if not tasks:
return {"overdue": 0}
by_owner = defaultdict(list)
for t in tasks:
p = t["properties"]
by_owner[p.get("hubspot_owner_id") or "Unassigned"].append(f" - {p['hs_task_subject']} (due {p['hs_timestamp'][:10]})")
body = "\n\n".join(f"Owner {owner}\n" + "\n".join(items) for owner, items in by_owner.items())
notify.email_me(f"{len(tasks)} overdue HubSpot tasks", body)
return {"overdue": len(tasks)}FAQ
Common questions
What makes a HubSpot task count as overdue?
Can I send each person their own overdue tasks?
Will it list tasks for every team or just mine?
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 a weekly CSV of your HubSpot contacts
A full export of your contacts arrives in your inbox every week, ready to open in a spreadsheet.
See how it worksFind deals stuck in one stage too long
Each morning you see the open deals that haven't moved in two weeks, before they go cold.
See how it worksGet a weekly list of customers at risk of leaving
Each Monday you get a ranked list of customers who look likely to churn, with a reason for each.
See how it worksKeep exploring
Set up “Get a daily list of overdue HubSpot tasks” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.