{"id":"RKbQHfblpcvMGZ4w","meta":{"instanceId":"workflow-434d08cb","versionId":"1.0.0","createdAt":"2025-09-29T07:07:43.474920","updatedAt":"2025-09-29T07:07:43.474984","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"Form with Dynamic Dropdown Field","nodes":[{"id":"aa627a35-9bea-4c07-b7e7-26f048564443","name":"n8n | get wf","type":"n8n-nodes-base.n8n","position":[540,-180],"parameters":{"operation":"get","workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"},"requestOptions":{}},"credentials":{"n8nApi":{"id":"us0k8UE7R2MZPFBK","name":"n8n account"}},"typeVersion":1,"notes":"This n8n node performs automated tasks as part of the workflow."},{"id":"902a8e45-f4b4-469c-96a6-80002de5f6dc","name":"n8n | update","type":"n8n-nodes-base.n8n","position":[1060,-180],"parameters":{"operation":"update","workflowId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"requestOptions":{},"workflowObject":"={{ JSON.stringify($json) }}"},"credentials":{"n8nApi":{"id":"us0k8UE7R2MZPFBK","name":"n8n account"}},"typeVersion":1,"notes":"This n8n node performs automated tasks as part of the workflow."},{"id":"3e9e5c16-0080-4cba-8a8a-8f24f7266fcb","name":"On form submission","type":"n8n-nodes-base.formTrigger","position":[40,-620],"webhookId":"3e975d29-df26-49fb-8dcf-abe8fe8bc4e6","parameters":{"options":{},"formTitle":"Example Title","formFields":{"values":[{"fieldLabel":"Example text field"},{"fieldType":"dropdown","fieldLabel":"Example dropdown","fieldOptions":{"values":[{"option":"test publieke ruimtes"},{"option":"Demonstraties"},{"option":"Demonstraties"},{"option":"Juridisch medewerker IE-recht  Streetlife"},{"option":"Bamboe"},{"option":"Klaar?"},{"option":"Dannu?"}]}}]}},"typeVersion":2.2,"notes":"This formTrigger node performs automated tasks as part of the workflow."},{"id":"0b874994-c123-44f8-b0f5-0b365b57d945","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[-460,-180],"parameters":{"options":{},"pollTimes":{"item":[{"mode":"everyMinute"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Blad1"},"documentId":{"__rl":true,"mode":"list","value":"1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"obsidian-n8n"},"includeInOutput":"both"},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"FV58wiwivBMosfix","name":"Google Sheets Trigger account"}},"typeVersion":1,"notes":"This googleSheetsTrigger node performs automated tasks as part of the workflow."},{"id":"4c9bfed8-a758-40b9-9c74-53bedc1d1aa3","name":"Execute Workflow","type":"n8n-nodes-base.executeWorkflow","position":[240,-620],"parameters":{"options":{},"workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"}},"typeVersion":1.1,"notes":"This executeWorkflow node performs automated tasks as part of the workflow."},{"id":"6e9d4a5a-9583-4b61-aea1-dd4892230e7c","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-520,-660],"parameters":{"width":960,"height":240,"content":"## Form setup\n\n- Customize your form fields. \n- The dropdown field will auto-update with values from your data source. \n- Other form fields can be added as needed (limited to one dropdown field).\n- Connect to your workflow that processes the submitted form data.\n\n### Form requires production mode for testing"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"41c364f4-5b1f-42fd-841b-a6f99b585804","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-520,-400],"parameters":{"width":440,"height":400,"content":"## Data source setup\n\n- Connect to your Google Sheet containing dropdown values\n- Node can be replaced with any other data source (API, database)\n- Set timing trigger"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"cda8f803-1773-4df7-90b9-4d8cd0469cd8","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-60,-400],"parameters":{"width":260,"height":400,"content":"## Data formatting\n\n- Extracts needed data from source\n- Renames field to 'value' (do not change this name)"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"e9594ad1-3bb8-4da6-95b3-cb610a17c1bb","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[220,-400],"parameters":{"height":400,"content":"## Nested properties\n\n- Transforms the data to the desired format"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"806a2502-5c6c-435c-a20e-8ca0eee92822","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[480,-400],"parameters":{"height":400,"content":"## Get Workflow \n\n- Gets the current workflow data"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"385c3e64-9893-4e3f-b789-abbf079fa8b1","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[740,-400],"parameters":{"height":400,"content":"## Add Dropdown Values \n- Replaces the nested parameters of the Dropdown Form Field with the nested properties sourced from the data."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"f43324fc-6790-445b-a72b-ae4afb051101","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1000,-400],"parameters":{"height":400,"content":"## Update Form \n\n- Replaces the current workflow’s JSON with the updated JSON containing the new Dropdown values."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"317694bd-590f-4eb4-a53f-f4d5d2d1ab16","name":"Write JSON","type":"n8n-nodes-base.code","position":[280,-180],"parameters":{"jsCode":"const inputArray = items.map(item => item.json);\n\nconst output = [\n  {\n    nodes: [\n      {\n        parameters: {\n          formFields: {\n            values: [\n              {\n                fieldOptions: {\n                  values: inputArray.map(entry => ({ option: entry.value }))\n                }\n              }\n            ]\n          }\n        }\n      }\n    ]\n  }\n];\n\n// Return the transformed output\nreturn output.map(item => ({ json: item }));"},"typeVersion":2,"notes":"This code node performs automated tasks as part of the workflow."},{"id":"08b3c0b3-3df3-40d9-80ce-bd7c763fdbdb","name":"Replace values","type":"n8n-nodes-base.set","position":[820,-180],"parameters":{"options":{},"assignments":{"assignments":[{"id":"38ef2b43-b903-4e96-b098-9da2d8c1c153","name":"={{ \n   (() => {\n      const nodeIndex = $json.nodes.findIndex(\n         node => node.parameters?.formFields?.values.some(\n            value => value.fieldType === 'dropdown' && value.fieldOptions?.values\n         )\n      );\n\n      if (nodeIndex === -1) return 'No matching node found';\n\n      const valueIndex = $json.nodes[nodeIndex].parameters.formFields.values.findIndex(\n         value => value.fieldType === 'dropdown' && value.fieldOptions?.values\n      );\n\n      if (valueIndex === -1) return `nodes[${nodeIndex}].parameters.formFields.values - No matching dropdown value found`;\n\n      return `nodes[${nodeIndex}].parameters.formFields.values[${valueIndex}].fieldOptions.values`;\n   })()\n}}","type":"array","value":"={{ $('Write JSON').item.json.nodes[0].parameters.formFields.values[0].fieldOptions.values }}"}]},"includeOtherFields":true},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"07635565-f8ea-4fac-b93c-069fbe065ce8","name":"Get all values","type":"n8n-nodes-base.googleSheets","position":[-240,-180],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"Blad1"},"documentId":{"__rl":true,"mode":"list","value":"1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA","cachedResultUrl":"{{ $env.WEBHOOK_URL }}","cachedResultName":"obsidian-n8n"}},"credentials":{"googleSheetsOAuth2Api":{"id":"3Pu0wlfxgNYzVqY6","name":"Google Sheets account"}},"typeVersion":4.5,"notes":"This googleSheets node performs automated tasks as part of the workflow."},{"id":"9ce7bf73-211a-4f5b-b39d-81a2d513a3ef","name":"Format to 'values'","type":"n8n-nodes-base.set","position":[20,-180],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e18aa12e-f277-4257-ba27-9262cc7b866a","name":"value","type":"string","value":"={{ $json.title }}"}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"error-7ca63492","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"active":true,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"d69a3011-97a6-44e9-9b7e-c8e9a248964a","connections":{"Google Sheets Trigger":{"main":[[]]},"Get all values":{"main":[[]]}},"description":"Automated workflow: Form with Dynamic Dropdown Field. This workflow integrates 9 different services: stickyNote, formTrigger, googleSheetsTrigger, code, n8n. It contains 18 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Form with Dynamic Dropdown Field. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}