Automatisation Notion vers Clockify avec n8n : synchronisation efficace
Ce workflow n8n a pour objectif de synchroniser les données entre Notion et Clockify, permettant ainsi une gestion fluide des clients et des projets. Dans un contexte où les entreprises utilisent ces deux outils pour suivre leurs tâches et leurs projets, cette automatisation n8n facilite la mise à jour des informations sans intervention manuelle. Par exemple, lorsqu'un client est ajouté ou modifié dans Notion, les changements sont automatiquement répercutés dans Clockify, réduisant ainsi le risque d'erreurs et de pertes de temps. Le workflow commence par un déclencheur Webhook ou un déclencheur programmé qui active le processus. Ensuite, il récupère les identifiants des espaces de travail dans Clockify, puis compare les ensembles de données entre Notion et Clockify pour identifier les clients et projets actifs. Si un client n'est pas encore mappé dans Notion, le workflow crée un nouveau client dans Clockify. De même, les projets sont gérés de manière similaire, en mettant à jour ou en créant des projets selon les besoins. En intégrant cette automatisation dans votre entreprise, vous bénéficiez d'une réduction significative des tâches administratives, permettant à vos équipes de se concentrer sur des activités à plus forte valeur ajoutée. Cela améliore non seulement l'efficacité opérationnelle, mais assure également une cohérence des données entre vos outils de gestion. Tags clés : automatisation, Notion, Clockify.
Vue d'ensemble du workflow n8n
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Détail des nœuds du workflow n8n
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "HpjjgJm3Ulnl1cJQ",
"meta": {
"instanceId": "fb8bc2e315f7f03c97140b30aa454a27bc7883a19000fa1da6e6b571bf56ad6d",
"templateCredsSetupCompleted": true
},
"name": "Notion to Clockify Sync Template",
"tags": [
{
"id": "RKga6I6NviNI12bx",
"name": "template",
"createdAt": "2024-09-19T19:09:21.997Z",
"updatedAt": "2024-09-19T19:09:21.997Z"
}
],
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"id": "4dfe33a9-670c-400e-8ef9-090ca74b21f7",
"name": "Structure output",
"type": "n8n-nodes-base.noOp",
"position": [
1140,
-280
],
"parameters": {},
"typeVersion": 1
},
{
"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
},
{
"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
},
{
"id": "c608bfe4-07f4-45d8-a37b-3153a2e659a5",
"name": "No Operation",
"type": "n8n-nodes-base.noOp",
"position": [
260,
-200
],
"parameters": {},
"typeVersion": 1
},
{
"id": "92b717ba-9620-4fdf-abbc-1b2c5f9c3bf9",
"name": "Get active Clients from Notion",
"type": "n8n-nodes-base.notion",
"position": [
480,
-300
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Archive|checkbox",
"condition": "equals"
}
]
},
"options": {},
"resource": "databasePage",
"matchType": "allFilters",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "1a878e40-f803-80e4-bc79-e24747562817",
"cachedResultUrl": "https://www.notion.so/1a878e40f80380e4bc79e24747562817",
"cachedResultName": "Clients"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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": "Clockify Client ID|rich_text",
"condition": "equals",
"richTextValue": "={{ $json.clockify_client_id }}"
}
]
},
"options": {},
"resource": "databasePage",
"operation": "getAll",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "1a878e40-f803-80e4-bc79-e24747562817",
"cachedResultUrl": "https://www.notion.so/1a878e40f80380e4bc79e24747562817",
"cachedResultName": "Clients"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"alwaysOutputData": false,
"waitBetweenTries": 5000
},
{
"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
},
{
"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": "Clockify Client ID|rich_text",
"textContent": "={{ $json.id}}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"id": "6d43bed2-af7c-450d-b4fd-42f84a9081a2",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
2240,
-280
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3
},
{
"id": "a1046097-90ff-4447-a0d0-adb16ccc3c31",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
2020,
-680
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3b9e2bb5-cc78-4495-880f-3702b9edfead",
"name": "Get active Projects from Notion",
"type": "n8n-nodes-base.notion",
"position": [
480,
620
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Status|status",
"condition": "does_not_equal",
"statusValue": "Done"
},
{
"key": "Status|status",
"condition": "does_not_equal",
"statusValue": "Obsolete"
},
{
"key": "Clients|relation",
"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": "https://www.notion.so/1a878e40f80380bfa72ad7373be374b2",
"cachedResultName": "Buckets"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"id": "0624cebc-7310-4559-ac35-4447212fb4b0",
"name": "Update Project in Clockify",
"type": "n8n-nodes-base.httpRequest",
"position": [
1580,
740
],
"parameters": {
"url": "=https://api.clockify.me/api/v1/workspaces/{{ $('Globals').item.json.workspace_id }}/projects/{{ $('Compare Datasets1').item.json.clockify_project_id }}",
"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": "predefinedCredentialType",
"nodeCredentialType": "clockifyApi"
},
"credentials": {
"clockifyApi": {
"id": "CMJ0LAYOs143GAXw",
"name": "Clockify (octionictest)"
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 5000
},
{
"id": "5edb9a80-5d3a-4c2d-80a7-6d545f02b053",
"name": "Get completed Project from Notion",
"type": "n8n-nodes-base.notion",
"position": [
1140,
900
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Clockify Project ID|rich_text",
"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": "https://www.notion.so/1a878e40f80380bfa72ad7373be374b2",
"cachedResultName": "Buckets"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"id": "079795a3-51bc-4077-8fe1-84ed16e88125",
"name": "Create Project in Clockify",
"type": "n8n-nodes-base.httpRequest",
"position": [
1360,
340
],
"parameters": {
"url": "=https://api.clockify.me/api/v1/workspaces/{{ $('Globals').item.json.workspace_id }}/projects",
"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": "predefinedCredentialType",
"nodeCredentialType": "clockifyApi"
},
"credentials": {
"clockifyApi": {
"id": "CMJ0LAYOs143GAXw",
"name": "Clockify (octionictest)"
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"id": "b6224074-8712-4134-bc94-7b5f127f0971",
"name": "Structure output1",
"type": "n8n-nodes-base.noOp",
"position": [
1140,
640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "247b31ae-7bdf-4813-aa60-08ddade1dd70",
"name": "No Operation1",
"type": "n8n-nodes-base.noOp",
"position": [
260,
720
],
"parameters": {},
"typeVersion": 1
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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": "Clockify Project ID|rich_text",
"textContent": "={{ $json.id }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"id": "434a1c89-a388-4069-adf4-0f2da4e8ca3e",
"name": "Merge1",
"type": "n8n-nodes-base.merge",
"position": [
2240,
640
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3
},
{
"id": "19ecbb3b-8007-4a78-bba2-f31e3afca794",
"name": "No Operation, do nothing2",
"type": "n8n-nodes-base.noOp",
"position": [
2020,
240
],
"parameters": {},
"typeVersion": 1
},
{
"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": "https://www.notion.so/1a878e40f80380e68df1cf50776752da",
"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
},
{
"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
},
{
"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
},
{
"id": "f77a17b6-da10-4fb9-9e7f-83866132ec0e",
"name": "Get completed Task from Notion",
"type": "n8n-nodes-base.notion",
"position": [
1360,
1720
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Clockify Task ID|rich_text",
"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": "https://www.notion.so/1a878e40f80380e68df1cf50776752da",
"cachedResultName": "Tasks"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"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
},
{
"id": "399e5ebc-65d6-4af2-94ba-b4016602df4f",
"name": "Structure output2",
"type": "n8n-nodes-base.noOp",
"position": [
1360,
1460
],
"parameters": {},
"typeVersion": 1
},
{
"id": "63f911a9-f75e-46ae-91b1-ebbab6548471",
"name": "No Operation2",
"type": "n8n-nodes-base.noOp",
"position": [
260,
1540
],
"parameters": {},
"typeVersion": 1
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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": "Clockify Task ID|rich_text",
"textContent": "={{ $json.id }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "ObmaBA0dJss3JJPv",
"name": "Notion (Test)"
}
},
"retryOnFail": true,
"typeVersion": 2.2,
"waitBetweenTries": 5000
},
{
"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
},
{
"id": "ecebad5d-0462-4501-915c-9e15792a3e99",
"name": "Limit",
"type": "n8n-nodes-base.limit",
"position": [
2460,
20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ff50b701-9bc3-4336-961c-fb2513cc401c",
"name": "Limit1",
"type": "n8n-nodes-base.limit",
"position": [
2460,
940
],
"parameters": {},
"typeVersion": 1
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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
},
{
"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](https://steadfast-banjo-d1f.notion.site/1ae82b476c84808e9409c08baf382c45)\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(\"⏱️ View open time logs\", \"grey_background\"), \"https://app.clockify.me/reports/detailed?start=\" + 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
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c3e4f66b-5501-434d-a9aa-bc6c68780891",
"connections": {
"Limit": {
"main": [
[
{
"node": "No Operation1",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
]
]
},
"Limit1": {
"main": [
[
{
"node": "No Operation2",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Limit1",
"type": "main",
"index": 0
}
]
]
},
"Globals": {
"main": [
[
{
"node": "No Operation",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Get first workspace ID",
"type": "main",
"index": 0
}
]
]
},
"Map values": {
"main": [
[
{
"node": "Compare Datasets",
"type": "main",
"index": 0
}
]
]
},
"Map values1": {
"main": [
[
{
"node": "Compare Datasets",
"type": "main",
"index": 1
}
]
]
},
"Map values2": {
"main": [
[
{
"node": "Compare Datasets1",
"type": "main",
"index": 0
}
]
]
},
"Map values3": {
"main": [
[
{
"node": "Compare Datasets1",
"type": "main",
"index": 1
}
]
]
},
"Map values4": {
"main": [
[
{
"node": "Compare Datasets2",
"type": "main",
"index": 0
}
]
]
},
"Map values5": {
"main": [
[
{
"node": "Compare Datasets2",
"type": "main",
"index": 1
}
]
]
},
"No Operation": {
"main": [
[
{
"node": "Get active Clients from Notion",
"type": "main",
"index": 0
},
{
"node": "Get active Clients from Clockify",
"type": "main",
"index": 0
}
]
]
},
"No Operation1": {
"main": [
[
{
"node": "Get active Projects from Notion",
"type": "main",
"index": 0
},
{
"node": "Get active Projects from Clockify",
"type": "main",
"index": 0
}
]
]
},
"No Operation2": {
"main": [
[
{
"node": "Get active Projects from Clockify1",
"type": "main",
"index": 0
},
{
"node": "Get active Tasks from Notion",
"type": "main",
"index": 0
}
]
]
},
"Set new values": {
"main": [
[
{
"node": "Update Client in Clockify",
"type": "main",
"index": 0
}
]
]
},
"Set new values1": {
"main": [
[
{
"node": "Update Project in Clockify",
"type": "main",
"index": 0
}
]
]
},
"Set new values2": {
"main": [
[
{
"node": "Update Task in Clockify",
"type": "main",
"index": 0
}
]
]
},
"Compare Datasets": {
"main": [
[
{
"node": "If unmapped in Notion",
"type": "main",
"index": 0
}
],
[
{
"node": "Structure output",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Client in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Get archived Client from Notion",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get first workspace ID",
"type": "main",
"index": 0
}
]
]
},
"Structure output": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Compare Datasets1": {
"main": [
[
{
"node": "If unmapped in Notion1",
"type": "main",
"index": 0
}
],
[
{
"node": "Structure output1",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Project in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Get completed Project from Notion",
"type": "main",
"index": 0
}
]
]
},
"Compare Datasets2": {
"main": [
[
{
"node": "If unmapped in Notion2",
"type": "main",
"index": 0
}
],
[
{
"node": "Structure output2",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Task in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Get completed Task from Notion",
"type": "main",
"index": 0
}
]
]
},
"Structure output1": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"If unmapped in Notion": {
"main": [
[
{
"node": "Create Client in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Client in Clockify",
"type": "main",
"index": 0
}
]
]
},
"Get first workspace ID": {
"main": [
[
{
"node": "Globals",
"type": "main",
"index": 0
}
]
]
},
"If unmapped in Notion1": {
"main": [
[
{
"node": "Create Project in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Project in Clockify",
"type": "main",
"index": 0
}
]
]
},
"If unmapped in Notion2": {
"main": [
[
{
"node": "Create Task in Clockify",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Task in Clockify",
"type": "main",
"index": 0
}
]
]
},
"Create Task in Clockify": {
"main": [
[
{
"node": "Store Clockify ID in Notion2",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Create Client in Clockify": {
"main": [
[
{
"node": "Store Clockify ID in Notion",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing2": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Remove Task from Clockify": {
"main": [
[
{
"node": "Stop and Error2",
"type": "main",
"index": 0
}
]
]
},
"Update Client in Clockify": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 2
}
]
]
},
"Create Project in Clockify": {
"main": [
[
{
"node": "Store Clockify ID in Notion1",
"type": "main",
"index": 0
}
]
]
},
"Update Project in Clockify": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 2
}
]
]
},
"Remove Client from Clockify": {
"main": [
[
{
"node": "Stop and Error",
"type": "main",
"index": 0
}
]
]
},
"Store Clockify ID in Notion": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
],
[
{
"node": "Remove Client from Clockify",
"type": "main",
"index": 0
}
]
]
},
"Get active Tasks from Notion": {
"main": [
[
{
"node": "Map values4",
"type": "main",
"index": 0
}
]
]
},
"Remove Project from Clockify": {
"main": [
[
{
"node": "Stop and Error1",
"type": "main",
"index": 0
}
]
]
},
"Store Clockify ID in Notion1": {
"main": [
[
{
"node": "No Operation, do nothing2",
"type": "main",
"index": 0
}
],
[
{
"node": "Remove Project from Clockify",
"type": "main",
"index": 0
}
]
]
},
"Store Clockify ID in Notion2": {
"main": [
[],
[
{
"node": "Remove Task from Clockify",
"type": "main",
"index": 0
}
]
]
},
"Get active Clients from Notion": {
"main": [
[
{
"node": "Map values",
"type": "main",
"index": 0
}
]
]
},
"Get active Tasks from Clockify": {
"main": [
[
{
"node": "Map values5",
"type": "main",
"index": 0
}
]
]
},
"Get completed Task from Notion": {
"main": [
[
{
"node": "Set new values2",
"type": "main",
"index": 0
}
]
]
},
"Get active Projects from Notion": {
"main": [
[
{
"node": "Map values2",
"type": "main",
"index": 0
}
]
]
},
"Get archived Client from Notion": {
"main": [
[
{
"node": "Set new values",
"type": "main",
"index": 0
}
]
]
},
"Get active Clients from Clockify": {
"main": [
[
{
"node": "Map values1",
"type": "main",
"index": 0
}
]
]
},
"Get active Projects from Clockify": {
"main": [
[
{
"node": "Map values3",
"type": "main",
"index": 0
}
]
]
},
"Get completed Project from Notion": {
"main": [
[
{
"node": "Set new values1",
"type": "main",
"index": 0
}
]
]
},
"Get active Projects from Clockify1": {
"main": [
[
{
"node": "Get active Tasks from Clockify",
"type": "main",
"index": 0
}
]
]
}
}
}Pour qui est ce workflow ?
Ce workflow s'adresse aux entreprises utilisant Notion et Clockify pour la gestion de projets et de clients. Il est idéal pour les équipes de gestion de projet, les PME et les startups qui cherchent à automatiser leurs processus et à réduire les erreurs manuelles. Un niveau technique de base est recommandé pour la mise en place.
Problème résolu
Ce workflow résout le problème de la synchronisation manuelle des données entre Notion et Clockify, ce qui peut entraîner des erreurs et des incohérences. En automatisant ce processus, les utilisateurs éliminent les frustrations liées à la mise à jour des informations dans plusieurs systèmes. Après la mise en place de cette automatisation, les utilisateurs bénéficient d'une gestion des clients et des projets plus fluide et précise, ce qui leur permet de gagner du temps et d'améliorer leur productivité.
Étapes du workflow
Étape 1 : Le workflow est déclenché par un Webhook ou un déclencheur programmé. Étape 2 : Il récupère l'identifiant du premier espace de travail dans Clockify. Étape 3 : Les clients actifs sont extraits de Notion et de Clockify pour comparaison. Étape 4 : Si un client n'est pas mappé dans Notion, il est créé dans Clockify. Étape 5 : Les projets actifs sont également récupérés et synchronisés de manière similaire. Étape 6 : Les informations sont mises à jour dans les deux systèmes pour garantir la cohérence.
Guide de personnalisation du workflow n8n
Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à votre environnement. Il est également possible de changer les identifiants de base de données Notion et Clockify pour correspondre à vos configurations. Si vous souhaitez ajouter d'autres outils, vous pouvez intégrer des noeuds supplémentaires dans le flux. Assurez-vous de tester le flux après chaque modification pour garantir son bon fonctionnement. Pensez à sécuriser les accès API et à monitorer les performances du workflow pour une utilisation optimale.