AutomationFlowsGeneral › Flow Control Demo (loop)

Flow Control Demo (loop)

03 - Flow Control Demo (Loop). Uses itemLists. Event-driven trigger; 12 nodes.

Event trigger★★★★☆ complexity12 nodesItem Lists
General Trigger: Event Nodes: 12 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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"
  }
}
Pro

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 →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Product - Google Search Console API Examples. Uses httpRequest. Event-driven trigger; 36 nodes.

HTTP Request
General

Metavoir Creative Intake To Review Brief. Event-driven trigger; 21 nodes.

General

Retry on fail except for known error Template. Uses stopAndError, noOp, stickyNote, manualTrigger. Event-driven trigger; 19 nodes.

Stop And Error
General

02 - Flow Control Demo (IF & Switch). Event-driven trigger; 16 nodes.

General

Multi-Service Screenshot Scraping: ScraperAPI, Scrapingdog, & ScreenshotOne. Uses manualTrigger, httpRequest, stickyNote, dateTime. Event-driven trigger; 13 nodes.

HTTP Request