Workflow: Notion to Clockify Sync Template
Integrations: clockify, compareDatasets, httpRequest, if, limit, merge, noOp, notion, scheduleTrigger, set, stickyNote, stopAndError, webhook

{"id": "HpjjgJm3Ulnl1cJQ", "meta": {"instanceId": "workflow-8fcc9fb8", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:55.527282", "updatedAt": "2025-09-29T07:07:55.527297", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "Notion to Clockify Sync Template", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "e0e40960-a45f-44a2-91b8-d0f45c254679", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [-400, -100], "webhookId": "43028c1f-7331-4fbe-bf56-d6f47c92d9be", "parameters": {"path": "43028c1f-7331-4fbe-bf56-d6f47c92d9be", "options": {}, "httpMethod": "POST"}, "typeVersion": 2, "notes": "This webhook node performs automated tasks as part of the workflow."}, {"id": "cda9abae-ede3-4ce1-8f2b-b2913eba887a", "name": "Globals", "type": "n8n-nodes-base.set", "position": [40, -200], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "0955695f-888f-46bc-807d-979a0798114f", "name": "workspace_id", "type": "string", "value": "={{ $json.id }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "a3d588b2-f169-479e-801b-2534bffc47ed", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [-400, -300], "parameters": {"rule": {"interval": [{"triggerAtHour": 4}]}}, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "73bccaca-2c54-4c40-9181-831c3a713f8a", "name": "Get first workspace ID", "type": "n8n-nodes-base.clockify", "position": [-180, -200], "parameters": {"limit": 1, "resource": "workspace"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "typeVersion": 1, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "d6e6fa71-fd9a-40ed-a915-02fae1fa3d78", "name": "Compare Datasets", "type": "n8n-nodes-base.compareDatasets", "position": [920, -220], "parameters": {"options": {}, "resolve": "mix", "mergeByFields": {"values": [{"field1": "clockify_client_id", "field2": "clockify_client_id"}]}}, "typeVersion": 2.3, "notes": "This compareDatasets node performs automated tasks as part of the workflow."}, {"id": "00a30e3d-e966-4512-829f-5c7729027c04", "name": "Stop and Error", "type": "n8n-nodes-base.stopAndError", "position": [2020, -460], "parameters": {"errorMessage": "Could not update client in Notion (deleted in Clockify again)"}, "typeVersion": 1, "notes": "This stopAndError node performs automated tasks as part of the workflow."}, {"id": "4dfe33a9-670c-400e-8ef9-090ca74b21f7", "name": "Structure output", "type": "n8n-nodes-base.noOp", "position": [1140, -280], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "029e1297-3133-433f-a779-c3c1a6b5762c", "name": "Map values", "type": "n8n-nodes-base.set", "position": [700, -300], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "8e12edff-162e-49eb-84de-2b060c1050f3", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "df7765a2-9452-4e67-a261-23ef5d2ad1f8", "name": "archived", "type": "boolean", "value": "={{ $json.property_archive }}"}, {"id": "eb2692cb-e40f-45c8-a3e3-ca676a3b6df3", "name": "clockify_client_id", "type": "string", "value": "={{ $json.property_clockify_client_id }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "4c7d62d1-9987-4f47-983a-e5d7c11d9f8f", "name": "Map values1", "type": "n8n-nodes-base.set", "position": [700, -100], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "043540c8-8784-4445-93c5-b945de834696", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "1cb47384-f444-484d-a1a1-41b4d7fe1d9a", "name": "archived", "type": "boolean", "value": "={{ $json.archived }}"}, {"id": "04b62bab-0db7-4f03-8c2e-2c45b6d5d3b8", "name": "clockify_client_id", "type": "string", "value": "={{ $json.id }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "c608bfe4-07f4-45d8-a37b-3153a2e659a5", "name": "No Operation", "type": "n8n-nodes-base.noOp", "position": [260, -200], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "92b717ba-9620-4fdf-abbc-1b2c5f9c3bf9", "name": "Get active Clients from Notion", "type": "n8n-nodes-base.notion", "position": [480, -300], "parameters": {"filters": {"conditions": [{"key": "YOUR_CREDENTIAL_HERE", "condition": "equals"}]}, "options": {}, "resource": "databasePage", "matchType": "allFilters", "operation": "getAll", "returnAll": true, "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80e4-bc79-e24747562817", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Clients"}, "filterType": "manual"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "af035e80-835d-4099-85dd-f7a24d6b9e47", "name": "Get active Clients from Clockify", "type": "n8n-nodes-base.clockify", "position": [480, -100], "parameters": {"resource": "client", "operation": "getAll", "returnAll": true, "workspaceId": "={{ $('Globals').item.json.workspace_id }}", "additionalFields": {"archived": false}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "872e869a-0e44-409d-8c3f-e3b24f28fbd2", "name": "If unmapped in Notion", "type": "n8n-nodes-base.if", "position": [1140, -480], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "26af0d64-ef8d-492e-87ca-6a893e8f85a1", "operator": {"type": "string", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.clockify_client_id }}", "rightValue": ""}]}}, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "ca45be8c-7dc7-4c2e-a7a0-8f8f0621e488", "name": "Set new values", "type": "n8n-nodes-base.set", "position": [1360, -20], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "bfc2ff08-56a1-49c1-b1db-475063f88032", "name": "archived", "type": "boolean", "value": true}, {"id": "2e8b2166-149b-4eed-8bf2-dd08e9b98210", "name": "name", "type": "string", "value": "={{ $json.name }}"}]}, "includeOtherFields": true}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "b44b7ccd-316a-487c-841e-7a27a117285e", "name": "Update Client in Clockify", "type": "n8n-nodes-base.clockify", "position": [1580, -180], "parameters": {"name": "={{ $json.name }}", "clientId": "={{ $('Compare Datasets').item.json.clockify_client_id }}", "resource": "client", "operation": "update", "workspaceId": "={{ $('Globals').item.json.workspace_id }}", "updateFields": {"archived": "={{ $json.archived }}"}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "6efa63a5-b242-4e25-87a9-9a6f90a923a7", "name": "Get archived Client from Notion", "type": "n8n-nodes-base.notion", "position": [1140, -20], "parameters": {"limit": 1, "filters": {"conditions": [{"key": "YOUR_CREDENTIAL_HERE", "condition": "equals", "richTextValue": "={{ $json.clockify_client_id }}"}]}, "options": {}, "resource": "databasePage", "operation": "getAll", "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80e4-bc79-e24747562817", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Clients"}, "filterType": "manual"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "alwaysOutputData": false, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "93fd7fa7-07fd-4ba4-a9c4-8043897e654e", "name": "Create Client in Clockify", "type": "n8n-nodes-base.clockify", "position": [1360, -580], "parameters": {"name": "={{ $json.name }}", "resource": "client", "workspaceId": "={{ $('Globals').item.json.workspace_id }}"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "ef51cbbf-2ea6-429b-a654-1510d28c4df3", "name": "Store Clockify ID in Notion", "type": "n8n-nodes-base.notion", "onError": "continueErrorOutput", "position": [1580, -580], "parameters": {"pageId": {"__rl": true, "mode": "id", "value": "={{ $('Get active Clients from Notion').item.json.id }}"}, "options": {}, "resource": "databasePage", "operation": "update", "propertiesUi": {"propertyValues": [{"key": "YOUR_CREDENTIAL_HERE", "textContent": "={{ $json.id}}"}]}}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "aff72e76-e59d-4402-a6e9-b21c07f1d3fc", "name": "Remove Client from Clockify", "type": "n8n-nodes-base.clockify", "position": [1800, -460], "parameters": {"clientId": "={{ $('Create Client in Clockify').item.json.id }}", "resource": "client", "operation": "delete", "workspaceId": "={{ $('Globals').item.json.workspace_id }}"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "6d43bed2-af7c-450d-b4fd-42f84a9081a2", "name": "Merge", "type": "n8n-nodes-base.merge", "position": [2240, -280], "parameters": {"numberInputs": 3}, "typeVersion": 3, "notes": "This merge node performs automated tasks as part of the workflow."}, {"id": "a1046097-90ff-4447-a0d0-adb16ccc3c31", "name": "No Operation, do nothing", "type": "n8n-nodes-base.noOp", "position": [2020, -680], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "3b9e2bb5-cc78-4495-880f-3702b9edfead", "name": "Get active Projects from Notion", "type": "n8n-nodes-base.notion", "position": [480, 620], "parameters": {"filters": {"conditions": [{"key": "YOUR_CREDENTIAL_HERE", "condition": "does_not_equal", "statusValue": "Done"}, {"key": "YOUR_CREDENTIAL_HERE", "condition": "does_not_equal", "statusValue": "Obsolete"}, {"key": "YOUR_CREDENTIAL_HERE", "condition": "is_not_empty"}]}, "options": {}, "resource": "databasePage", "matchType": "allFilters", "operation": "getAll", "returnAll": true, "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80bf-a72a-d7373be374b2", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Buckets"}, "filterType": "manual"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "17cdb708-b5cf-44d3-872e-fb3d2528dc85", "name": "Get active Projects from Clockify", "type": "n8n-nodes-base.clockify", "position": [480, 820], "parameters": {"operation": "getAll", "returnAll": true, "workspaceId": "={{ $('Globals').item.json.workspace_id }}", "additionalFields": {"archived": false}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "0624cebc-7310-4559-ac35-4447212fb4b0", "name": "Update Project in Clockify", "type": "n8n-nodes-base.httpRequest", "position": [1580, 740], "parameters": {"url": "{{ $env.BASE_URL }}", "method": "PUT", "options": {}, "jsonBody": "={\n  \"archived\": {{ $json.archived }},\n  \"clientId\": \"{{ $('Compare Datasets1').item.json.clockify_client_id }}\",\n  \"name\": \"{{ $json.name }}\"\n}", "sendBody": true, "specifyBody": "json", "authentication": "{{ $credentials.predefinedCredentialType }}", "nodeCredentialType": "YOUR_CREDENTIAL_HERE"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 4.2, "waitBetweenTries": 5000, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "5edb9a80-5d3a-4c2d-80a7-6d545f02b053", "name": "Get completed Project from Notion", "type": "n8n-nodes-base.notion", "position": [1140, 900], "parameters": {"filters": {"conditions": [{"key": "YOUR_CREDENTIAL_HERE", "condition": "equals", "richTextValue": "={{ $json.clockify_project_id }}"}]}, "options": {}, "resource": "databasePage", "matchType": "allFilters", "operation": "getAll", "returnAll": true, "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80bf-a72a-d7373be374b2", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Buckets"}, "filterType": "manual"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "079795a3-51bc-4077-8fe1-84ed16e88125", "name": "Create Project in Clockify", "type": "n8n-nodes-base.httpRequest", "position": [1360, 340], "parameters": {"url": "{{ $env.BASE_URL }}", "method": "POST", "options": {}, "jsonBody": "={\n  \"archived\": {{ $json.archived }},\n  \"clientId\": \"{{ $json.clockify_client_id }}\",\n  \"name\": \"{{ $('Get active Projects from Notion').item.json.name }}\"\n}", "sendBody": true, "specifyBody": "json", "authentication": "{{ $credentials.predefinedCredentialType }}", "nodeCredentialType": "YOUR_CREDENTIAL_HERE"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 4.2, "waitBetweenTries": 5000, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "53ad9719-ba0b-4858-846e-a338eae1d48e", "name": "Remove Project from Clockify", "type": "n8n-nodes-base.clockify", "position": [1800, 440], "parameters": {"clientId": "={{ $('Compare Datasets1').item.json.clockify_project_id }}", "resource": "client", "operation": "delete", "workspaceId": "={{ $('Globals').item.json.workspace_id }}"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "b6224074-8712-4134-bc94-7b5f127f0971", "name": "Structure output1", "type": "n8n-nodes-base.noOp", "position": [1140, 640], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "247b31ae-7bdf-4813-aa60-08ddade1dd70", "name": "No Operation1", "type": "n8n-nodes-base.noOp", "position": [260, 720], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "d92f6ced-133c-4881-98f1-f2dfd9b2c5d4", "name": "Map values2", "type": "n8n-nodes-base.set", "position": [700, 620], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "63fe0f05-c1b4-41b8-99e9-74f5ef2d51b6", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "44339109-9634-451b-965c-b2767aa3c628", "name": "archived", "type": "boolean", "value": "={{ ['Done', 'Obsolete'].includes($json.property_status) }}"}, {"id": "12f7a5b6-e98f-4fa7-ad67-208c54ab2924", "name": "clockify_project_id", "type": "string", "value": "={{ $json.property_clockify_project_id }}"}, {"id": "bddd1a9b-df7c-4d2f-891e-501639c786cc", "name": "clockify_client_id", "type": "string", "value": "={{ $json.property_clockify_client_id[0] || \"\" }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "7644f331-e5ae-47d1-ac6c-bf026fde2e9c", "name": "Map values3", "type": "n8n-nodes-base.set", "position": [700, 820], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "b2bea7bb-8b70-4268-84dd-a0463f8a30c1", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "bbe039ac-a0ac-4570-b4f6-e6728b1d68ff", "name": "archived", "type": "boolean", "value": "={{ $json.archived }}"}, {"id": "2547d142-507f-4f8b-bc65-1556e217c801", "name": "clockify_project_id", "type": "string", "value": "={{ $json.id }}"}, {"id": "7342b5ea-7da7-4158-bdca-ca40d1cdb042", "name": "clockify_client_id", "type": "string", "value": "={{ $json.clientId }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "9e7d0b28-dc9c-476b-9da7-36ec2354c45d", "name": "Compare Datasets1", "type": "n8n-nodes-base.compareDatasets", "position": [920, 700], "parameters": {"options": {}, "resolve": "mix", "mergeByFields": {"values": [{"field1": "clockify_project_id", "field2": "clockify_project_id"}]}}, "typeVersion": 2.3, "notes": "This compareDatasets node performs automated tasks as part of the workflow."}, {"id": "2b7ae0ca-0bac-4875-b5e4-e809938004fa", "name": "If unmapped in Notion1", "type": "n8n-nodes-base.if", "position": [1140, 440], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "26af0d64-ef8d-492e-87ca-6a893e8f85a1", "operator": {"type": "string", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.clockify_project_id }}", "rightValue": ""}]}}, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "b118db13-1ee1-41ce-9232-dfd8eec40104", "name": "Set new values1", "type": "n8n-nodes-base.set", "position": [1360, 900], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "bfc2ff08-56a1-49c1-b1db-475063f88032", "name": "archived", "type": "boolean", "value": true}, {"id": "2e8b2166-149b-4eed-8bf2-dd08e9b98210", "name": "name", "type": "string", "value": "={{ $json.name }}"}]}, "includeOtherFields": true}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "49a65fbe-ba66-4127-a5af-f5fdf2cf8b37", "name": "Store Clockify ID in Notion1", "type": "n8n-nodes-base.notion", "onError": "continueErrorOutput", "position": [1580, 340], "parameters": {"pageId": {"__rl": true, "mode": "id", "value": "={{ $('Get active Projects from Notion').item.json.id }}"}, "options": {}, "resource": "databasePage", "operation": "update", "propertiesUi": {"propertyValues": [{"key": "YOUR_CREDENTIAL_HERE", "textContent": "={{ $json.id }}"}]}}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "d995e6e4-588e-4e26-9531-d40b5ba3ab86", "name": "Stop and Error1", "type": "n8n-nodes-base.stopAndError", "position": [2020, 440], "parameters": {"errorMessage": "Could not update bucket in Notion (deleted in Clockify again)"}, "typeVersion": 1, "notes": "This stopAndError node performs automated tasks as part of the workflow."}, {"id": "434a1c89-a388-4069-adf4-0f2da4e8ca3e", "name": "Merge1", "type": "n8n-nodes-base.merge", "position": [2240, 640], "parameters": {"numberInputs": 3}, "typeVersion": 3, "notes": "This merge node performs automated tasks as part of the workflow."}, {"id": "19ecbb3b-8007-4a78-bba2-f31e3afca794", "name": "No Operation, do nothing2", "type": "n8n-nodes-base.noOp", "position": [2020, 240], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "30719262-f037-4d00-a7a4-2a85180c2a8c", "name": "Get active Tasks from Notion", "type": "n8n-nodes-base.notion", "position": [700, 1440], "parameters": {"options": {}, "resource": "databasePage", "operation": "getAll", "returnAll": true, "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80e6-8df1-cf50776752da", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tasks"}, "filterJson": "={\n  \"and\": [\n    {\n      \"property\": \"Status\",\n      \"status\": {\n        \"does_not_equal\": \"Done\"\n      }\n    },\n    {\n      \"property\": \"Status\",\n      \"status\": {\n        \"does_not_equal\": \"Obsolete\"\n      }\n    },\n    {\n      \"property\": \"Clients\",\n      \"rollup\": {\n        \"any\": {\n          \"select\": {\n            \"is_not_empty\": true\n          }\n        }\n      }\n    }\n  ]\n}", "filterType": "json"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "2cfb387a-f6fa-4ace-afdf-687680b1659d", "name": "Get active Tasks from Clockify", "type": "n8n-nodes-base.clockify", "position": [700, 1640], "parameters": {"filters": {"is-active": true}, "resource": "task", "operation": "getAll", "projectId": "={{ $json.id }}", "returnAll": true, "workspaceId": "={{ $('Globals').item.json.workspace_id }}"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "alwaysOutputData": false, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "938801f2-d5c6-4e95-970d-29fa3ba6ba4b", "name": "Update Task in Clockify", "type": "n8n-nodes-base.clockify", "position": [1800, 1560], "parameters": {"taskId": "={{ $('Compare Datasets2').item.json.clockify_task_id }}", "resource": "task", "operation": "update", "projectId": "={{ $('Compare Datasets2').item.json.clockify_project_id }}", "workspaceId": "={{ $('Globals').item.json.workspace_id }}", "updateFields": {"name": "={{ $json.name }}", "status": "={{ $json.archived ? 'DONE' : 'ACTIVE' }}"}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "f77a17b6-da10-4fb9-9e7f-83866132ec0e", "name": "Get completed Task from Notion", "type": "n8n-nodes-base.notion", "position": [1360, 1720], "parameters": {"filters": {"conditions": [{"key": "YOUR_CREDENTIAL_HERE", "condition": "equals", "richTextValue": "={{ $json.clockify_task_id }}"}]}, "options": {}, "resource": "databasePage", "matchType": "allFilters", "operation": "getAll", "returnAll": true, "databaseId": {"__rl": true, "mode": "list", "value": "1a878e40-f803-80e6-8df1-cf50776752da", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tasks"}, "filterType": "manual"}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "da34def3-17ac-461e-bec3-5bcdbfdd3609", "name": "Create Task in Clockify", "type": "n8n-nodes-base.clockify", "position": [1580, 1160], "parameters": {"name": "={{ $json.name }}", "resource": "task", "projectId": "={{ $json.clockify_project_id }}", "workspaceId": "={{ $('Globals').item.json.workspace_id }}", "additionalFields": {}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "c8adb686-8667-466e-a7f9-32e8dd7c1721", "name": "Remove Task from Clockify", "type": "n8n-nodes-base.clockify", "position": [2020, 1260], "parameters": {"taskId": "={{ $('Compare Datasets2').item.json.clockify_task_id }}", "resource": "task", "operation": "delete", "projectId": "={{ $('Compare Datasets2').item.json.clockify_project_id }}", "workspaceId": "={{ $('Globals').item.json.workspace_id }}"}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "399e5ebc-65d6-4af2-94ba-b4016602df4f", "name": "Structure output2", "type": "n8n-nodes-base.noOp", "position": [1360, 1460], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "63f911a9-f75e-46ae-91b1-ebbab6548471", "name": "No Operation2", "type": "n8n-nodes-base.noOp", "position": [260, 1540], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "7ca89d07-1e82-4bbf-8fa6-5becd996b0b9", "name": "Map values4", "type": "n8n-nodes-base.set", "position": [920, 1440], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "63fe0f05-c1b4-41b8-99e9-74f5ef2d51b6", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "44339109-9634-451b-965c-b2767aa3c628", "name": "archived", "type": "boolean", "value": "={{ ['Done', 'Obsolete'].includes($json.property_status) }}"}, {"id": "bddd1a9b-df7c-4d2f-891e-501639c786cc", "name": "clockify_task_id", "type": "string", "value": "={{ $json.property_clockify_task_id }}"}, {"id": "12f7a5b6-e98f-4fa7-ad67-208c54ab2924", "name": "clockify_project_id", "type": "string", "value": "={{ $json.property_clockify_project_id[0] || \"\" }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "a9dcf9f2-8cb1-4dc4-9136-25d25ec5033e", "name": "Map values5", "type": "n8n-nodes-base.set", "position": [920, 1640], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "b2bea7bb-8b70-4268-84dd-a0463f8a30c1", "name": "name", "type": "string", "value": "={{ $json.name }}"}, {"id": "bbe039ac-a0ac-4570-b4f6-e6728b1d68ff", "name": "archived", "type": "boolean", "value": "={{ $json.status !== 'ACTIVE' }}"}, {"id": "7342b5ea-7da7-4158-bdca-ca40d1cdb042", "name": "clockify_task_id", "type": "string", "value": "={{ $json.id }}"}, {"id": "2547d142-507f-4f8b-bc65-1556e217c801", "name": "clockify_project_id", "type": "string", "value": "={{ $json.projectId }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "20b17136-fd8c-4e79-9d39-b31a149e9867", "name": "Get active Projects from Clockify1", "type": "n8n-nodes-base.clockify", "position": [480, 1640], "parameters": {"operation": "getAll", "returnAll": true, "workspaceId": "={{ $('Globals').first().json.workspace_id }}", "additionalFields": {"archived": false}}, "credentials": {"clockifyApi": {"id": "CMJ0LAYOs143GAXw", "name": "Clockify (octionictest)"}}, "retryOnFail": true, "typeVersion": 1, "waitBetweenTries": 5000, "notes": "This clockify node performs automated tasks as part of the workflow."}, {"id": "ec63d256-5abb-49c6-b6c8-67daf653f67e", "name": "Compare Datasets2", "type": "n8n-nodes-base.compareDatasets", "position": [1140, 1520], "parameters": {"options": {}, "resolve": "mix", "mergeByFields": {"values": [{"field1": "clockify_task_id", "field2": "clockify_task_id"}]}}, "typeVersion": 2.3, "notes": "This compareDatasets node performs automated tasks as part of the workflow."}, {"id": "c759e651-5c28-4b72-8f5f-628396e054a7", "name": "If unmapped in Notion2", "type": "n8n-nodes-base.if", "position": [1360, 1260], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "26af0d64-ef8d-492e-87ca-6a893e8f85a1", "operator": {"type": "string", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.clockify_task_id }}", "rightValue": ""}]}}, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow."}, {"id": "91d86b0f-8823-4eb6-9d62-c423134645ad", "name": "Set new values2", "type": "n8n-nodes-base.set", "position": [1580, 1720], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "bfc2ff08-56a1-49c1-b1db-475063f88032", "name": "archived", "type": "boolean", "value": true}, {"id": "2e8b2166-149b-4eed-8bf2-dd08e9b98210", "name": "name", "type": "string", "value": "={{ $json.name }}"}]}, "includeOtherFields": true}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "ec95b97a-4bea-4726-8114-8cc352f11162", "name": "Store Clockify ID in Notion2", "type": "n8n-nodes-base.notion", "onError": "continueErrorOutput", "position": [1800, 1160], "parameters": {"pageId": {"__rl": true, "mode": "id", "value": "={{ $('Get active Tasks from Notion').item.json.id }}"}, "options": {}, "resource": "databasePage", "operation": "update", "propertiesUi": {"propertyValues": [{"key": "YOUR_CREDENTIAL_HERE", "textContent": "={{ $json.id }}"}]}}, "credentials": {"notionApi": {"id": "ObmaBA0dJss3JJPv", "name": "Notion (Test)"}}, "retryOnFail": true, "typeVersion": 2.2, "waitBetweenTries": 5000, "notes": "This notion node performs automated tasks as part of the workflow."}, {"id": "0baa8a13-7190-42c2-bfa6-e53771e48e65", "name": "Stop and Error2", "type": "n8n-nodes-base.stopAndError", "position": [2240, 1260], "parameters": {"errorMessage": "Could not update task in Notion (deleted in Clockify again)"}, "typeVersion": 1, "notes": "This stopAndError node performs automated tasks as part of the workflow."}, {"id": "ecebad5d-0462-4501-915c-9e15792a3e99", "name": "Limit", "type": "n8n-nodes-base.limit", "position": [2460, 20], "parameters": {}, "typeVersion": 1, "notes": "This limit node performs automated tasks as part of the workflow."}, {"id": "ff50b701-9bc3-4336-961c-fb2513cc401c", "name": "Limit1", "type": "n8n-nodes-base.limit", "position": [2460, 940], "parameters": {}, "typeVersion": 1, "notes": "This limit node performs automated tasks as part of the workflow."}, {"id": "4189d36a-72d2-47e2-b800-e9355f411717", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [220, -700], "parameters": {"color": 5, "width": 2420, "height": 880, "content": "# Sync Clients"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "c9bafea6-74c6-4978-bd78-58312ab5e812", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [220, 220], "parameters": {"color": 5, "width": 2420, "height": 880, "content": "# Sync Projects"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "9537b98c-a70d-4d5a-902a-9809965e5ee2", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [220, 1140], "parameters": {"color": 5, "width": 2420, "height": 780, "content": "# Sync Tasks"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "a38ec76e-c8e8-46fe-95af-a04dda8d8c08", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [-20, -360], "parameters": {"width": 220, "height": 320, "content": "## Set Globals (optional)\nBy default the fist available workspace ID is set. This can be overridden here."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "a366f477-87b5-4fe8-aed8-761f2941f2d1", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [-460, -460], "parameters": {"width": 220, "height": 520, "content": "## Set triggers\nBy default this workflow runs once a day. Additionally a webhook allows for manual calls using a Notion button."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "2566cdd1-4fe2-4d61-b2a0-47ebdaf8c9a1", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [1300, 1620], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the tasks database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "029ec90b-dacd-4d80-b78e-4983a646b3db", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [420, -400], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the clients database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "1851f5ed-5c51-4545-a4f4-ef3fa268998c", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [1080, -120], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the clients database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "a1562c09-033c-43df-9456-a9fe4775133f", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [1080, 800], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the projects database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "20a722ec-e89d-4801-903d-ab84635772e7", "name": "Sticky Note9", "type": "n8n-nodes-base.stickyNote", "position": [420, 520], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the projects database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "67d3f286-9025-43a0-978c-74b9e1aee176", "name": "Sticky Note10", "type": "n8n-nodes-base.stickyNote", "position": [640, 1340], "parameters": {"width": 220, "height": 280, "content": "## Select database\nChoose the tasks database."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "f90dc5a3-e824-4331-b68f-848dd3c11813", "name": "Sticky Note11", "type": "n8n-nodes-base.stickyNote", "position": [-460, 160], "parameters": {"width": 660, "height": 1160, "content": "# Setup\n## Prerequisites\nThis workflow expects a database structure with at least having the structure mentioned below. Alternatively start with [this Notion Template]({{ $env.WEBHOOK_URL }}\n### Clients\n- Name (Text)\n- Archive (Checkbox)\n- Clockify Client ID (Text)\n### Projects\n- Name (Text)\n- Status (Status)\n  - required options: \"Done\", \"Obsolete\" and at least one more\n  - recommended options: \"Backlog\", \"In progress\", \"On hold\"\n- Clockify Client ID (Rollup: Clients -> Clockify Client ID)\n- Clockify Project ID (Text)\n### Tasks\n- Name (Text)\n- Status (Status)\n  - required options: \"Done\", \"Obsolete\" and at least one more\n  - recommended options: \"Backlog\", \"In progress\", \"On hold\"\n- Clockify Project ID (Rollup: Projects -> Clockify Project ID)\n- Clockify Task ID (Text)\n- Clients (Rollup: Projects -> Clients)\n## Update this workflow\n- Set the credentials accordingly\n- Check for all other yellow sticky notes\n\n## Add report button in Notion (optional)\nAdd a Formula field named \"Clockify Report\" or similar to the projects database and insert the following value:\n```if(prop(\"Clockify Project ID\").length() > 0, link(style(\"\u23f1\ufe0f View open time logs\", \"grey_background\"), \"{{ $env.WEBHOOK_URL }}\" + formatDate(dateSubtract(today(), 1, \"years\"), \"YYYY-MM-DD\") + \"T00:00:00.000Z&end=\" + formatDate(today(), \"YYYY-MM-DD\") + \"T23:59:59.999Z&filterValuesData=%7B%22tags%22:%5B%2267c381166730bf39cdcce516%22%5D,%22projects%22:%5B%22\" + prop(\"Clockify Project ID\") + \"%22%5D%7D&filterOptions=%7B%22tags%22:%7B%22status%22:%22ACTIVE%22,%22contains%22:%22DOES_NOT_CONTAIN%22%7D,%22projects%22:%7B%22status%22:%22ACTIVE%22%7D%7D&page=1&pageSize=50\"), \"\")```\n\n## Add sync button to Notion (optional)\n_This requires a paid Notion plan_\n- Grab the production URL of the Webhook Node\n- Create a button in Notion next to a view of the Clients Database\n- Add a webhook call action and paste copied URL\n- Name the button \"Sync to Clockify\" or similar"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "c3e4f66b-5501-434d-a9aa-bc6c68780891", "connections": {"e0e40960-a45f-44a2-91b8-d0f45c254679": {"main": [[{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-69b69bce", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-6fd7716c", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-25a70531", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-274e14ec", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-786749e4", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-c1f2a750", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-fbf9d47a", "type": "main", "index": 0}], [{"node": "error-handler-e0e40960-a45f-44a2-91b8-d0f45c254679-6327ff15", "type": "main", "index": 0}]]}, "0624cebc-7310-4559-ac35-4447212fb4b0": {"main": [[{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-fc27885f", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-36935f1f", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-2bbd3982", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-39bfa14e", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-ea27f12f", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-db125c41", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-28cf16f7", "type": "main", "index": 0}], [{"node": "error-handler-0624cebc-7310-4559-ac35-4447212fb4b0-1bf0b823", "type": "main", "index": 0}]]}, "079795a3-51bc-4077-8fe1-84ed16e88125": {"main": [[{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-a38b9e65", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-a9859a84", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-6e7d6cb0", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-9583fe40", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-980a7854", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-94647520", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-d47c255c", "type": "main", "index": 0}], [{"node": "error-handler-079795a3-51bc-4077-8fe1-84ed16e88125-529ec3b0", "type": "main", "index": 0}]]}}, "description": "Automated workflow: Notion to Clockify Sync Template. This workflow integrates 13 different services: webhook, stickyNote, httpRequest, scheduleTrigger, merge. It contains 71 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Notion to Clockify Sync Template. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}