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": "03 - Flow Control Demo (Loop)",
"nodes": [
{
"parameters": {
"content": "\ud83d\udcda **\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e2d\u0e19 Loop (\u0e01\u0e32\u0e23\u0e27\u0e19\u0e0b\u0e49\u0e33)**\n\nWorkflow \u0e19\u0e35\u0e49\u0e2a\u0e32\u0e18\u0e34\u0e15\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19:\n\u2022 Item Lists (Split Out) - \u0e41\u0e22\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 Array \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e32\u0e22\u0e1a\u0e38\u0e04\u0e04\u0e25\n\u2022 Loop Node - \u0e27\u0e19\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e25\u0e30\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e08\u0e19\u0e04\u0e23\u0e1a\n\u2022 Set Node - \u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e41\u0e15\u0e48\u0e25\u0e30\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23",
"width": 400,
"height": 140,
"color": 6
},
"name": "Sticky 0 Intro",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
260,
40
]
},
{
"parameters": {},
"name": "When clicking Test workflow",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
380,
240
]
},
{
"parameters": {
"content": "\ud83c\udfaf **\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 1: \u0e2a\u0e23\u0e49\u0e32\u0e07 Array \u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19**\n\n\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e27\u0e48\u0e32\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e08\u0e32\u0e01 Database \u0e44\u0e14\u0e49 3 \u0e04\u0e19:\n[ { name: \"Alice\" }, { name: \"Bob\" }, { name: \"Charlie\" } ]\n\n\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19 1 \u0e01\u0e49\u0e2d\u0e19 (1 Item) \u0e17\u0e35\u0e48\u0e02\u0e49\u0e32\u0e07\u0e43\u0e19\u0e21\u0e35 Array",
"width": 320,
"height": 160,
"color": 2
},
"name": "Sticky 1 Array Data",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
540,
40
]
},
{
"parameters": {
"values": {
"string": [
{
"name": "students",
"value": "={{ [ { \"name\": \"Alice\", \"score\": 85 }, { \"name\": \"Bob\", \"score\": 40 }, { \"name\": \"Charlie\", \"score\": 92 } ] }}"
}
]
}
},
"name": "Mock Array",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
600,
240
]
},
{
"parameters": {
"content": "\u2702\ufe0f **\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 2: \u0e41\u0e22\u0e01 Array (Split Out)**\n\n\u0e43\u0e0a\u0e49 Item Lists \u0e42\u0e2b\u0e21\u0e14 Split Out\n\u0e41\u0e22\u0e01 Array 1 \u0e01\u0e49\u0e2d\u0e19 \u0e43\u0e2b\u0e49\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19 3 Items (3 \u0e41\u0e16\u0e27)\n\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e2a\u0e48\u0e07\u0e43\u0e2b\u0e49 Loop \u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e25\u0e30\u0e04\u0e19",
"width": 300,
"height": 140,
"color": 3
},
"name": "Sticky 2 Split Out",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
780,
60
]
},
{
"parameters": {
"fieldToSplitOut": "students",
"options": {}
},
"name": "Split to Items",
"type": "n8n-nodes-base.itemLists",
"typeVersion": 2,
"position": [
820,
240
]
},
{
"parameters": {
"content": "\ud83d\udd04 **\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 3: \u0e40\u0e23\u0e34\u0e48\u0e21 Loop**\n\nLoop Node \u0e08\u0e30\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1b\u0e17\u0e35\u0e25\u0e30 1 Item (Batch Size = 1)\n\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 loop\n\n\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2b\u0e21\u0e14\u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e27\u0e34\u0e48\u0e07\u0e44\u0e1b\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 done",
"width": 320,
"height": 160,
"color": 4
},
"name": "Sticky 3 Loop Start",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1020,
40
]
},
{
"parameters": {
"batchSize": 1,
"options": {}
},
"name": "Loop Over Students",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 2,
"position": [
1040,
240
]
},
{
"parameters": {
"content": "\u2699\ufe0f **\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 4: \u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e17\u0e35\u0e25\u0e30\u0e04\u0e19**\n\n\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e32\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e40\u0e23\u0e35\u0e22\u0e19\u0e04\u0e19\u0e19\u0e31\u0e49\u0e19\u0e46 \u0e40\u0e0a\u0e48\u0e19:\n\u2022 \u0e40\u0e0a\u0e47\u0e04\u0e04\u0e30\u0e41\u0e19\u0e19\n\u2022 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e30\n\u2022 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e48\u0e07 Email\n\n(\u0e43\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e41\u0e04\u0e48\u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e31\u0e01\u0e17\u0e32\u0e22)",
"width": 320,
"height": 160,
"color": 5
},
"name": "Sticky 4 Process",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1260,
40
]
},
{
"parameters": {
"values": {
"string": [
{
"name": "message",
"value": "={{ $json.score >= 50 ? \"Pass!\" : \"Fail!\" }}"
}
]
}
},
"name": "Process Student",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
1300,
240
]
},
{
"parameters": {
"content": "\ud83c\udfc1 **\u0e27\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e23\u0e31\u0e1a\u0e04\u0e19\u0e15\u0e48\u0e2d\u0e44\u0e1b**\n\n\u203c\ufe0f \u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e21\u0e32\u0e01: \u0e15\u0e49\u0e2d\u0e07\u0e25\u0e32\u0e01\u0e40\u0e2a\u0e49\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e17\u0e35\u0e48 Loop Node \u0e40\u0e2a\u0e21\u0e2d\n\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e40\u0e2a\u0e23\u0e47\u0e08 1 \u0e23\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27\n\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e23\u0e31\u0e1a Item \u0e15\u0e48\u0e2d\u0e44\u0e1b",
"width": 320,
"height": 140,
"color": 1
},
"name": "Sticky 5 Loop Back",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1260,
380
]
},
{
"parameters": {
"content": "\ud83c\udf89 **\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19**\n\n\u0e40\u0e21\u0e37\u0e48\u0e2d Loop \u0e04\u0e23\u0e1a\u0e17\u0e38\u0e01\u0e04\u0e19\u0e41\u0e25\u0e49\u0e27 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e17\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07 done\n(\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e2a\u0e23\u0e38\u0e1b\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e44\u0e14\u0e49)",
"width": 280,
"height": 140,
"color": 6
},
"name": "Sticky 6 Done",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1020,
420
]
}
],
"connections": {
"When clicking Test workflow": {
"main": [
[
{
"node": "Mock Array",
"type": "main",
"index": 0
}
]
]
},
"Mock Array": {
"main": [
[
{
"node": "Split to Items",
"type": "main",
"index": 0
}
]
]
},
"Split to Items": {
"main": [
[
{
"node": "Loop Over Students",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Students": {
"main": [
[
{
"node": "Process Student",
"type": "main",
"index": 0
}
],
[]
]
},
"Process Student": {
"main": [
[
{
"node": "Loop Over Students",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
03 - Flow Control Demo (Loop). Uses itemLists. Event-driven trigger; 12 nodes.
Source: https://github.com/Onto-IQ/n8n-student-selfhost/blob/dd8715394aa0b518900cfd10885f96bedb7811ce/workflows/01_Basics/03-Flow-Control-Demo-Loop.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.
Product - Google Search Console API Examples. Uses httpRequest. Event-driven trigger; 36 nodes.
Metavoir Creative Intake To Review Brief. Event-driven trigger; 21 nodes.
Retry on fail except for known error Template. Uses stopAndError, noOp, stickyNote, manualTrigger. Event-driven trigger; 19 nodes.
02 - Flow Control Demo (IF & Switch). Event-driven trigger; 16 nodes.
Multi-Service Screenshot Scraping: ScraperAPI, Scrapingdog, & ScreenshotOne. Uses manualTrigger, httpRequest, stickyNote, dateTime. Event-driven trigger; 13 nodes.