Todoist + Google Calendar: one daily plan in Gmail
Your day starts in fragments. A quick look at Google Calendar, then Todoist, then back to email, then you forget the one thing that actually mattered until it’s 4 PM.
Marketing managers feel it when campaigns stack up. Founders feel it when meetings swallow the calendar. And if you run client work, you already know how fast priorities blur. This Todoist Calendar briefing automation gives you one clean morning plan in Gmail, so you start with a clear list instead of a dozen tabs.
This workflow pulls today’s tasks and events, summarizes them with GPT-4o, and emails you a formatted daily briefing at 6:00 AM. You’ll see what it fixes, what you need, and how the flow works before you implement it.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Todoist + Google Calendar: one daily plan in Gmail
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Message a model", pos: "b", h: 48 }
n1@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n2["<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/>Get many tasks"]
n3@{ icon: "mdi:location-exit", form: "rounded", label: "Get many events", 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/code.svg' width='40' height='40' /></div><br/>Code"]
n5["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
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/code.svg' width='40' height='40' /></div><br/>Convert OpenAI Text to HTML"]
n7@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n4 --> n0
n5 --> n4
n2 --> n5
n3 --> n5
n0 --> n6
n7 --> n3
n7 --> n2
n6 --> n1
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 n7 trigger
class n0 ai
class n4,n6 code
classDef customIcon fill:none,stroke:none
class n2,n4,n5,n6 customIcon
The Challenge: One Day, Two Systems, Zero Clarity
Todoist tells you what you intended to do. Google Calendar tells you what you promised other people you’d do. The trouble is you rarely look at them together, which means you plan your day twice and still miss things. You also waste a weird amount of mental energy re-reading task names, scanning event titles, and trying to spot conflicts. And honestly, the worst part is the “silent failure” when nothing screams for attention, so you default to inbox triage instead of real priorities.
It adds up fast. Here’s where it breaks down.
- You start work without a single, agreed “today” list, so your first hour disappears into reorganizing.
- Important tasks get postponed because meetings are visible and tasks are not.
- You miss prep time for calls because the calendar doesn’t show the tasks that should happen before them.
- Copying tasks or notes into emails becomes a daily habit, which means more chances to forget something.
The Fix: A Daily Gmail Briefing That Combines Tasks + Meetings
This automation runs every morning at 6:00 AM and creates one briefing that matches how you actually work. It fetches today’s Google Calendar events, then pulls your Todoist tasks (based on the project you choose). Next, it merges both lists into a single view and cleans up the raw data so it reads like a plan, not an export. GPT-4o then generates a short, motivating summary that highlights what matters, calls out any obvious conflicts, and gives you a simple “do this first” vibe. Finally, the workflow converts everything into a styled HTML email and sends it through Gmail, ready for you when you open your inbox.
The flow begins with a schedule trigger. Then Google Calendar and Todoist feed a combined dataset that gets formatted and summarized by the OpenAI Chat Model. Gmail delivers the finished briefing as a clean email you can actually skim in under a minute.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you have 8 calendar events today and 12 Todoist tasks. The usual routine is opening Calendar (maybe 5 minutes), opening Todoist (another 5), then bouncing between them while you “make a plan” in your head or in a scratch doc (often 15 minutes). That’s about 25 minutes before you’ve done any real work. With this workflow, you spend about 1 minute reading the Gmail briefing, then you start. Same inputs, less friction, and you keep that early focus for actual execution.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Todoist for today’s tasks from a chosen project.
- Google Calendar to pull today’s meetings and blocks.
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Beginner. You’ll connect accounts, paste an API key, and tweak a prompt or email template if you want it more “you.”
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled start at 6:00 AM. The workflow runs on a daily timer, so you don’t have to remember anything. You wake up and it’s already done.
Tasks and events get pulled in parallel. Google Calendar fetches today’s events while Todoist fetches your task list (using your selected project ID). You’re not building a “new system” here, just reading from the tools you already use.
The items are merged, cleaned, and summarized. A merge step combines everything, then a formatting script turns messy fields into readable text. GPT-4o generates a short daily summary, which can include a motivational tone and a clear sense of what deserves attention first.
A styled HTML email lands in Gmail. The final script renders the summary and lists into an email format that’s easy to scan. Gmail sends it to you as a daily briefing you can archive, forward, or use as your morning checklist.
You can easily modify the Todoist project source to cover multiple projects, or change the email template to match your brand voice and formatting preferences. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set when the daily briefing should run so the workflow starts automatically each morning.
- Add or open Scheduled Routine Start.
- Set the schedule rule to trigger at hour
6under rule → interval → triggerAtHour. - Confirm the trigger is connected to both downstream nodes.
- Ensure Scheduled Routine Start outputs to both Retrieve Calendar Events and Fetch Task List in parallel.
Step 2: Connect Google Calendar and Todoist
Pull your calendar events and task list so the summary has the right data.
- Open Retrieve Calendar Events and set Operation to
getAll. - Set Calendar → value to
[YOUR_ID]. - Credential Required: Connect your googleCalendarOAuth2Api credentials.
- Open Fetch Task List and set Operation to
getAllwith Return All set totrue. - Set Filters → projectId to
[YOUR_ID]. - Credential Required: Connect your todoistApi credentials.
- Connect both nodes into Combine Event & Task Data to merge the inputs.
[YOUR_ID] placeholders unchanged will result in empty calendar or task data.Step 3: Set Up Processing and AI Summary
Format the merged items and generate a structured daily summary using AI.
- Open Format Items Script and keep the jsCode exactly as provided to split and format events and tasks.
- Verify Combine Event & Task Data outputs to Format Items Script, then to Generate Daily Summary.
- In Generate Daily Summary, set Model to
chatgpt-4o-latest. - Keep the message template content that references
{{ $json.formattedTasks }}and{{ $json.formattedEvents }}for the AI prompt. - Credential Required: Connect your openAiApi credentials.
Format Items Script → Generate Daily Summary runs after Combine Event & Task Data merges both inputs.
Step 4: Configure Email Output
Render the AI output as HTML and email it to your inbox.
- Open Render Summary as HTML and keep the jsCode that converts markdown to HTML and wraps it in a styled
<div>. - Connect Generate Daily Summary → Render Summary as HTML → Dispatch Email Briefing.
- In Dispatch Email Briefing, set Send To to
[YOUR_EMAIL]. - Set Subject to
Morning Briefings. - Set Message to the expression
={{ $json.htmlBody }}. - Credential Required: Connect your gmailOAuth2 credentials.
={{ $json.htmlBody }}, the email will not render the formatted summary.Step 5: Test and Activate Your Workflow
Run a manual test to confirm data fetch, AI summary creation, and email delivery.
- Click Execute Workflow to run Scheduled Routine Start manually.
- Verify that Retrieve Calendar Events and Fetch Task List return items and merge into Combine Event & Task Data.
- Confirm Generate Daily Summary outputs structured text and Render Summary as HTML produces
htmlBody. - Check your inbox for the email sent by Dispatch Email Briefing with the subject
Morning Briefings. - When satisfied, toggle the workflow to Active to enable daily scheduling.
Watch Out For
- Google Calendar permissions are the most common “it worked yesterday” failure. If events stop showing up, check the connected Google account and the node’s access scope in n8n first.
- If OpenAI calls occasionally return empty or time out, it’s usually temporary load or a prompt that’s too long. Keep the input compact, and if you add Wait behavior for retries, give it a little more time before the email step runs.
- The default AI summary tone may feel generic. Put a short “write like me” instruction in the prompt early, or you’ll keep rewriting the same summary every morning.
Common Questions
About 20 minutes if your accounts are ready.
Yes. You’ll mostly connect accounts and paste an OpenAI API key.
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 OpenAI API usage, which is usually a small daily cost for one summary email.
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 adjust the Todoist fetch to pull from a different project, or expand it to multiple projects and then re-merge the results before the formatting script. Most people also customize the “Generate Daily Summary” prompt to match their voice, and tweak the “Render Summary as HTML” template so the email looks like their preferred layout. If your day starts later, just change the schedule trigger from 6:00 AM to your ideal time. The sticky notes inside the workflow explain what each part is doing, which makes edits less intimidating.
Usually it’s expired Google authorization in n8n or you connected the wrong Google account. Reconnect the Google Calendar credential, then confirm the calendar selection and permissions. If it works for a few days and then drops events, check for token revocation in your Google security settings or a changed password that invalidated the session.
For one person, it effectively runs “unlimited” daily briefings since it’s a single scheduled execution each morning.
Often, yes, especially once you want the email to look polished and the summary to be consistently good. n8n makes it easier to merge lists, format data with code, and control the exact HTML output without fighting platform limits. It also handles “real” logic (like conditionals and branching) without turning every tweak into another paid step. Zapier or Make can still be fine for a basic digest, but you may hit friction when you want richer formatting or more control over the AI prompt. Talk to an automation expert if you want a quick recommendation based on your setup.
Once this is running, your morning plan shows up automatically, already merged and already readable. The workflow takes care of the repetitive checking so you can get on with the day.
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.