This workflow corresponds to n8n.io template #9500 — we link there as the canonical source.
This workflow follows the Airtable → Execute Workflow Trigger 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 →
{
"id": "UW1Si82XFg1xpKU6",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Template Visual Workflow Architecture v1.0",
"tags": [
{
"id": "bPkcrK17uG3HMk6T",
"name": "\ud83c\udff7\ufe0f Template",
"createdAt": "2025-09-03T06:52:38.087Z",
"updatedAt": "2025-09-03T06:52:38.087Z"
},
{
"id": "v4mArge40MnxFxw5",
"name": "\ud83d\udfe2 operational",
"createdAt": "2025-08-10T13:32:11.849Z",
"updatedAt": "2025-08-19T17:01:08.590Z"
}
],
"nodes": [
{
"id": "5f7c322b-52a4-4db7-b6b2-48ea3677ce61",
"name": "Manual",
"type": "n8n-nodes-base.manualTrigger",
"position": [
144,
-576
],
"parameters": {},
"typeVersion": 1
},
{
"id": "79c67797-8a0d-49d7-a8e1-ee173a31c9d8",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-768
],
"parameters": {
"color": 7,
"width": 608,
"height": 944,
"content": "## Triggers\n- Normalized Inputs related to Sub-Workflow Trigger\n- All triggers converge into a **normliized node** that can then be universally referenced downstream"
},
"typeVersion": 1
},
{
"id": "f1dbe4af-c285-4913-8cf7-421eb2d46a84",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-768
],
"parameters": {
"color": 7,
"width": 816,
"height": 944,
"content": "## Collect or gather all data inputs needed\n- in simple workflows this might be very short or missing\n- this is the place to set any defaults for the workflow"
},
"typeVersion": 1
},
{
"id": "0113592d-14fc-4df8-836e-064e95cf339e",
"name": "Input | Combined",
"type": "n8n-nodes-base.merge",
"position": [
1360,
-336
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3.2
},
{
"id": "424e5d2c-460f-4f87-aa1f-9412c1fec23f",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-768
],
"parameters": {
"color": 7,
"width": 656,
"height": 288,
"content": "## Business Logic A - working setup\n- with **working** setup"
},
"typeVersion": 1
},
{
"id": "b282594f-e3a5-478d-94d6-942c4051cdca",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
-1264
],
"parameters": {
"color": 4,
"width": 2496,
"height": 1488,
"content": "# Key Objective of overall Workflow as a #-level Heading\n\n## Often useful:\n- Link or reference to the system triggering the workdlow"
},
"typeVersion": 1
},
{
"id": "d066cccc-3930-48ef-8c77-9d079ced82f2",
"name": "Search records",
"type": "n8n-nodes-base.airtable",
"position": [
1104,
-432
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "app4JwaENq0JKC1sm",
"cachedResultUrl": "https://airtable.com/app4JwaENq0JKC1sm",
"cachedResultName": "Testing"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblzRTsHDIBzqUnxY",
"cachedResultUrl": "https://airtable.com/app4JwaENq0JKC1sm/tblzRTsHDIBzqUnxY",
"cachedResultName": "User Date Dummy"
},
"options": {},
"operation": "search"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "5e71007c-b8aa-4d48-984a-ae72c918ed12",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-1040
],
"parameters": {
"color": 7,
"width": 608,
"height": 256,
"content": "## Colorcoding for Nodes\n\n\ud83d\udfe9 **Green** \u2013 Operational, runs in stable mode \u2705 \n\ud83d\udfe5 **Red** \u2013 Error / not operational \u274c \n\ud83d\udfe7 **Orange** \u2013 Partly Operational \u26a0\ufe0f (e.g warning or improvement needs) \n\ud83d\udfe8 **Yellow** \u2013 Work in Progress \ud83d\udee0\ufe0f \n\ud83d\udfe6 **Blue** \u2013 User Input required \ud83d\ude4b (at run time)\n\u2b1b **dark grey** \u2013 On Hold / Deprecated\n\u2b1c **White** \u2013 Neutral / inherits meaning of containing node\n"
},
"typeVersion": 1
},
{
"id": "7bb25024-9279-4175-a498-2987bf9daba2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1184,
-1264
],
"parameters": {
"color": 2,
"width": 1152,
"height": 608,
"content": "# START HERE\n\n# Best Practices for visual structuring & visual hierarchy of workflow\nThis template is meant to showcase typical aspects and a clean, maintainable and visual structure. \nIt does not provide and functionality, all nodes are for demonstration only.\n\n \u27a1\ufe0f Use this workflow as a template to start new workflows from.\n\n## Design Patterns:\n- Notes are **color coded** with a meaning as explained on right side in **\"Colorcoding for Nodes\"**\n(keeping the color coding info in the workflow often helps to keep it visible during development phase)\n- Each workflow contains typical phases for clean and maintainable code, they are **boxed within background nodes**\n\n## How to use this template\n- familirize yourself with the color coding and design patterns\n- go through workflow node by node, reasoning is mentioned within nodes where applicable\n"
},
"typeVersion": 1
},
{
"id": "91ebfd8e-5ca5-4ba4-9010-d3dd48e62d35",
"name": "Normalize Manual Trigger",
"type": "n8n-nodes-base.set",
"position": [
368,
-576
],
"parameters": {
"options": {},
"assignments": {
"assignments": []
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "85d5a7ee-066b-4df2-b219-54cfd680ec11",
"name": "Trigger | Normalized",
"type": "n8n-nodes-base.set",
"notes": "Fields are normalized with the Sub-workflow trigger as defining the \"normalization\" standard ",
"position": [
656,
-336
],
"parameters": {
"options": {
"stripBinary": true
},
"assignments": {
"assignments": []
},
"includeOtherFields": true
},
"notesInFlow": true,
"typeVersion": 3.4
},
{
"id": "a36066b3-3122-48d1-8e67-b0925586dd74",
"name": "Triggered from other Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"notes": "Make a note for triggering workflow(s) somewhere for easy debugging later.",
"position": [
144,
-336
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "someInput"
},
{
"name": "someOtherInput"
}
]
}
},
"notesInFlow": true,
"typeVersion": 1.1
},
{
"id": "d4ee827c-340f-4b67-a1e2-50713b37e09e",
"name": "General Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
144,
-64
],
"parameters": {
"path": "f960a6c6-8916-44bd-aa90-b247d331afb8",
"options": {}
},
"typeVersion": 2.1
},
{
"id": "e4d2a068-d6fd-4041-a911-b47e87c9c0ec",
"name": "Normalize Webhook Trigger",
"type": "n8n-nodes-base.set",
"position": [
368,
-64
],
"parameters": {
"options": {},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "19eba4f8-0022-4bc8-a19f-3985be32061f",
"name": "Get Data From Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1104,
-240
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $json.googleSheetId }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.googleDocId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "15d9bb5f-cdae-4884-a255-e6a84006359c",
"name": "Set Defaults",
"type": "n8n-nodes-base.set",
"position": [
880,
-336
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "20fbf030-1ccd-4be7-91b0-2fb6b6cc3e59",
"name": "googleDocId",
"type": "string",
"value": "docABC"
},
{
"id": "be994eaa-423c-4a85-a4b0-4e994a797714",
"name": "googleSheetId",
"type": "string",
"value": "sheetID123"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "040cf859-5b90-47ea-bd02-1e834696164a",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-432
],
"parameters": {
"width": 656,
"height": 272,
"content": "## Business Logic B - currently in development\n- with **working** setup"
},
"typeVersion": 1
},
{
"id": "1c880ade-1be1-404b-a409-3ca1d69b09c0",
"name": "Business Logic Single or Multi step1",
"type": "n8n-nodes-base.code",
"position": [
1872,
-336
],
"parameters": {
"jsCode": "return [\n {\n json: {\n result: \"some use case specific output\"\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "24280bf1-3e6a-4e85-9581-040bc27965e5",
"name": "Business Logic Single or Multi step",
"type": "n8n-nodes-base.code",
"position": [
1872,
-656
],
"parameters": {
"jsCode": "return [\n {\n json: {\n result: \"some use case specific output\"\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "386d9501-e4c9-40cf-b1b5-6b3ed86dccdc",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-112
],
"parameters": {
"color": 6,
"width": 656,
"height": 288,
"content": "## Business Logic C - Old Version, not used any more\n- to keep fors ome time \n- should finally be managed in versions or be deleted"
},
"typeVersion": 1
},
{
"id": "1ddba747-5567-4e65-a6d2-ddc12828e683",
"name": "Some Old Version",
"type": "n8n-nodes-base.noOp",
"position": [
1872,
32
],
"parameters": {},
"typeVersion": 1
},
{
"id": "049b807e-9b07-4ea1-9e26-4f6e4371bfd6",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
1584,
-352
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Production",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "effed10c-279f-48b2-a981-1a1a77a9d4a2",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $execution.mode }}",
"rightValue": "production"
}
]
},
"renameOutput": true
},
{
"outputKey": "Development",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "89d5f781-9e89-4682-9f30-d261b8511bc4",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $execution.mode }}",
"rightValue": "test"
}
]
},
"renameOutput": true
}
]
},
"options": {
"ignoreCase": true,
"fallbackOutput": "extra"
}
},
"typeVersion": 3.3
}
],
"active": false,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "YEvXt4fjXiqx3zZt",
"executionOrder": "v1",
"executionTimeout": 180,
"timeSavedPerExecution": 1
},
"versionId": "ae1e6fac-9bf6-47ab-bf36-9457ed4833af",
"connections": {
"Manual": {
"main": [
[
{
"node": "Normalize Manual Trigger",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Business Logic Single or Multi step",
"type": "main",
"index": 0
}
],
[
{
"node": "Business Logic Single or Multi step1",
"type": "main",
"index": 0
}
],
[
{
"node": "Some Old Version",
"type": "main",
"index": 0
}
]
]
},
"Set Defaults": {
"main": [
[
{
"node": "Search records",
"type": "main",
"index": 0
},
{
"node": "Get Data From Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Search records": {
"main": [
[
{
"node": "Input | Combined",
"type": "main",
"index": 0
}
]
]
},
"General Webhook": {
"main": [
[
{
"node": "Normalize Webhook Trigger",
"type": "main",
"index": 0
}
]
]
},
"Input | Combined": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Trigger | Normalized": {
"main": [
[
{
"node": "Set Defaults",
"type": "main",
"index": 0
}
]
]
},
"Normalize Manual Trigger": {
"main": [
[
{
"node": "Trigger | Normalized",
"type": "main",
"index": 0
}
]
]
},
"Normalize Webhook Trigger": {
"main": [
[
{
"node": "Trigger | Normalized",
"type": "main",
"index": 0
}
]
]
},
"Get Data From Google Sheets": {
"main": [
[
{
"node": "Input | Combined",
"type": "main",
"index": 1
}
]
]
},
"Triggered from other Workflow": {
"main": [
[
{
"node": "Trigger | Normalized",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
airtableTokenApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This template helps you create clean, structured, and visually understandable workflows that are easy to read, present to clients, and collaborate on with teams.
Source: https://n8n.io/workflows/9500/ — 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 template is ideal for solo store owners, eCommerce marketers, automation beginners, or anyone using Shopify and Gmail who wants to recover lost revenue without coding.
This guide will walk you through setting up your n8n workflow. By the end, you'll have a fully automated system for managing your recruitment pipeline.
This n8n workflow lets you control access to your internal Telegram bots and automation systems based on user roles and departments. It ensures that only authorized team members — defined in your empl
Google Maps Email Scraper Template. Uses removeDuplicates, splitInBatches, httpRequest, splitOut. Event-driven trigger; 26 nodes.
Splitout Comparedatasets. Uses manualTrigger, gong, stickyNote, executeWorkflow. Event-driven trigger; 26 nodes.