n8n-nodes-dynamic-node
lets you inject and execute any standard n8n node at runtime by pasting its workflow‑export JSON into a single wrapper node.
For users on n8n v0.187+, your instance owner can install this node from Community Nodes.
- Go to Settings > Community Nodes.
- Select Install.
- Enter
n8n-nodes-dynamic-node
in Enter npm package name. - Agree to the risks of using community nodes: select I understand the risks of installing unverified code from a public source.
- Select Install.
After installing the node, you can use it like any other node. n8n displays the node in search results in the Nodes panel.
-
In your n8n instance directory, install from npm:
npm install n8n-nodes-dynamic-node --save
-
Restart n8n.
-
You’ll now see Dynamic Node in the node picker.
For Docker-based deployments, add the following line before the font installation command in your n8n Dockerfile:
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-dynamic-node
-
Copy the node that you want to dynamically modify by selecting it and pressing
Ctrl + C
. -
Wire up Select
Dynamic Node
from the list of n8n nodes and wire it up to emulate your copied node. -
Switch the
Node JSON
field into Expression mode (click Fixed → Expression). -
Paste your exported‑node JSON into the editor. For example, a simple Graph API call:
-
A direct paste might look like this, which the
Dynamic Node
should still be flexible enough to parse without modifying anything:{ "nodes": [ { "parameters": { "url": "=https://graph.microsoft.com/v1.0/users/{{ $json.id_msft }}?$select=accountEnabled,userPrincipalName,id", "authentication": "genericCredentialType", "genericAuthType": "oAuth2Api", "options": {} // not required to run }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, // will default to latest if not specified "position": [ 460, -520 ], // not required to run "id": "550e0f7c-8a0c-462d-948a-89556abe8e5b", // not required to run "name": "Fetch Current Azure Status", "credentials": { "oAuth2Api": { "id": "q7iDizt7Jxoy2cKo", "name": "Microsoft Graph API Creds" // not required to run } }, "onError": "continueRegularOutput" } ], "connections": { // everything below here is ignored "Fetch Current Azure Status": { "main": [ [], [] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "j91cef9ee1e9ee17cc8d16efb7974d807be5ea0cbe8d1adfceb25249ee039v76" } }
-
You can add more expressions to parameterize any dynamic pieces and trim it down to the bare essentials:
{ "parameters": { "url": "{{ $json.dynamic_url }}", "authentication": "genericCredentialType", "genericAuthType": "oAuth2Api" }, "type": "n8n-nodes-base.httpRequest", "name": "Fetch Current Azure Status", "credentials": { "oAuth2Api": { "id": "{{ $json.dynamic_credential }}" } } }
-
-
Click Test step. The node will:
- Clone an internal Start → YOUR NODE mini‑workflow.
- Evaluate any
{{…}}
expressions ($json
, etc.). - Execute the underlying node with your credentials and input items.
- Return its output as the
Dynamic Node
’s own output.
Note: More complex node options like pagination that rely on elements from
$response
don't seem to work since that is handled differently in sub-workflow/child execution contexts. You can still workaround that by doing a loop to manually handle pagination.
- Always use Expression mode when your JSON contains
{{…}}
placeholders. - Ensure your pasted JSON is a true object (no wrapping quotes).
- Double‑check that your exported node JSON includes a
name
field.-
Note: The
Dynamic Node
will append on " - Dynamic Node" to whatever name you've specified to make sure there aren't name collisions with whatever node you originally copied.
-
Note: The
- If you see “Node JSON must be an object”, switch to Expression mode and remove stray quotes.
Happy automating with the world’s first Dynamic Node for n8n! 🚀