n8n-io/n8n · info

DISCONNECTED_NODE

DISCONNECTED_NODE

Error message

${nodeRef} is not connected to any input. It will not receive data.

What it means

Informational validator issue (code DISCONNECTED_NODE, violationLevel 'major') emitted when a graph node has no incoming connections and is not a connected subnode — meaning it will receive no data at runtime. The message references the node (with optional renamed/alias name and type) so the builder can wire an input.

Source

Thrown at packages/@n8n/workflow-sdk/src/workflow-builder/plugins/validators/disconnected-node-validator.ts:216

			// Skip sticky notes - they don't participate in data flow
			if (isStickyNoteType(graphNode.instance.type)) {
				continue;
			}

			// Skip subnodes - they connect TO their parent via AI connections
			if (isConnectedSubnode(graphNode)) {
				continue;
			}

			// Check if this node has any incoming connection (use mapKey, not originalName)
			if (!nodesWithIncoming.has(mapKey)) {
				const renamed = isAutoRenamed(mapKey, originalName);
				const displayName = renamed ? mapKey : originalName;
				const origForWarning = renamed ? originalName : undefined;
				const nodeRef = formatNodeRef(displayName, origForWarning, graphNode.instance.type);

				issues.push({
					code: 'DISCONNECTED_NODE',
					message: `${nodeRef} is not connected to any input. It will not receive data.`,
					severity: 'informational',
					violationLevel: 'major',
					nodeName: displayName,
					originalName: origForWarning,
				});
			}
		}

		return issues;
	},
};

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Connect an upstream node's output to this node's input.
  2. If the node is a trigger or data source that needs no input, verify it is a recognized root node type.
  3. Remove the node if it is unused.

Example fix

// before
trigger()
email() // disconnected
// after
trigger().to(email())
Defensive patterns

Strategy: validation

Validate before calling

// Before finalizing the workflow, confirm every non-root node has an incoming edge
const roots = new Set(['@n8n/n8n-nodes-langchain.chainLlm' /* triggers, etc. */]);
for (const n of allNodes) {
  if (!roots.has(n.type) && !hasIncoming(n)) {
    // warn: disconnected node
  }
}

Prevention

When it happens

Trigger: Adding a node to the workflow but forgetting to connect an upstream node's output to it; renaming a node so a previously-valid connection no longer matches.

Common situations: Rapid prototyping where nodes are dropped before wiring; refactors that break a chain; trigger nodes whose outputs were never routed.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/34ee0c83f7caf5e8. Report an issue: GitHub.