Dynamic Form Dropdown Updater Using Google Sheets - n8n Workflow

Automate your n8n form fields. Use this n8n workflow to dynamically populate dropdown menu options in your n8n form trigger using data sourced from Google Sheets and the n8n API.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?

Automation specialists seeking advanced n8n workflow capabilities.
Users who need to build public-facing n8n forms with frequently changing options.
Developers looking for complex n8n templates involving self-modification.
Anyone needing to dynamically update parameters of an n8n node without manual intervention.

Overview

Maintaining static dropdown lists in forms is time-consuming. This highly technical n8n workflow solves that challenge by establishing a real-time connection between a Google Sheet and your public-facing n8n form. This is one of the most powerful n8n templates for self-managing logic. The system periodically checks your Google Sheet data source. If new entries are found, the n8n node uses the n8n API to retrieve and modify the current n8n workflow's JSON definition. The dropdown field within the 'On form submission' n8n trigger is automatically updated, ensuring that users always see the most current options. This specialized n8n template minimizes administrative overhead and increases the flexibility of your data collection processes.

How it Works

This n8n workflow operates on two main branches: the update loop and the submission handler.

1. Dynamic Update Loop (Triggered Periodically):

The Google Sheets Trigger initiates the update, typically polling every minute. The 'Get all values' n8n node retrieves the entire dataset from the specified Google Sheet. This raw data is passed to the 'Format to 'values'' n8n node, which standardizes the data structure, renaming the input field (likely 'title') to 'value'—a required format for the dropdown structure.

The 'Write JSON' Code n8n node takes this formatted data and wraps it into the specific nested JSON structure needed by the n8n Form Trigger parameters: [{ option: 'Value' }].

Next, the 'n8n | get wf' n8n node fetches the complete JSON structure of the currently running n8n workflow itself using the internal n8n API. The 'Replace values' Set n8n node then uses advanced expressions to programmatically locate the exact position of the dropdown field's options array within the workflow's JSON and replaces it with the newly generated list. Finally, the 'n8n | update' n8n node pushes this modified JSON back to the n8n server, instantly updating the public form with the new dropdown choices.

2. Submission Handler:

The 'On form submission' n8n trigger waits for a user to interact with the publicly exposed n8n form. Once data is submitted, the 'Execute Workflow' n8n node is activated, which, in this configuration, passes the submitted data to the rest of the n8n workflow for processing (or executes a dedicated processing workflow).

Installation Guide


  1. Import: Copy the provided n8n workflow JSON and import it into your n8n instance.

  2. Credentials Setup: You will need three credentials:

Google Sheets Trigger OAuth2: For the polling trigger.
Google Sheets OAuth2: For reading all data via the 'Get all values' n8n node.
* n8n API: For the 'n8n | get wf' and 'n8n | update' n8n node. This credential requires an n8n API key with permissions to view and update workflows.

  1. Data Source Configuration: Configure both the Google Sheets Trigger and the 'Get all values' n8n node to point to your specific spreadsheet and sheet name that contains the dropdown data.

  2. Form Node Configuration: Ensure the 'On form submission' n8n trigger is configured with at least one dropdown field. This field is the target for the dynamic updates.

  3. Activation: Ensure the main n8n workflow is active for the triggers and the update loop to run.

Node Details

Google Sheets Trigger: The initial n8n trigger that periodically checks the configured Google Sheet for changes, kicking off the update loop.
Get all values (Google Sheets): An n8n node used to fetch the complete range of data from the source sheet, providing all potential dropdown options.
Format to 'values' (Set Node): A crucial data formatting n8n node. It extracts the relevant data field (e.g., column title) and renames it universally to value, preparing it for nested JSON conversion.
Write JSON (Code Node): This custom n8n node script converts the linear array of data into the deeply nested JSON structure required by the n8n form dropdown parameter, utilizing option keys.
n8n | get wf (n8n Node): Connects to the n8n API to retrieve the entire current n8n workflow's configuration JSON, using the expression {{ $workflow.id }}.
Replace values (Set Node): Uses a complex expression to locate the specific path within the workflow JSON that holds the dropdown options (e.g., nodes[...].parameters.formFields.values[...].fieldOptions.values) and injects the dynamically generated options from the 'Write JSON' node.
n8n | update (n8n Node): Uses the n8n API to save the modified n8n workflow JSON back to the server, making the dynamic dropdown options immediately live.
On form submission (Form Trigger): The public n8n trigger node that hosts the dynamically updated form. It triggers the submission path when a user completes the form.

Related n8n Workflows

Free

Nodes: 8 Nodes
Updated: December 26 2025
View all
Created by
Obsidi8n
Obsidi8n

Featured*