Workflow: Todoist Workflow
Integrations: filter, noOp, scheduleTrigger, set, stickyNote, stopAndError, todoist

{"nodes": [{"id": "d45cf237-dbbc-48ed-a7f0-fa9506ae1d67", "name": "Update priority in todoist", "type": "n8n-nodes-base.todoist", "position": [2060, 520], "parameters": {"taskId": "={{ $('Get inbox tasks').item.json.id }}", "operation": "update", "updateFields": {"priority": "={{ $('Your Projects').first().json.projects[$json.message.content] }}"}}, "credentials": {"todoistApi": {"id": "{{ $credentials.todoistApi.id }}", "name": "Todoist account"}}, "retryOnFail": true, "typeVersion": 2, "waitBetweenTries": 5000, "notes": "This todoist node performs automated tasks as part of the workflow."}, {"id": "4d0ebf98-5a1d-4dfd-85df-da182b3c5099", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [600, 520], "parameters": {"rule": {"interval": [{}]}}, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "a950e470-6885-42f4-9b17-7b2c2525d3e4", "name": "Get inbox tasks", "type": "n8n-nodes-base.todoist", "position": [1020, 520], "parameters": {"filters": {"projectId": "938017196"}, "operation": "getAll", "returnAll": true}, "credentials": {"todoistApi": {"id": "{{ $credentials.todoistApi.id }}", "name": "Todoist account"}}, "retryOnFail": true, "typeVersion": 2, "waitBetweenTries": 5000, "notes": "This todoist node performs automated tasks as part of the workflow."}, {"id": "093bcb2e-79b7-427e-b13d-540a5b28f427", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [540, 200], "parameters": {"color": 3, "width": 358.6620209059232, "height": 256.5853658536585, "content": "## \ud83d\udcab To setup this template\n\n1. Add your Todoist credentials\n2. Add your OpenAI credentials\n3. Set your project names and add priority"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "430290e7-1732-46fe-a38d-fa6dc7f78a26", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [800, 700], "parameters": {"width": 192.77351916376313, "height": 80, "content": " \ud83d\udc46\ud83c\udffd Add your projects and priority here"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "6d5a1b7e-f7fa-4a1b-848c-1b4e79f6f667", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [1020, 420], "parameters": {"width": 192.77351916376313, "height": 80, "content": " \ud83d\udc47\ud83c\udffd Add your Todoist credentials here"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "feff35d2-e37d-48a5-9a90-c5a2efde688f", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [2060, 420], "parameters": {"width": 192.77351916376313, "height": 80, "content": " \ud83d\udc47\ud83c\udffd Add your Todoist credentials here"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "e454ebfe-47f6-4e39-8b89-d706da742911", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [1540, 700], "parameters": {"width": 192.77351916376313, "height": 80, "content": " \ud83d\udc46\ud83c\udffd Add your OpenAI credentials here"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "a79effcb-6904-4abf-835b-e1ccd94ca429", "name": "Your Projects", "type": "n8n-nodes-base.set", "position": [820, 520], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "50dc1412-21f8-4158-898d-3940a146586b", "name": "projects", "type": "object", "value": "={{ {\n  apartment: 1,\n  health: 2,\n  german: 3\n} }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "b5988629-2225-455f-b579-73e60449d2a3", "name": "Categorize", "type": "n8n-nodes-base.noOp", "position": [1460, 520], "parameters": {"modelId": {"__rl": true, "mode": "list", "value": "gpt-4o-mini", "cachedResultName": "GPT-4O-MINI"}, "options": {}, "messages": {"values": [{"role": "system", "content": "=Categorize the user's todo item to a project. Return the project name or just \"other\" if it does not belong to a project."}, {"content": "=Projects:\n{{ $('Your Projects').first().json.projects.keys().join('\\n') }}\n\nTodo item:\n{{ $('Get inbox tasks').item.json.content }}"}]}}, "credentials": {"openAiApi": {"id": "{{ $credentials.openAiApi.id }}", "name": "n8n OpenAi"}}, "typeVersion": 1.4, "notes": "This openAi node performs automated tasks as part of the workflow."}, {"id": "0dca3953-c0ac-4319-9323-c3aed9488bfb", "name": "If task is not a subtask", "type": "n8n-nodes-base.filter", "position": [1240, 520], "parameters": {"options": {}, "conditions": {"options": {"leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "36dd4bc9-1282-4342-89dd-1dac81c7290e", "operator": {"type": "string", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.parent_id }}", "rightValue": ""}]}}, "typeVersion": 2.1, "notes": "This filter node performs automated tasks as part of the workflow."}, {"id": "12e25a81-dbde-4542-a137-365329da415e", "name": "If other or ai hallucinates", "type": "n8n-nodes-base.filter", "position": [1820, 520], "parameters": {"options": {}, "conditions": {"options": {"leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "c4f69265-abe1-451c-8462-e68ff3b06799", "operator": {"type": "array", "operation": "contains", "rightType": "any"}, "leftValue": "={{ $('Your Projects').first().json.projects.keys() }}", "rightValue": "={{ $json.message.content }}"}]}}, "typeVersion": 2.1, "notes": "This filter node performs automated tasks as part of the workflow."}, {"id": "error-8e8ac337", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [1000, 400], "parameters": {"message": "Workflow execution error", "options": {}}}], "pinData": {}, "connections": {"b5988629-2225-455f-b579-73e60449d2a3": {"main": [[{"node": "error-handler-b5988629-2225-455f-b579-73e60449d2a3-7de04cb3", "type": "main", "index": 0}]]}}, "name": "Todoist Workflow", "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "description": "Automated workflow: Todoist Workflow. This workflow integrates 7 different services: stickyNote, filter, scheduleTrigger, set, stopAndError. It contains 13 nodes and follows best practices for error handling and security.", "meta": {"instanceId": "workflow-6f99ec13", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:51.946748", "updatedAt": "2025-09-29T07:07:51.946759", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "notes": "Excellent quality workflow: Todoist Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}