n8n-io/n8n · error · Error

Sticky notes do not support output connections

Error message

Sticky notes do not support output connections

What it means

Thrown by StickyNoteInstance.output(). Sticky notes have no output ports and cannot originate connections, so .output() — which returns an OutputSelector for fan-out — is blocked.

Source

Thrown at packages/@n8n/workflow-sdk/src/workflow-builder/node-builders/node-builder.ts:1153

	update(config: Partial<NodeConfig>): NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void> {
		const newContent = (config.parameters?.content as string) ?? this.config.parameters?.content;
		const newConfig: StickyNoteConfig = {
			position: config.position ?? this.config.position,
			color: (config.parameters?.color as number) ?? (this.config.parameters?.color as number),
			width: (config.parameters?.width as number) ?? (this.config.parameters?.width as number),
			height: (config.parameters?.height as number) ?? (this.config.parameters?.height as number),
			name: config.name ?? this.name,
		};
		// Pass empty nodes array since update doesn't recalculate bounding box
		return new StickyNoteInstance(newContent, [], newConfig);
	}

	input(_index: number): InputTarget {
		throw new Error('Sticky notes do not support input connections');
	}

	output(_index: number): OutputSelector<'n8n-nodes-base.stickyNote', 'v1', void> {
		throw new Error('Sticky notes do not support output connections');
	}

	to<T extends NodeInstance<string, string, unknown>>(
		_target: T | T[] | InputTarget,
		_outputIndex?: number,
	): NodeChain<NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void>, T> {
		throw new Error('Sticky notes do not support connections');
	}

	onError<T extends NodeInstance<string, string, unknown>>(_handler: T): this {
		throw new Error('Sticky notes do not support error handlers');
	}

	getConnections(): DeclaredConnection[] {
		return [];
	}
}

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Do not call .output() on a StickyNoteInstance.
  2. Filter sticky notes out before applying fan-out logic.
  3. Pass stickies to workflow() as standalone documentation elements.

Example fix

// before
stickyNode.output(0).to(target); // throws
// after
workflow(source.to(target), stickyNote); // sticky added standalone
Defensive patterns

Strategy: type-guard

Validate before calling

const STICKY = 'n8n-nodes-base.stickyNote';

function safeOutput(node: NodeInstance, i: number): OutputSelector<any, any, any> {
  if (node.type === STICKY) throw new Error('Sticky notes have no output');
  return node.output(i);
}

Type guard

function isStickyNote(node: NodeInstance): node is NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void> {
  return node.type === 'n8n-nodes-base.stickyNote';
}

Prevention

When it happens

Trigger: Calling stickyNode.output(0); chaining stickyNode.output(0).to(target); generic code that fans out from every node.

Common situations: Treating the sticky return value as chainable; auto-wiring utility that calls .output() uniformly; assuming sticky notes behave like processing nodes.

Related errors


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