Daily
Start every day with a fresh routine list
Yesterday's unfinished routine tasks are cleared and today's set is created before you wake up.
- Runs
- Daily
- Apps
- Todoist
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: at 5am every day, delete tasks labelled routine that are still open in my Daily project, then add: review calendar, inbox zero, 30 min walk, plan tomorrow.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Some tasks come back every single day: check the inbox, review the schedule, water the plants, send the stand-up note. Todoist recurring tasks help, but when you skip one it either piles up as overdue or gets completed once and vanishes from the history. People end up with a long red overdue list made of yesterday's routine, which hides what is actually late.
Each morning, this deletes any leftover tasks that carry your routine label from the previous day and then creates a fresh set of today's tasks from a template list you maintain. Your day starts with a clean list instead of a growing backlog of repeats.
It is a good fit for people running a consistent daily checklist, such as an opening routine in a shop or a daily admin block.
What you get out of it
Overdue means actually overdue
Yesterday's skipped routine tasks are cleared, so the overdue view only shows real commitments. You stop ignoring a red list that has become mostly noise. The overdue list becomes something you can trust and act on again.
Every day begins with the same clean checklist
The routine appears in the same order each morning, which turns habits into a visible list. New team members can follow it without being told what the daily steps are.
Skipping a day costs nothing
A missed routine task is replaced, not stacked on top of today's. You do not come back from a sick day to a pile of guilt-inducing leftovers. Your list resets, and the habit continues the next morning without a lecture.
One template to edit
The routine lives in a single template list. Adding a step or removing one changes every future morning, so there are no duplicated recurring tasks to hunt down in Todoist.
Keeps karma and history meaningful
With stale copies removed, your completed counts reflect real work done each day, and you avoid inflated or empty weeks caused by recurring tasks that were never ticked. Streaks and totals then describe real days instead of piles.
How it works
What happens, step by step
Every morning, ClickRuntime looks in your Todoist project for yesterday's routine tasks.
Any you didn't finish are removed, so they don't pile up.
A fresh set of tasks from your routine list, like reviewing your calendar or a 30-minute walk, is added for today.
Before it runs live
- Connect Todoist
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 Todoist steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, http, credentials
API = "https://api.todoist.com/api/v1"
ROUTINE = ["Review calendar", "Inbox zero", "30 min walk", "Plan tomorrow"]
PROJECT_ID = "6Jf8VQXxpwv56VQ7" # your Daily project
@on_trigger
def run(event):
headers = {"Authorization": "Bearer " + credentials.connection("todoist", "main")}
leftovers = http.get(f"{API}/tasks", headers=headers, params={"project_id": PROJECT_ID, "label": "routine"}).json()["results"]
for t in leftovers:
http.delete(f"{API}/tasks/{t['id']}", headers=headers).raise_for_status()
for content in ROUTINE:
http.post(f"{API}/tasks", headers=headers, json={
"content": content, "project_id": PROJECT_ID, "labels": ["routine"], "due_string": "today",
}).raise_for_status()
return {"removed": len(leftovers), "added": len(ROUTINE)}FAQ
Common questions
How does it know which leftover tasks to delete?
Can some tasks appear only on certain weekdays?
Will I lose completed routine tasks from my history?
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
Hide far-off tasks until they're close
Tasks due weeks away stay out of sight and come back to their project three days before they're due.
See how it worksGet an evening list of what you finished
At night you get an email of everything you completed that day, grouped by project.
See how it worksGet a Friday review of your week in Todoist
Friday afternoon brings a list of the week's completed tasks, day by day, without the projects you excluded.
See how it worksKeep exploring
Set up “Start every day with a fresh routine list” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.