On a schedule
Get 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.
- Runs
- On a schedule
- Apps
- Todoist
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every Friday at 4pm, email me all Todoist tasks I completed since Monday, grouped by day, leaving out my Personal and Shopping projects.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
The weekly review is the habit productivity writers swear by, yet it is hard to do honestly when you cannot recall what you finished. On Friday afternoon you stare at Todoist's completed view, a flat list sorted by time, with side projects mixed in with work. A team lead preparing a weekly update spends half an hour on reconstruction before writing a word.
Every Friday, this fetches the tasks you completed over the last seven days, excludes any projects you do not want in the report, groups what remains by day, and emails you the result. The review starts with a clean record of the week.
You can leave out personal projects so the email can be forwarded to your manager. It takes the dull gathering step out of the review so the thinking part can begin straight away.
What you get out of it
A review based on facts
Reading what you actually completed, day by day, replaces guesswork. You can judge the week fairly and see whether your plan matched what really got done. You can also compare plan with reality quickly.
Easy to forward to your manager
Excluding personal or private projects means the email is safe to share. A weekly update to a lead becomes one forward, with nothing sensitive to delete first. There is nothing private to delete before sending.
Reveals uneven weeks
Grouping by day shows that Monday and Tuesday were heavy and Thursday was empty. That pattern helps you plan meetings and focus time better for the following week. It makes the case for protecting time on the slow days.
Saves the Friday reconstruction
Half an hour of scrolling is replaced by an email waiting at the time you sit down. That time goes to planning next week, which is the part of the review that adds value.
Builds a record over the year
Fifty-two weekly emails make a searchable archive for performance reviews and salary conversations, giving you specific completed work to point to rather than vague recollections. Those emails give you concrete evidence at review time.
How it works
What happens, step by step
Every Friday at 4pm, ClickRuntime collects the Todoist tasks you completed in the past seven days.
It leaves out any projects you chose to exclude.
It groups the tasks by day, showing the project for each one.
You get the review by email.
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 collections import defaultdict
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, notify, http, credentials
API = "https://api.todoist.com/api/v1"
SKIP = {"Personal", "Shopping"}
@on_trigger
def run(event):
headers = {"Authorization": "Bearer " + credentials.connection("todoist", "main")}
now = datetime.now(timezone.utc)
monday = (now - timedelta(days=now.weekday())).replace(hour=0, minute=0, second=0, microsecond=0)
items = http.get(f"{API}/tasks/completed/by_completion_date", headers=headers, params={
"since": monday.strftime("%Y-%m-%dT%H:%M:%SZ"), "until": now.strftime("%Y-%m-%dT%H:%M:%SZ"), "limit": 200,
}).json()["items"]
projects = {p["id"]: p["name"] for p in http.get(f"{API}/projects", headers=headers).json()["results"]}
days = defaultdict(list)
for t in items:
if projects.get(t["project_id"]) in SKIP:
continue
day = datetime.fromisoformat(t["completed_at"].replace("Z", "+00:00")).strftime("%A")
days[day].append(f" ✓ {t['content']} ({projects.get(t['project_id'], 'Other')})")
order = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
body = "\n\n".join(f"{d}\n" + "\n".join(days[d]) for d in order if days[d])
notify.email_me("Your week in Todoist", body or "No completed tasks this week.")
return {"completed": sum(len(v) for v in days.values())}FAQ
Common questions
Which projects can I exclude?
Does the week run Monday to Friday or the last seven days?
Are subtasks listed separately?
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 worksHide 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 worksKeep exploring
Set up “Get a Friday review of your week in Todoist” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.