Todoist + Google Calendar: wake up to a fresh inbox
That Todoist Inbox looks “manageable” until it isn’t. Old tasks pile up, due dates drift, and you start your morning reorganizing instead of doing.
Operations managers feel it when routines slip. Agency owners notice it when client work crowds everything else out. And busy freelancers? Same mess, different stakes. This Todoist inbox automation resets your list every morning so you begin with today’s tasks, not yesterday’s leftovers.
You’ll see how the workflow wipes uncompleted Inbox items, copies in your “template” tasks, and only adds what matches today (with the right due times).
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Todoist + Google Calendar: wake up to a fresh inbox
flowchart LR
subgraph sg0["Morning Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Morning Schedule Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/todoist.svg' width='40' height='40' /></div><br/>Retrieve Inbox Tasks"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Items Present", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Daily Label", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/todoist.svg' width='40' height='40' /></div><br/>Remove Task Item"]
n0 --> n1
n2 --> n3
n3 --> n4
n1 --> n2
end
subgraph sg1["Early Trigger 5:10 Flow"]
direction LR
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Early Trigger 5:10", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/todoist.svg' width='40' height='40' /></div><br/>Fetch Template Tasks"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Extract Task Metadata"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Today Matches", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/todoist.svg' width='40' height='40' /></div><br/>Create Inbox Task"]
n7 --> n8
n5 --> n6
n8 --> n9
n6 --> n7
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n5 trigger
class n2,n3,n8 decision
class n7 code
classDef customIcon fill:none,stroke:none
class n1,n4,n6,n7,n9 customIcon
The Challenge: Todoist Inbox Clutter That Breaks Your Day
If your “system” relies on you remembering to clean up Todoist every morning, it’s not a system. It’s a daily negotiation with your past self. Uncompleted Inbox tasks hang around for days, sometimes weeks, and you stop trusting your list. Then you overcorrect by rewriting tasks, moving them between projects, and tweaking due dates that should have been right the first time. The worst part is the mental weight: you open Todoist to work, and instead you triage.
It adds up fast. Here’s where it breaks down in real life.
- You waste the first 15–30 minutes of your day deleting, rescheduling, and re-deciding tasks you already decided.
- Stale Inbox items blur together, so genuinely important tasks get missed because they look like “just another leftover.”
- Recurring work becomes inconsistent because you’re relying on memory instead of a repeatable template.
- Due times drift, which means your calendar and your task list stop agreeing on what “today” even means.
The Fix: Rebuild Today’s Inbox from Templates Automatically
This workflow creates a clean start every morning by treating your Todoist Inbox like a daily workspace, not long-term storage. At 5:00am, it checks your Inbox and removes uncompleted items that shouldn’t keep haunting you. A few minutes later (5:10am), it pulls tasks from a dedicated “template” list you maintain in Todoist. Each template task can include simple metadata like which days it should appear and what time it’s due, so Monday looks different from Friday without you touching anything. The workflow reads those instructions, matches them to today, and recreates only the tasks you need in your Inbox with the right due dates.
The automation starts on a morning schedule, uses Todoist to fetch and clean up, then runs a second scheduled pass to copy templates into your Inbox. In the middle, a small parsing step extracts “days:mon,tues; due:8pm” style notes and filters out anything that doesn’t belong today.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you keep 20 routine tasks as templates (admin, follow-ups, publishing checks, personal habits). Without automation, you’ll usually spend about 2 minutes per task deciding “is this for today?” plus another minute fixing due times, which is roughly an hour a day when you include context switching. With this workflow, the “work” is basically zero: it runs at 5:00am and 5:10am, and you open Todoist to a ready-to-go Inbox. You still do the tasks, obviously. You just stop rebuilding the plan daily.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Todoist to store templates and create Inbox tasks
- Google Calendar if you want calendar-aligned planning habits
- Todoist API token (get it from Todoist Settings → Integrations)
Skill level: Beginner. You’ll connect Todoist, pick the right projects, and copy a small template convention.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Two morning schedule triggers. One runs at 5:00am to handle cleanup, then another runs at 5:10am to rebuild today’s Inbox from your templates.
Inbox cleanup in Todoist. The workflow retrieves current Inbox tasks, checks that items exist, then filters for the ones that should be removed (for example, tasks that aren’t marked with your “daily” label rule). Those get deleted so you stop carrying unfinished clutter forward.
Template parsing and “today” filtering. Next, it fetches your template tasks from a dedicated Todoist project, extracts metadata like days:mon,tues; due:8pm, and keeps only what matches the current weekday.
Inbox creation. Finally, it creates fresh Inbox tasks in Todoist with the due date and time you specified, which means your list is already shaped when you wake up.
You can easily modify the day rules and due-time format to match how you plan. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
This workflow uses two schedule triggers to run daily at the same time, so configure both to ensure the cleanup and replication flows run.
- Open Morning Schedule Trigger and set the schedule rule to trigger at
5hours and10minutes (as shown in the Interval rule). - Open Early Trigger 5:10 and set the schedule rule to trigger at
5hours and10minutes (match the same time as above).
Tip: Keeping both triggers at the same time ensures tasks are cleared and recreated in one run without delay.
Step 2: Connect Todoist for Inbox Cleanup
This branch removes existing daily tasks from your Inbox before new ones are created.
- Open Retrieve Inbox Tasks and set Operation to
getAlland Return All totrue. - Set Filters → Project ID to
[YOUR_ID]to target your Inbox project. - Credential Required: Connect your todoistApi credentials in Retrieve Inbox Tasks.
- Open Validate Items Present and set the string condition to Value 1
={{ $json["id"] }}with OperationisNotEmpty. - Open Check Daily Label and set the boolean condition to Value 1
={{ ($json["labels"] || []).includes('daily') }}with Value 2true. - Open Remove Task Item and set Operation to
deleteand Task ID to={{ $json["id"] }}. - Credential Required: Connect your todoistApi credentials in Remove Task Item.
⚠️ Common Pitfall: If [YOUR_ID] is left unchanged, the workflow may delete tasks from the wrong project or return no tasks at all.
Step 3: Connect Todoist for Template Retrieval
This branch pulls template tasks that will be parsed and converted into daily Inbox tasks.
- Open Fetch Template Tasks and set Operation to
getAllwith Return All set totrue. - Set Filters → Project ID to
[YOUR_ID]for your template project. - Credential Required: Connect your todoistApi credentials in Fetch Template Tasks.
Step 4: Set Up Task Parsing and Day Matching
These nodes extract structured metadata from task descriptions and filter by day.
- Open Extract Task Metadata and confirm Mode is
runOnceForEachItem. - Paste the provided JavaScript into JS Code exactly as shown to parse
description,content,due, and tags separated by semicolons. - Open Filter Today Matches and set Combine Conditions to
OR. - Set both string conditions to compare Value 1
={{ $json.days }}with Value 2={{ ['sun', 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat', 'sun'][new Date().getDay()] }}using Operationcontains.
Tip: The code expects description tags like days: mon,tues; due: 9am. Keep a consistent format in your template tasks.
Step 5: Configure the Todoist Task Creation
This node creates the daily tasks in your Inbox with labels, descriptions, and due times.
- Open Create Inbox Task and set Content to
={{ $json.content }}. - Set Labels to
daily. - Set Options → Description to
={{ $json.description }}and Options → Due Date Time to={{ $json.due }}. - Set Project to
[YOUR_ID]and confirm the cached result name isInbox. - Credential Required: Connect your todoistApi credentials in Create Inbox Task.
Step 6: Test and Activate Your Workflow
Validate both branches execute correctly before turning on scheduled automation.
- Use Execute Workflow to run a manual test.
- Confirm Retrieve Inbox Tasks returns items and Remove Task Item deletes tasks with the
dailylabel. - Confirm Fetch Template Tasks returns template items, Extract Task Metadata outputs structured fields, and Create Inbox Task creates new daily tasks in Todoist.
- When the test succeeds, switch the workflow to Active so the schedule triggers run automatically.
Watch Out For
- Todoist credentials can expire or lack project permissions. If tasks stop deleting or creating, check the Todoist credential in n8n and confirm the token still works.
- If you change the template format (like writing “Mondays” instead of “mon”), the metadata extraction can fail silently. Keep your “days:” values consistent so the filter can match today.
- Schedule triggers run in your n8n instance timezone, not necessarily your local one. Confirm the 5:00am and 5:10am times are correct after hosting or daylight savings changes.
Common Questions
About 30 minutes once your Todoist template list is ready.
Yes. You’ll mainly connect Todoist, choose the source and destination projects, then copy a simple “days/due” format into your template tasks.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Todoist costs (often free) and any optional AI usage if you add it later.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can swap the “template” project and “Inbox” destination in the Todoist nodes, then adjust the metadata rules your templates use (for example, add a “project:Name” hint or a label). Common customizations include adding a “don’t delete if labeled” exception, routing certain templates into specific projects, and changing the schedule so it runs after you wake up instead of at 5:00am.
Usually it’s an expired or replaced Todoist API token in n8n. Update the Todoist credential, then re-run a manual test execution to confirm the “Retrieve Inbox Tasks” and “Create Inbox Task” actions succeed. If it still fails, check that the projects you selected still exist and that your Todoist account has access to them. Rate limiting is rare here, but it can happen if you’re copying a huge template list at once.
Plenty for personal use and most small teams. On n8n Cloud Starter you get a monthly execution cap (your run count depends on plan), and this workflow typically runs twice per day. If you self-host, there’s no execution limit, and the practical ceiling is your server and how many template tasks you’re copying at once.
Often, yes, because you can do conditional cleanup plus template parsing in one place without paying extra for branching logic. n8n is also easier to self-host, which matters if you want “set it and forget it” scheduling without worrying about task limits. Zapier or Make can still work if you only need a simple “copy tasks” action and you don’t care about deleting stale items. The deciding factor is usually control: if you want precise rules like “only add on mon,tues” and consistent due times, n8n is a better fit. Talk to an automation expert if you want help mapping your exact routine.
You wake up, open Todoist, and your day is already organized. Honestly, that calm start is hard to give up once you’ve had it.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.