Daily
Get today's and overdue To Do tasks by email
Each morning one email lists what's due today and what's already late, across all your lists.
- Runs
- Daily
- Apps
- Microsoft To Do
- AI
- Not needed
- Access
- read (Tasks.Read)
Send this to your assistant
Create a ClickRuntime automation: every weekday at 7am, email me my unfinished Microsoft To Do tasks that are due today or overdue, grouped by list.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Microsoft To Do is easy to fill and easy to ignore. Tasks pile up across lists such as Work, Home and Projects, and unless you open each one, the overdue items stay hidden. A task due yesterday looks the same as one due next month, and the first time you notice is when someone asks why the report has not been sent.
Each morning, ClickRuntime goes through your To Do lists, finds tasks that are not completed, keeps those that are due today or overdue, and emails you the combined list. It sorts out which lists they came from, so you see everything that needs attention in a single message.
It suits anyone who plans in To Do and wants the day's commitments delivered, instead of having to go and look.
What you get out of it
The day starts with a clear list
You open one email and know what must be done today. That beats opening four lists and trying to work out what matters. That saves several minutes of opening and sorting lists every day.
Overdue tasks stop hiding
Items that slipped past their due date are included until they are done. You cannot forget a task that shows up in your inbox every morning, which is uncomfortable but effective.
All lists are covered
The email combines tasks from every list, so something filed under Home does not escape because you only checked Work. Your whole commitment picture is in one place. Nothing slips through the gaps between lists.
Fewer missed commitments
Small deadlines like renewing a license or sending an invoice are easy to miss. Seeing them on the morning they are due means you handle them before they become problems.
It fits an existing habit
Most people read their email first thing. Putting tasks there means you do not need a new routine or another app to open. Habits are easier to keep when nothing new is required.
Low effort to keep up
You keep entering tasks as you do now. The email comes along without any extra step, so it does not become another chore. The only thing to do is read it.
How it works
What happens, step by step
Every morning, ClickRuntime goes through all your Microsoft To Do lists.
It picks out unfinished tasks due today and those already past their date.
You get one email grouped by list, with late tasks marked OVERDUE.
Before it runs live
- Connect Microsoft To Do
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 Microsoft To Do steps into one automation
Under the hood
The code that runs this automation
from datetime import date
from clickruntime import on_trigger, credentials, http, notify
API = "https://graph.microsoft.com/v1.0/me/todo/lists"
@on_trigger
def run(event):
headers = {"Authorization": f"Bearer {credentials.connection('microsoft', 'work')}"}
today = str(date.today())
lines = []
for lst in http.get(API, headers=headers).json()["value"]:
tasks = http.get(f"{API}/{lst['id']}/tasks", headers=headers,
params={"$filter": "status ne 'completed'"}).json()["value"]
due = [t for t in tasks if t.get("dueDateTime") and t["dueDateTime"]["dateTime"][:10] <= today]
if due:
lines.append(lst["displayName"])
lines += [f" {'OVERDUE ' if t['dueDateTime']['dateTime'][:10] < today else ''}{t['title']}" for t in due]
notify.email_me("Tasks due today", "\n".join(lines) or "Nothing due today.")
return {"lists": sum(1 for l in lines if not l.startswith(" "))}FAQ
Common questions
Does it include tasks with no due date?
Will it include shared lists from other people?
Can I get it at a different time?
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
Add To Do tasks from a link
Anything that calls your link, like a form, script or phone shortcut, creates a task in your chosen list right away.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksKeep exploring
Set up “Get today's and overdue To Do tasks by email” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.