Realtime Notion Todoist 2-way Sync Template
Realtime Notion Todoist 2-way Sync Template
Complex
High
246
Nodes
Complex
Trigger
High
Complexity
7/22/2025
Added
Workflow Overview
Total Nodes
246
Node Types
29
Node Types
todoist
Mark as Completed in Todoist, Delete Task in Todoist, Mark as Incomplete in Todoist, Todoist, Get Todoist Task, Update Description in Todoist, Update Description in Todoist1, Get Todoist Task1, Mark as Completed in Todoist1, Mark as Incomplete in Todoist1, Delete Task in Todoist2, Get Todoist Task2
12 nodes
split In Batches
Loop Over Items, Loop Over Items1
2 nodes
notion
Get Notion Task, Get Notion Databases, Notion, Store Todoist ID, Create task in Notion, Update task in Notion, Mark as Done in Notion, Mark as Obsolete in Notion, Mark as In Progress in Notion, Mark as Focussed in Notion, Get Notion Task2, Get Notion Task1, Get Notion task, Store Todoist ID1, Append Notion Block
15 nodes
http Request
Get projects, Get sections, Exchange Tokens, Update Task in Todoist, Update task in Todoist before closing, Create task in Todoist, Update section (Sync API), Update task in Todoist, Update section (Sync API)1, Update task in Todoist1, Update section (Sync API)2, Create task in Todoist1
12 nodes
code
Prep Dropdown, Prep Dropdown1, Generate config, Store variables, Get variables, Get Notion Database ID, Get Todoist Project ID, Map Notion to Todoist, Map Notion to Todoist1, Handle empty dates, Handle empty dates1, Handle empty dates2, Map Todoist to Notion, Get Backlog Section ID, Map Todoist to Notion1, Map Notion to Todoist2, Turn Markdown into Notion Blocks
17 nodes
form
Choose Notion Database, Choose Todoist Project, Redirect to Auth Page, Return config JSON
4 nodes
if
Verify security token, Exists/Completed in Notion, If Todoist ID exists, Status is Done, Notion Task not found, If event is not :deleted, Has been completed?, Todoist ID exists?, Status is Obsolete?, Neither focussed nor planned, Body is array?, Has not been completed?, Catch known error, If tries left, Catch known error1, If tries left1, Catch known error2, If tries left2
18 nodes
crypto
Generate security token, Generate UUID, Generate UUID1, Generate UUID2
4 nodes
webhook
OAuth redirect, Notion Webhook, Todoist Webhook, Webhook
4 nodes
respond To Webhook
Respond with success, Respond with error
2 nodes
form Trigger
Notion-Todoist Sync Setup Helper, Todoist Webhook Setup Helper
2 nodes
compare Datasets
Compare Datasets
1 node
set
Pick Todoist Fields, Add project ID, Prepare Batching Items, Get mapped item, Get mapped item1, Prepare summary data, Prepare summary data1, Prepare summary data2, Map summary fields, Get mapped item2, Globals, Globals1, Get todoist ID, Get todoist ID1, Globals2, Extract IDs, Set tries, Update tries, Set tries1, Update tries1, Set tries2, Update tries2
22 nodes
redis
Lock Todoist ID, Lock Todoist ID1, Lock Todoist ID2, Lock Notion ID, Check if Todoist ID is locked, Check if creating flag exists1, Set creating flag1, Check if Notion ID is locked, Check if creating flag exists, Set creating flag, Lock Todoist ID4
11 nodes
filter
Status changed, Filter out status changes, Differences exist1, Requires completion change1, Only continue if not locked, Description has changed in Todoist, Only continue if flag does not exist1, Neither focussed nor planned1, Notion Task found1, Requires completion change, Differences exist, Only continue if not locked1, Only continue if flag does not exist, Todoist ID exists, Status changed but not empty, Status is not Done, Due date empty
17 nodes
aggregate
Aggregate
1 node
schedule Trigger
Schedule Trigger
1 node
merge
Merge, Merge summary
2 nodes
html
Convert to HTML Table, Generate email body
2 nodes
gmail
Gmail
1 node
sticky Note
Sticky Note8, Sticky Note9, Sticky Note10, Sticky Note14, Sticky Note15, Sticky Note16, Sticky Note17, Sticky Note12, Sticky Note23, Sticky Note26, Sticky Note27, Sticky Note28, Sticky Note29, Sticky Note31, Sticky Note32, Sticky Note33, Sticky Note35, Sticky Note36, Sticky Note37, Sticky Note46, Sticky Note47, Sticky Note22, Sticky Note24, Sticky Note25, Sticky Note38, Sticky Note39, Sticky Note41, Sticky Note42, Sticky Note43, Sticky Note44, Sticky Note45, Sticky Note48, Sticky Note5, Sticky Note20, Sticky Note7, Sticky Note19, Sticky Note11, Sticky Note13, Sticky Note6, Sticky Note49, Sticky Note51, Sticky Note52, Sticky Note53, Sticky Note54, Sticky Note55, Sticky Note56, Sticky Note57, Sticky Note58, Sticky Note59, Sticky Note60, Sticky Note61, Sticky Note62, Sticky Note63, Sticky Note64, Sticky Note65, Sticky Note66, Sticky Note21, Sticky Note67, Sticky Note1, Sticky Note50, Sticky Note68, Sticky Note69, Sticky Note70, Sticky Note72, Sticky Note2, Sticky Note, Sticky Note3, Sticky Note18, Sticky Note4, Sticky Note30, Sticky Note34, Sticky Note40
72 nodes
execute Workflow Trigger
Execute Workflow Trigger
1 node
no Op
Todoist trigger reference, Notion trigger reference, End here
3 nodes
switch
Switch by Event, Switch by project, Switch
3 nodes
execution Data
Execution Data, Execution Data1, Execution Data2, Execution Data3, Execution Data4, Execution Data5, Execution Data6
7 nodes
execute Workflow
Execute Workflow, Execute Workflow1
2 nodes
split Out
Split out Notion changes, Handle each block separately
2 nodes
stop And Error
Retry limit reached, Retry limit reached1, Retry limit reached2
3 nodes
wait
Wait, Wait1, Wait2
3 nodes
Workflow JSON
200.8 KB
{
"id": "k9abwUyVzl7OCsAl",
"meta": {
"instanceId": "fb8bc2e315f7f03c97140b30aa454a27bc7883a19000fa1da6e6b571bf56ad6d"
},
"name": "Realtime Notion Todoist 2-way Sync Template",
"tags": [
{
"id": "RKga6I6NviNI12bx",
"name": "template",
"createdAt": "2024-09-19T19:09:21.997Z",
"updatedAt": "2024-09-19T19:09:21.997Z"
}
],
"nodes": [
{
"id": "5e0488a3-270d-46b3-8b4b-f4ee459a3016",
"name": "Get projects",
"type": "n8n-nodes-base.httpRequest",
"position": [
-700,
260
],
"parameters": {
"url": "https://api.todoist.com/rest/v2/projects",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "todoistApi"
},
"credentials": {
"todoistApi": {
"id": "Dp3VoWGH5IhrK22k",
"name": "Todoist (mario.haarmann)"
}
},
"typeVersion": 4.2
},
{
"id": "e52b0a6d-4697-4c42-91c9...Showing first 1000 characters. Click "Expand" to view the full JSON.