This workflow follows the Execute Workflow Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "WorkFlow 02.01",
"nodes": [
{
"parameters": {
"resource": "databasePage",
"databaseId": {
"__rl": true,
"value": "{{NOTION_DB_ID_MASTER_TACHES}}",
"mode": "list",
"cachedResultName": "Master T\u00e2ches",
"cachedResultUrl": "https://www.notion.so/{{NOTION_DB_ID_MASTER_TACHES}}"
},
"title": "=",
"propertiesUi": {
"propertyValues": [
{
"key": "Nom|title",
"title": "=Certificat - {{ $json.name }}"
},
{
"key": "\u00c9tat|status",
"statusValue": "Pas commenc\u00e9"
},
{
"key": "Priorit\u00e9|select",
"selectValue": "Faible"
},
{
"key": "Dead line|date",
"includeTime": false,
"date": "={{ $json.property_date_due.start }}"
},
{
"key": "*R\u00e9f\u00e9rence n8n*|rich_text",
"textContent": "=Certificat\nID Database: {{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}\nID Page: {{ $json.id }}\nID Fournisseur : {{ $json.FournisseurID }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-3248,
96
],
"id": "97ba3d29-1cb6-4be2-9221-3852a020144a",
"name": "Create Tache",
"retryOnFail": false,
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput",
"notes": "Base m\u00e8re ID :{{NOTION_DB_ID_CERTIFICATS_FOURNISSEURS}}"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "97f6f57b-fecf-4bc4-b488-05a1a81b5207",
"name": "id",
"value": "={{ $('Create Tache').item.json.id }}",
"type": "string"
},
{
"id": "14344bae-7b96-427c-899c-eb5352f42901",
"name": "url",
"value": "={{ $json.url }}",
"type": "string"
},
{
"id": "362b4806-f728-471e-9b31-715c14fb3677",
"name": "ResponsableID",
"value": "={{ $('Input Tache').item.json.ResponsableID }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-2304,
96
],
"id": "848c2632-a52a-4703-b757-9eb22ceaeff0",
"name": "Redit",
"notesInFlow": false,
"onError": "continueRegularOutput"
},
{
"parameters": {
"method": "PATCH",
"url": "=https://api.notion.com/v1/pages/{{ $json.id }}",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "notionApi",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ \n JSON.stringify((() => {\n // Relation fixe\n const fixedRelation = [{ id: '{{NOTION_ID_GENERIC_06}}' }];\n\n // ID Responsable (one-way)\n const responsableId = $json.ResponsableID;\n\n // Payload PATCH\n return {\n properties: {\n FUUU: { relation: fixedRelation },\n pXDv: { relation: [{ id: responsableId }] },\n ':Rn_': { relation: [{ id: \"{{NOTION_ID_GENERIC_01}}\" }] },\n }\n };\n })())\n}}",
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-2064,
96
],
"id": "76ff0ef4-9ae1-43a0-9538-8e402dd98274",
"name": "Set Tache",
"retryOnFail": true,
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput",
"notes": "{{NOTION_ID_GENERIC_06}}\nFUUU\nehl%7B\npXDv"
},
{
"parameters": {
"method": "PATCH",
"url": "=https://api.notion.com/v1/blocks/{{ $json.id }}/children",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "notionApi",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{(() => {\n const equipementName = $('Input Tache').item.json.name; \n const equipementUrl = $json.url; \n const ressourceUrl = $json.property_ressources;\n \n return {\n children: [\n {\n object: 'block',\n type: 'paragraph',\n paragraph: {\n rich_text: [\n { type: 'text', text: { content: '\ud83d\udd17 Certificat li\u00e9 : ' } },\n { type: 'text', text: { content: equipementName, link: { url: equipementUrl } } }\n ]\n }\n },\n {\n object: 'block',\n type: 'paragraph',\n paragraph: {\n rich_text: [\n { type: 'text', text: { content: '\ud83d\udcc1 Suivez ce lien : ' } },\n { type: 'text', text: { content: \"Ressource\", link: { url: ressourceUrl } } }\n ]\n }\n }\n ]\n };\n})()}}",
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-1344,
80
],
"id": "8da88ef3-d270-4a19-9076-79ff925a1fdd",
"name": "Create Link",
"retryOnFail": true,
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput",
"notes": "{{NOTION_ID_GENERIC_02}}\nFUUU\nehl%7B\npXDv"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
-672,
624
],
"id": "06f5a249-8a88-40c1-8643-8ff373996cc9",
"name": "Merge"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
-304,
80
],
"id": "b3c94137-1a50-4647-98b9-6bd7cb23a9ef",
"name": "Merge1"
},
{
"parameters": {
"functionCode": "return items.map(i => {\n const log = i.json._log || {};\n \n // LIGNE 5 CORRIG\u00c9E\n const nodeName = i.json._lastNode || 'UnknownNode';\n \n const failed = !!i.json._hadError || !!i.json.error;\n \n // Message adaptatif\n const msg = i.json.error?.message || \n i.json._errMsg || \n (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n \n (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n \n if (failed) {\n log.ko = (log.ko || 0) + 1;\n log.failedNodes = log.failedNodes || {};\n log.failedNodes[nodeName] = true;\n } else {\n log.ok = (log.ok || 0) + 1;\n }\n \n i.json._log = log;\n return i;\n});"
},
"id": "3d29be48-6f54-4a69-9e0e-78b5f5656038",
"name": "Update Log13",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
-672,
64
]
},
{
"parameters": {
"resource": "databasePage",
"operation": "update",
"pageId": {
"__rl": true,
"value": "={{ $json.id }}",
"mode": "id"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Certificat Request|checkbox",
"checkboxValue": true
}
]
},
"options": {}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-928,
80
],
"id": "1502903f-1a38-4532-a622-2e73a2bfb93a",
"name": "Check Request",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"inputSource": "passthrough"
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-3696,
96
],
"id": "d066af81-a286-4b6b-95a2-7cd6a7a83f8b",
"name": "Input Tache"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "97f6f57b-fecf-4bc4-b488-05a1a81b5207",
"name": "id",
"value": "={{ $('Input Tache').item.json.id }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1120,
64
],
"id": "0abd0e3d-db04-4360-b232-891911c5e76a",
"name": "Redit1",
"notesInFlow": false,
"onError": "continueRegularOutput"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "97f6f57b-fecf-4bc4-b488-05a1a81b5207",
"name": "id",
"value": "={{ $('Create Tache').item.json.id }}",
"type": "string"
},
{
"id": "14344bae-7b96-427c-899c-eb5352f42901",
"name": "url",
"value": "={{ $json.url }}",
"type": "string"
},
{
"id": "362b4806-f728-471e-9b31-715c14fb3677",
"name": "ResponsableID",
"value": "={{ $('Input Tache').item.json.ResponsableID }}",
"type": "string"
},
{
"id": "99f9488d-a24c-49bb-b9df-244a672531f5",
"name": "property_ressources",
"value": "={{ $('Input Tache').item.json.property_ressources }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1568,
80
],
"id": "f7a57fe0-5b72-4821-8517-99f41339e277",
"name": "Redit2",
"notesInFlow": false,
"onError": "continueRegularOutput"
},
{
"parameters": {
"values": {
"string": [
{
"name": "_lastNode",
"value": "={{$prevNode.name}}"
},
{
"name": "_hadError",
"value": "={{ $json.error !== undefined }}"
},
{
"name": "_errMsg",
"value": "={{ $json.error?.message || ''}}"
}
]
},
"options": {}
},
"id": "42519e90-b2d7-441f-9bef-6a30e1f12913",
"name": "Log Snapshot",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
-3456,
96
]
},
{
"parameters": {
"functionCode": "return items.map(i => {\n const log = i.json._log || {};\n \n // LIGNE 5 CORRIG\u00c9E\n const nodeName = i.json._lastNode || 'UnknownNode';\n \n const failed = !!i.json._hadError || !!i.json.error;\n \n // Message adaptatif\n const msg = i.json.error?.message || \n i.json._errMsg || \n (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n \n (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n \n if (failed) {\n log.ko = (log.ko || 0) + 1;\n log.failedNodes = log.failedNodes || {};\n log.failedNodes[nodeName] = true;\n } else {\n log.ok = (log.ok || 0) + 1;\n }\n \n i.json._log = log;\n return i;\n});"
},
"id": "6c3995e5-186b-4ce7-915d-ecf255ca18c3",
"name": "Update Log2",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
-3024,
640
]
},
{
"parameters": {
"values": {
"string": [
{
"name": "_lastNode",
"value": "={{ ($workflow.name || 'Unknown Workflow') + \" - \" + ($json._log?.actions?.find(action => !action.ok)?.node || Object.keys($json._log?.failedNodes || {})[0] || 'UnknownNode') }}"
},
{
"name": "_hadError",
"value": "={{ $json.error !== undefined }}"
},
{
"name": "_errMsg",
"value": "={{ $json.error?.message || ''}}"
}
]
},
"options": {}
},
"id": "3b03352c-4c0d-4c04-b9e8-ecb63628c60c",
"name": "Log Snapshot1",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
-3232,
640
]
},
{
"parameters": {
"functionCode": "return items.map(i => {\n const log = i.json._log || {};\n \n // LIGNE 5 CORRIG\u00c9E\n const nodeName = i.json._lastNode || 'UnknownNode';\n \n const failed = !!i.json._hadError || !!i.json.error;\n \n // Message adaptatif\n const msg = i.json.error?.message || \n i.json._errMsg || \n (failed ? 'Erreur d\u00e9tect\u00e9e' : 'Succ\u00e8s');\n \n (log.actions ||= []).push({ node: nodeName, ok: !failed, msg });\n \n if (failed) {\n log.ko = (log.ko || 0) + 1;\n log.failedNodes = log.failedNodes || {};\n log.failedNodes[nodeName] = true;\n } else {\n log.ok = (log.ok || 0) + 1;\n }\n \n i.json._log = log;\n return i;\n});"
},
"id": "79c90b9f-b56d-4bf0-8300-3e192d9707b0",
"name": "Update Log",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [
-1520,
416
]
},
{
"parameters": {
"values": {
"string": [
{
"name": "_lastNode",
"value": "={{ ($workflow.name || 'Unknown Workflow') + \" - \" + ($json._log?.actions?.find(action => !action.ok)?.node || Object.keys($json._log?.failedNodes || {})[0] || 'UnknownNode') }}"
},
{
"name": "_hadError",
"value": "={{ $json.error !== undefined }}"
},
{
"name": "_errMsg",
"value": "={{ $json.error?.message || ''}}"
}
]
},
"options": {}
},
"id": "edf1b562-a486-46ed-a256-7c94cd2fda8f",
"name": "Log Snapshot2",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
-1808,
416
]
},
{
"parameters": {
"values": {
"string": [
{
"name": "_lastNode",
"value": "={{ ($workflow.name || 'Unknown Workflow') + \" - \" + ($json._log?.actions?.find(action => !action.ok)?.node || Object.keys($json._log?.failedNodes || {})[0] || 'UnknownNode') }}"
},
{
"name": "_hadError",
"value": "={{ $json.error !== undefined }}"
},
{
"name": "_errMsg",
"value": "={{ $json.error?.message || ''}}"
}
]
},
"options": {}
},
"id": "0a3d60d0-f353-4e56-9aa6-34ddab5b3ac9",
"name": "Log Snapshot3",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
-48,
80
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"resource": "databasePage",
"operation": "get",
"pageId": {
"__rl": true,
"value": "={{ $json.id }}",
"mode": "id"
},
"simple": false
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-3040,
96
],
"id": "9cc2f84d-cdcf-4dca-b129-5201a6560e55",
"name": "Get New T\u00e2che",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"resource": "databasePage",
"operation": "update",
"pageId": {
"__rl": true,
"value": "={{ $('Get New T\u00e2che').item.json.id }}",
"mode": "id"
},
"propertiesUi": {
"propertyValues": [
{
"key": "*R\u00e9f\u00e9rence n8n*|rich_text",
"textContent": "={{ $('Get New T\u00e2che').item.json.properties[\"*R\u00e9f\u00e9rence n8n*\"].rich_text[0].text.content }}\nTicket : {{ $('Get New T\u00e2che').item.json.properties.Ticket.unique_id.number }}"
},
{
"key": "Approbateur|people",
"peopleValue": "={{ $json.properties.Utilisateurs.rollup.array[0].people[0].id }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-2576,
96
],
"id": "9aa5c019-aa4d-45f6-9b2d-315493fbf1e7",
"name": "Update Ticket",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"resource": "databasePage",
"operation": "get",
"pageId": {
"__rl": true,
"value": "={{ $('Input Tache').item.json.ResponsableID }}",
"mode": "id"
},
"simple": false
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-2816,
80
],
"id": "6427cedf-23bd-4f72-a687-da36ae4c7507",
"name": "Get Approbateur Certificat",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "databasePage",
"operation": "get",
"pageId": {
"__rl": true,
"value": "={{ $('Input Tache').item.json.id }}",
"mode": "id"
}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
-1824,
80
],
"id": "30d905d1-0056-4772-aaf2-afd803bca819",
"name": "Get Certificat",
"executeOnce": false,
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"jsCode": "const allLogs = $input.all();\n\nconst consolidated = {\n workflow: allLogs[0].json._log?.workflow,\n startedAt: allLogs[0].json._log?.startedAt,\n finishedAt: new Date().toISOString(),\n ok: allLogs.reduce((sum, item) => sum + (item.json._log?.ok || 0), 0),\n ko: allLogs.reduce((sum, item) => sum + (item.json._log?.ko || 0), 0),\n \n // R\u00e9cup\u00e9ration des nodes en \u00e9chec (inchang\u00e9)\n failedNodes: allLogs.reduce((acc, item) => {\n if (item.json._hadError || item.json.error) {\n const nodeName = item.json._lastNode || item.json.error?.name || 'UnknownNode';\n acc[nodeName] = {\n error: true,\n message: item.json.error?.message || item.json._errMsg || 'Erreur inconnue'\n };\n }\n return acc;\n }, {}),\n \n // CORRECTION : R\u00e9cup\u00e9rer les vraies actions depuis _log.actions\n actions: allLogs.reduce((acc, item) => {\n // R\u00e9cup\u00e9rer les actions existantes dans _log.actions\n const existingActions = item.json._log?.actions || [];\n \n // Ajouter les actions existantes\n acc.push(...existingActions);\n \n // Si il y a une erreur globale sur cet item, ajouter une action d'erreur\n if (item.json._hadError || item.json.error) {\n const nodeName = item.json._lastNode || item.json.error?.name || 'UnknownNode';\n acc.push({\n node: nodeName,\n ok: false,\n msg: item.json.error?.message || item.json._errMsg || 'Erreur'\n });\n }\n \n return acc;\n }, [])\n};\n\nreturn [{ json: { _log: consolidated } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
160,
80
],
"id": "5d313d46-f9c5-4686-b929-cfe13423b704",
"name": "Returns item1"
}
],
"connections": {
"Create Tache": {
"main": [
[
{
"node": "Get New T\u00e2che",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot1",
"type": "main",
"index": 0
}
]
]
},
"Redit": {
"main": [
[
{
"node": "Set Tache",
"type": "main",
"index": 0
}
]
]
},
"Set Tache": {
"main": [
[
{
"node": "Get Certificat",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot1",
"type": "main",
"index": 0
}
]
]
},
"Create Link": {
"main": [
[
{
"node": "Redit1",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot2",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Log Snapshot3",
"type": "main",
"index": 0
}
]
]
},
"Update Log13": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Check Request": {
"main": [
[
{
"node": "Update Log13",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot2",
"type": "main",
"index": 0
}
]
]
},
"Input Tache": {
"main": [
[
{
"node": "Log Snapshot",
"type": "main",
"index": 0
}
]
]
},
"Redit1": {
"main": [
[
{
"node": "Check Request",
"type": "main",
"index": 0
}
]
]
},
"Redit2": {
"main": [
[
{
"node": "Create Link",
"type": "main",
"index": 0
}
]
]
},
"Log Snapshot": {
"main": [
[
{
"node": "Create Tache",
"type": "main",
"index": 0
}
]
]
},
"Log Snapshot1": {
"main": [
[
{
"node": "Update Log2",
"type": "main",
"index": 0
}
]
]
},
"Update Log2": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Log Snapshot2": {
"main": [
[
{
"node": "Update Log",
"type": "main",
"index": 0
}
]
]
},
"Update Log": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Log Snapshot3": {
"main": [
[
{
"node": "Returns item1",
"type": "main",
"index": 0
}
]
]
},
"Get New T\u00e2che": {
"main": [
[
{
"node": "Get Approbateur Certificat",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot1",
"type": "main",
"index": 0
}
]
]
},
"Update Ticket": {
"main": [
[
{
"node": "Redit",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot1",
"type": "main",
"index": 0
}
]
]
},
"Get Approbateur Certificat": {
"main": [
[
{
"node": "Update Ticket",
"type": "main",
"index": 0
}
]
]
},
"Get Certificat": {
"main": [
[
{
"node": "Redit2",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Snapshot2",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "a8db53ee-5fa7-4b0b-b43d-de32c92403a1",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "JRduRVzWHtHDooRk",
"tags": [
{
"createdAt": "2025-08-14T02:14:23.792Z",
"updatedAt": "2025-08-14T02:14:23.792Z",
"id": "JvXhVpM5OdySliGE",
"name": "T\u00e2che"
},
{
"createdAt": "2025-09-05T21:36:55.306Z",
"updatedAt": "2025-09-05T21:36:55.306Z",
"id": "WcYRBPxRn86MI1d8",
"name": "Create Certificat"
}
]
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
notionApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WorkFlow 02.01. Uses notion, httpRequest, executeWorkflowTrigger. Event-driven trigger; 22 nodes.
Source: https://github.com/WealthFinPilot/notion-qms-platform/blob/main/exports/workflows/wf-02-01-creation-tache-verification-certificats.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Workflow 01.01. Uses notion, executeWorkflowTrigger, httpRequest. Event-driven trigger; 60 nodes.
Automate sales call analysis and store structured insights in Notion with AI-powered intelligence.
WorkFlow 01.02. Uses notion, httpRequest, executeWorkflowTrigger. Event-driven trigger; 27 nodes.
WorkFlow 05.01. Uses executeWorkflowTrigger, notion, httpRequest. Event-driven trigger; 26 nodes.
WorkFlow 05.02. Uses httpRequest, notion, executeWorkflowTrigger. Event-driven trigger; 26 nodes.