Daily
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.
- Runs
- Daily
- Apps
- Todoist
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: every night at 11pm, move Todoist tasks due more than 3 days from now into my Snoozed project, and move them back to their original project once they're 3 days away.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A Todoist project with tasks due in March, May and August looks the same in January as one with tasks due tomorrow. Quarterly filings, annual renewals and event preparation clutter the working view for months. People either stop looking at the project, and miss the near-term tasks, or they drown in it and lose focus.
Each day, this scans your tasks and moves anything with a due date more than three days away into a Snoozed project, remembering which project it came from. Tasks that come within three days are moved back to their original project, so they reappear right when you need to act.
It helps anyone with long-horizon commitments mixed in with daily work. The goal is a project view that shows what you can act on this week and nothing else, without losing track of the big dates ahead.
What you get out of it
Active projects show only what matters
With distant deadlines hidden, your working project views contain near-term tasks only. You scan a short list and act on it, instead of scrolling past items due next season. The project view finally matches how you work.
Nothing is forgotten while hidden
Snoozed tasks are not deleted or lost. They return to their original project three days before the due date, so an annual renewal still arrives well ahead of the deadline.
No manual shuffling of tasks
Moving dozens of future tasks in and out of a parking project by hand is tedious enough that nobody keeps it up. Doing it daily keeps the lists current without any effort.
Original structure is preserved
Because each task's home project is remembered, it comes back exactly where it belongs. Sections, labels and your project reports stay accurate after the round trip. Sections, labels and project reports stay accurate after the round trip.
Reduces overwhelm on planning days
A calmer list makes it easier to commit to a realistic day. Seeing twelve tasks instead of ninety helps you decide what to start, which improves follow-through. That improves how much of the plan you actually finish.
How it works
What happens, step by step
Every day, ClickRuntime looks through your Todoist tasks and their due dates.
Tasks that aren't due for a while are moved into a Snoozed project, out of your way.
When a snoozed task gets close to its due date, it is moved back to the project it came from.
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 datetime import date, timedelta
from clickruntime import on_trigger, state, http, credentials
API = "https://api.todoist.com/api/v1"
SNOOZED = "6Jf8VQXxpwv56VQ8" # your Snoozed project id
@on_trigger
def run(event):
headers = {"Authorization": "Bearer " + credentials.connection("todoist", "main")}
tasks = http.get(f"{API}/tasks", headers=headers, params={"limit": 200}).json()["results"]
origin = state.get("origin") or {}
cutoff = (date.today() + timedelta(days=3)).isoformat()
moved_out = moved_back = 0
for t in tasks:
due = (t.get("due") or {}).get("date", "")[:10]
if not due:
continue
if due > cutoff and t["project_id"] != SNOOZED:
origin[t["id"]] = t["project_id"]
http.post(f"{API}/tasks/{t['id']}/move", headers=headers, json={"project_id": SNOOZED})
moved_out += 1
elif due <= cutoff and t["project_id"] == SNOOZED and t["id"] in origin:
http.post(f"{API}/tasks/{t['id']}/move", headers=headers, json={"project_id": origin.pop(t["id"])})
moved_back += 1
state.set("origin", origin)
return {"snoozed": moved_out, "returned": moved_back}FAQ
Common questions
Can I change the three-day window?
What happens to tasks with no due date?
What if I move a snoozed task manually?
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
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.
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 “Hide far-off tasks until they're close” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.