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": "Prevent concurrent workflow runs using Redis",
"nodes": [
{
"id": "e0729c93-e192-42fb-9ba0-c465d5a38089",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-60,
720
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "action"
},
{
"name": "value"
},
{
"name": "key"
},
{
"name": "timeout"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "caee6ecf-76ee-4014-8e85-a2463dcbba86",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
380,
720
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "get",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "97af18cf-bcf5-4b86-86fd-1ee82e9adba9",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "get"
}
]
},
"renameOutput": true
},
{
"outputKey": "set",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "439b4586-bd92-40b7-afbc-9e651032b390",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "set"
}
]
},
"renameOutput": true
},
{
"outputKey": "unset",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "56457547-42b6-4e0a-8d1e-cb953f3d6a9d",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.action }}",
"rightValue": "unset"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "7427686e-6e17-45d2-b79d-cbf22ce2a839",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-700,
1260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "922a8778-b800-4fc8-8da9-de3077289fda",
"name": "If2",
"type": "n8n-nodes-base.if",
"position": [
420,
220
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "210ed6f8-0b42-4382-9f42-1deb14cab551",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.output }}",
"rightValue": "[null]"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3422b389-6f3f-4ff4-8170-48eb284a34ce",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
-20
],
"parameters": {
"width": 860,
"height": 420,
"content": "## Check if working\nWill output status if something is going on.\n\nInputs:\n- action -> \"get\"\n- key -> a string used for tracking\n\n* Remove unused inputs when calling workflow *"
},
"typeVersion": 1
},
{
"id": "78a21b91-d11c-4c85-814a-9074cce64383",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
-20
],
"parameters": {
"width": 1080,
"height": 420,
"content": "## Set workflow start\n\nInputs:\n- action -> \"set\"\n- key -> a string used for tracking\n- value -> \"working\" by default but you can use whatever, you can use this multiple times in combination with get to track progress of a execution.\n\n* Remove unused inputs when calling workflow *"
},
"typeVersion": 1
},
{
"id": "c200a3f4-df46-44a4-8747-180d3df841ab",
"name": "Is Workflow Active",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
200,
220
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "get"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "e56202e7-5227-4002-9d92-861cf76f1840",
"name": "Set Workflow Active",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1360,
220
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"value": "working",
"action": "set"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "2324d74c-b519-462b-af5c-13aa9e02ef88",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
440
],
"parameters": {
"width": 820,
"height": 640,
"content": "## Set workflow end\nThis mark workflow end by unsetting the key.\n\nInputs:\n- action -> \"unset\"\n- key -> a string used for tracking\n\n* Remove unused inputs when calling workflow *"
},
"typeVersion": 1
},
{
"id": "cfa05881-6b6d-474f-8b5b-9ca1ea4b68dc",
"name": "Set Workflow Finished",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1420,
780
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "unset"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "33b00dc4-ae18-49e3-9566-592cba18874c",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
440
],
"parameters": {
"color": 3,
"width": 1120,
"height": 640,
"content": "## Redis logic\n\nModify Set Timeout to adjust timeout (in seconds)\n\n"
},
"typeVersion": 1
},
{
"id": "5a659a3b-87e9-4652-91e2-11e8742dbf62",
"name": "Get Key",
"type": "n8n-nodes-base.redis",
"position": [
600,
520
],
"parameters": {
"key": "=process_status_{{ $json.key }}",
"options": {},
"operation": "get",
"propertyName": "=output"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "494155e9-8461-462c-a441-7eca4385c0b6",
"name": "Set Key",
"type": "n8n-nodes-base.redis",
"position": [
600,
720
],
"parameters": {
"key": "=process_status_{{ $json.key }}",
"ttl": "={{ $json.timeout }}",
"value": "={{ $json.value }}",
"expire": true,
"operation": "set"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a692e5a3-d781-4293-8d82-2a63ef771d27",
"name": "UnSet Key",
"type": "n8n-nodes-base.redis",
"position": [
600,
920
],
"parameters": {
"key": "=process_status_{{ $json.key }}",
"operation": "delete"
},
"credentials": {
"redis": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ce67d06c-1778-4783-b739-2bdc79ec341e",
"name": "Set Timeout",
"type": "n8n-nodes-base.set",
"position": [
160,
720
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ec322ae8-d486-4c8e-a175-3b908054ded9",
"name": "timeout",
"type": "number",
"value": 600
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "afda543f-247d-4286-ba65-b0f4c4b3b747",
"name": "set continue",
"type": "n8n-nodes-base.set",
"position": [
820,
720
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ae33a17b-8db0-47bc-85fc-4fde4be335de",
"name": "ok",
"type": "string",
"value": "true"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1c026eab-dc40-48dd-972d-dee7f6c0f05b",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
340,
1360
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "210ed6f8-0b42-4382-9f42-1deb14cab551",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.output }}",
"rightValue": "[null]"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b603bad0-7f89-429d-a373-37d52ed11a04",
"name": "Is Workflow Active1",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
120,
1360
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "get"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "e73d4271-1844-4b34-9e9b-a2154c3c27ee",
"name": "Stop and Error",
"type": "n8n-nodes-base.stopAndError",
"position": [
620,
1460
],
"parameters": {
"errorMessage": "Already Executing"
},
"typeVersion": 1
},
{
"id": "5307c6f7-7533-4f22-ab1a-a324ba2c9836",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
840,
1260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "201ffd2d-0c4f-417a-9a82-5035e1530be7",
"name": "Set Workflow Active1",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
620,
1260
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"value": "working",
"action": "set"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "71969764-4a75-44b6-a7da-969d8ab73686",
"name": "Set Workflow Finished1",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1560,
1260
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "unset"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "be5729c1-c867-4364-a406-ccbb4b829de6",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
1160
],
"parameters": {
"color": 7,
"width": 740,
"height": 260,
"content": "## Your logic that takes time\nIf a process is ran at the same moment, it will raise a error"
},
"typeVersion": 1
},
{
"id": "1d16d72c-0678-4808-8f7d-e7a6e7a20497",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
1060,
1260
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "ddfbb5c1-6632-423f-9a0a-0e18497d4c3b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
1120
],
"parameters": {
"color": 4,
"width": 1980,
"height": 500,
"content": "## Example 1"
},
"typeVersion": 1
},
{
"id": "ce9d5b6d-0353-46b9-bee4-84c977bca8de",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
180,
1920
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "210ed6f8-0b42-4382-9f42-1deb14cab551",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.output }}",
"rightValue": "[null]"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1e1bc1cc-5f95-4a1c-892a-90303745bb53",
"name": "Is Workflow Active2",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
-20,
1920
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "get"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "95699b33-61b7-4c3e-8bf9-c716456a387d",
"name": "Stop and Error1",
"type": "n8n-nodes-base.stopAndError",
"position": [
480,
2020
],
"parameters": {
"errorMessage": "Already Executing"
},
"typeVersion": 1
},
{
"id": "c8388974-e355-43dd-8d54-f3213998257f",
"name": "Set Workflow Finished2",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1720,
1820
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "unset"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "6465bf4b-f17d-47c7-a547-a24d4e1cb6a1",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
1720
],
"parameters": {
"color": 7,
"width": 380,
"height": 260,
"content": "## Process step 2"
},
"typeVersion": 1
},
{
"id": "92d8920c-a267-4306-8a16-3a77de1a1399",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
660,
1820
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "3ac2a634-6eed-4909-aa24-baf606a90bd8",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
1680
],
"parameters": {
"color": 4,
"width": 1980,
"height": 1120,
"content": "## Example 2\nTrack progress\n"
},
"typeVersion": 1
},
{
"id": "499e79d9-6553-42c0-ade6-168dc24f5486",
"name": "Wait2",
"type": "n8n-nodes-base.wait",
"position": [
1080,
1820
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "91c07ab3-68fc-4a2b-8829-f0b12759e861",
"name": "Wait3",
"type": "n8n-nodes-base.wait",
"position": [
1500,
1820
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "725a0e54-5c5b-447f-af1f-1a77ac4f9fd4",
"name": "Set Workflow \"started\"",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
480,
1820
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"value": "started",
"action": "set"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "17c92181-e9ed-4431-938e-49a5b75f761d",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
1720
],
"parameters": {
"color": 7,
"width": 380,
"height": 260,
"content": "## Process step 2\n"
},
"typeVersion": 1
},
{
"id": "765177ce-5f13-4144-be26-cc532a27cc7c",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1260,
1720
],
"parameters": {
"color": 7,
"width": 380,
"height": 260,
"content": "## Process step 3"
},
"typeVersion": 1
},
{
"id": "a84cebe2-57af-4983-b5b5-e33afc478f46",
"name": "Set Workflow \"finishing\"",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1320,
1820
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"value": "finishing",
"action": "set"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "d5cbfac4-847a-4655-93fd-481127dc8a1c",
"name": "Set Workflow \"loading\"",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
900,
1820
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"value": "loading",
"action": "set"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "cd70a02f-e95c-4bda-9b89-50a20600787c",
"name": "Is Workflow Active3",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
40,
2400
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "Fx8Ov5MblG2cmRWR",
"cachedResultName": "template - cocurrent workflow"
},
"workflowInputs": {
"value": {
"key": "some_workflow_key",
"action": "get"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "key",
"type": "string",
"display": true,
"required": false,
"displayName": "key",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "timeout",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "timeout",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "6e2578e3-05e0-47fd-94da-77f32612b01c",
"name": "Switch1",
"type": "n8n-nodes-base.switch",
"position": [
260,
2380
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "started",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e4bb7e4f-2f4a-419c-8618-e4fa01afc472",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output }}",
"rightValue": "started"
}
]
},
"renameOutput": true
},
{
"outputKey": "loading",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4c621e66-a4fe-45be-9d8a-4a2b180e94e7",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output }}",
"rightValue": "loading"
}
]
},
"renameOutput": true
},
{
"outputKey": "finished",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5b373ed7-550e-4d9c-b2cf-838ca08435ff",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.output }}",
"rightValue": "finished"
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"typeVersion": 3.2
},
{
"id": "9403b00f-f6d5-47d4-b06f-8e0c7c39ed5b",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
2280
],
"parameters": {
"color": 7,
"width": 660,
"height": 340,
"content": "## Check status of execution\n"
},
"typeVersion": 1
},
{
"id": "c3639987-57e6-484a-9094-7f8e99493954",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
1140
],
"parameters": {
"color": 5,
"width": 400,
"height": 320,
"content": "## Connect this anywhere to test !"
},
"typeVersion": 1
}
],
"connections": {
"If": {
"main": [
[
{
"node": "Set Workflow Active1",
"type": "main",
"index": 0
}
],
[
{
"node": "Stop and Error",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[
{
"node": "Set Workflow \"started\"",
"type": "main",
"index": 0
}
],
[
{
"node": "Stop and Error1",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Set Workflow Finished1",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Set Workflow \"loading\"",
"type": "main",
"index": 0
}
]
]
},
"Wait2": {
"main": [
[
{
"node": "Set Workflow \"finishing\"",
"type": "main",
"index": 0
}
]
]
},
"Wait3": {
"main": [
[
{
"node": "Set Workflow Finished2",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Get Key",
"type": "main",
"index": 0
}
],
[
{
"node": "Set Key",
"type": "main",
"index": 0
}
],
[
{
"node": "UnSet Key",
"type": "main",
"index": 0
}
]
]
},
"Set Key": {
"main": [
[
{
"node": "set continue",
"type": "main",
"index": 0
}
]
]
},
"UnSet Key": {
"main": [
[
{
"node": "set continue",
"type": "main",
"index": 0
}
]
]
},
"Set Timeout": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Is Workflow Active": {
"main": [
[
{
"node": "If2",
"type": "main",
"index": 0
}
]
]
},
"Is Workflow Active1": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Is Workflow Active2": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Is Workflow Active3": {
"main": [
[
{
"node": "Switch1",
"type": "main",
"index": 0
}
]
]
},
"Set Workflow Active1": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Set Workflow \"loading\"": {
"main": [
[
{
"node": "Wait2",
"type": "main",
"index": 0
}
]
]
},
"Set Workflow \"started\"": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Set Workflow \"finishing\"": {
"main": [
[
{
"node": "Wait3",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Set Timeout",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[]
]
}
}
}
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.
redis
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow ensures that your n8n automations run smoothly without overlaps by using Redis to lock and prevent concurrent executions, saving you from data conflicts or duplicate processing that could lead to errors and wasted resources. It's ideal for teams managing event-driven workflows, such as those triggered by webhooks or scheduled tasks, where reliability is crucial. The key step involves checking a Redis key at the start to verify if the workflow is already active; if so, it stops and errors out, otherwise it sets the lock and proceeds, integrating seamlessly with n8n's executeWorkflowTrigger for sub-workflow calls.
Use this when building critical automations like order processing or data syncing that must handle high volumes without interference, especially in production environments. Avoid it for simple, low-stakes tasks where occasional overlaps won't cause harm, or if you're not using Redis for caching. Common variations include adding a timeout to automatically release locks after a set period, or extending it to coordinate multiple related workflows across your n8n instance.
About this workflow
Prevent concurrent workflow runs using Redis. Uses executeWorkflowTrigger, manualTrigger, stickyNote, executeWorkflow. Event-driven trigger; 43 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops e
Reagendamiento. Uses executeWorkflowTrigger, redis, n8n-nodes-evolution-api, dataTable. Event-driven trigger; 73 nodes.
Agendamiento. Uses n8n-nodes-evolution-api, redis, dataTable, executeWorkflowTrigger. Event-driven trigger; 60 nodes.
This template facilitates the transfer of a folder, along with all its files and subfolders, within a Nextcloud instance. The Nextcloud user must have access to both the source and destination folders
This implementation aggregates incoming data into a Redis list from potentially concurrent workflow executions. It buffers the data for a set period before a single execution retrieves and processes t