n8n + Todoist Integration: 5 Powerful Workflows You Can Build
An n8n and Todoist integration is the key to unlocking true productivity by automating your task management. Instead of manually adding items to your to-do list, you can create seamless workflows that capture tasks from all the different apps you use. This guide explores five powerful workflows you can build to connect your digital life to your favorite task manager.
Connecting n8n and Todoist
Before building workflows, you need to connect your Todoist account to n8n. This is done by creating a credential that securely stores your Todoist API token. The entire process takes less than two minutes.
- Find your Todoist API Token:
- Log in to your Todoist account in your web browser.
- Go to Settings > Integrations > Developer.
- Copy the API token shown there. Be careful not to share it publicly.
- Create the n8n Credential:
- In your n8n instance, go to the Credentials section from the left-hand menu.
- Click Add credential.
- Search for "Todoist" and select the Todoist API credential type.
- Give the credential a name (e.g., "My Personal Todoist").
- Paste the API token you copied from Todoist into the "API Token" field.
- Click Save.
That's it! Your n8n instance can now interact with your Todoist account. With a dedicated managed instance from n8nautomation.cloud, your credentials and workflows are securely stored and always online, ready to run.
Workflow 1: Turn Flagged Emails into Todoist Tasks
Many important tasks arrive as emails. Manually forwarding them or copying them into your to-do list is slow and error-prone. This n8n workflow automatically creates a task in Todoist whenever you flag or star an email in Gmail or Outlook.
- Set up the Trigger: Use either the
Gmailnode or theMicrosoft Outlooknode. Set the "Event" to "Message Starred" (for Gmail) or use a filter for flagged messages with the Outlook node. This will trigger the workflow every time you star a new email. - Add the Todoist Node: Add a
Todoistnode. Set the "Resource" to "Task" and the "Operation" to "Create". - Map the Data:
- In the "Content" field of the Todoist node, use an expression to pull the subject of the email from the trigger node. It will look like
{{ $json.subject }}. - In the "Description" field, it's useful to add a link back to the original email. You can construct a link or simply insert the email's unique ID.
- Optionally, set a "Project" to send all your email-based tasks to a specific list, like "Inbox" or "Email Follow-ups".
- In the "Content" field of the Todoist node, use an expression to pull the subject of the email from the trigger node. It will look like
Workflow 2: Sync New GitHub Issues to a Todoist Project
For developers, tracking bugs and feature requests is crucial. This workflow syncs new issues from a specific GitHub repository directly into a Todoist project, ensuring nothing gets missed.
- Set up the Trigger: Add a
GitHubnode and configure it with your credentials. Set the "Resource" to "Repository" and the "Event" to "Issue Opened". Select the repository you want to monitor. - Add the Todoist Node: Add a
Todoistnode. Set "Resource" to "Task" and "Operation" to "Create". - Configure Task Details:
- For the "Content", use the issue title from the GitHub node:
New GitHub Issue: {{ $json.issue.title }}. - For the "Description", include the issue URL and the body of the issue for context:
{{ $json.issue.html_url }} {{ $json.issue.body }}. - Set the "Project" ID to your dedicated "Dev" or "Bugs" project in Todoist.
- For the "Content", use the issue title from the GitHub node:
Tip: You can add an If node after the trigger to only create tasks for issues with specific labels (like "bug" or "urgent") for a more focused n8n Todoist integration.
Workflow 3: Create Prep Tasks from Google Calendar Events
Stay prepared for every meeting. This workflow looks at your Google Calendar and automatically creates tasks for you to prepare for upcoming events.
- Set up the Trigger: Use the
Google Calendarnode. Set the "Event" to "Event Added". You can specify the calendar to watch. - Add an IF Node (Optional but Recommended): You probably don't need a preparation task for every event. Add an
IFnode to filter for events that contain keywords like "Meeting," "Call," or "Sync" in the title. - Add the Todoist Node: Add the
Todoistnode ("Task", "Create"). - Map the Calendar Data:
- Set the "Content" to something like
Prepare for: {{ $json.summary }}. - In the "Due Date" field, use a Luxon expression to set the due date for one day before the event starts. The expression would look like:
{{ luxon($json.start.dateTime).minus({days: 1}).toISO() }}. - Add the event link or participant list to the task description for easy access.
- Set the "Content" to something like
Workflow 4: Generate Follow-Up Tasks from Stripe Sales
Automate your post-sale workflow. Whenever a new customer makes a purchase through Stripe, this workflow creates a task to follow up with them, ensuring a great customer experience.
- Set up the Trigger: The
Stripe Triggernode is perfect for this. Configure it to trigger on the "Charge Succeeded" event (charge.succeeded). - Add the Todoist Node: Add a
Todoistnode ("Task", "Create"). - Configure the Follow-Up Task:
- Set the "Content" to include the customer's name or email from the Stripe data:
Follow up with {{ $json.billing_details.name }}. - In the "Description", include important details like the amount and the product purchased:
Purchased for ${{ ($json.amount / 100).toFixed(2) }}. Email: {{ $json.billing_details.email }}. - Assign this task to a "Sales" or "Client Onboarding" project in Todoist.
- Set the "Content" to include the customer's name or email from the Stripe data:
This simple automation ensures no new customer slips through the cracks and is a perfect example of how a flexible n8n Todoist integration can directly impact business operations.
Workflow 5: Send a Daily Digest of Completed Tasks to Slack
Celebrate your progress! This workflow gathers all the tasks you completed today and posts a summary to a Slack channel, giving you a clear overview of your accomplishments.
- Set up the Trigger: Use a
Schedulenode set to run once every weekday at 5 PM. - Get Completed Tasks: Add a
Todoistnode. Set the "Resource" to "Task" and the "Operation" to "Get All Completed". Under "Filters", use the "Completed Until" field with an expression like{{ new Date().toISOString() }}and a "Since" field to get tasks from the start of the day. This requires using Todoist's filter syntax. A simpler method might be to get all tasks and filter in a later step.
A more robust method: Use theTodoistnode, Operation: Get All, and filter by project. Then use aCodenode to filter for tasks completed today. - Format the Data: The `Todoist` node will return an array of task objects. Use a
Codenode to loop through them and create a nicely formatted string.const items = $input.all(); let message = '✅ *Tasks Completed Today:*\n'; for (const item of items) { if (item.json.is_completed) { const completedDate = new Date(item.json.completed_at); const today = new Date(); if (completedDate.toDateString() === today.toDateString()) { message += `- ${item.json.content}\n`; } } } return [{ json: { text: message } }]; - Send to Slack: Add a
Slacknode. In the "Text" field, insert the output from the Code node:{{ $json.text }}. Choose the channel you want to post to.
By automating these five areas with an n8n and Todoist integration, you can spend less time managing tasks and more time doing the work that matters. The flexibility of n8n allows you to customize these workflows to your exact needs, creating a truly personal productivity system. Get started today on a hassle-free, managed platform with n8nautomation.cloud.