{"record":{"id":"353d9a104199c210","repo":"n8n-io/n8n","slug":"sticky-notes-do-not-support-output-connections","errorCode":null,"errorMessage":"Sticky notes do not support output connections","messagePattern":"Sticky notes do not support output connections","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/@n8n/workflow-sdk/src/workflow-builder/node-builders/node-builder.ts","lineNumber":1153,"sourceCode":"\tupdate(config: Partial<NodeConfig>): NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void> {\n\t\tconst newContent = (config.parameters?.content as string) ?? this.config.parameters?.content;\n\t\tconst newConfig: StickyNoteConfig = {\n\t\t\tposition: config.position ?? this.config.position,\n\t\t\tcolor: (config.parameters?.color as number) ?? (this.config.parameters?.color as number),\n\t\t\twidth: (config.parameters?.width as number) ?? (this.config.parameters?.width as number),\n\t\t\theight: (config.parameters?.height as number) ?? (this.config.parameters?.height as number),\n\t\t\tname: config.name ?? this.name,\n\t\t};\n\t\t// Pass empty nodes array since update doesn't recalculate bounding box\n\t\treturn new StickyNoteInstance(newContent, [], newConfig);\n\t}\n\n\tinput(_index: number): InputTarget {\n\t\tthrow new Error('Sticky notes do not support input connections');\n\t}\n\n\toutput(_index: number): OutputSelector<'n8n-nodes-base.stickyNote', 'v1', void> {\n\t\tthrow new Error('Sticky notes do not support output connections');\n\t}\n\n\tto<T extends NodeInstance<string, string, unknown>>(\n\t\t_target: T | T[] | InputTarget,\n\t\t_outputIndex?: number,\n\t): NodeChain<NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void>, T> {\n\t\tthrow new Error('Sticky notes do not support connections');\n\t}\n\n\tonError<T extends NodeInstance<string, string, unknown>>(_handler: T): this {\n\t\tthrow new Error('Sticky notes do not support error handlers');\n\t}\n\n\tgetConnections(): DeclaredConnection[] {\n\t\treturn [];\n\t}\n}\n","sourceCodeStart":1135,"sourceCodeEnd":1171,"githubUrl":"https://github.com/n8n-io/n8n/blob/5ac6606e81f67bb9534255570cd4e86fd8101eee/packages/@n8n/workflow-sdk/src/workflow-builder/node-builders/node-builder.ts#L1135-L1171","documentation":"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.","triggerScenarios":"Calling stickyNode.output(0); chaining stickyNode.output(0).to(target); generic code that fans out from every node.","commonSituations":"Treating the sticky return value as chainable; auto-wiring utility that calls .output() uniformly; assuming sticky notes behave like processing nodes.","solutions":["Do not call .output() on a StickyNoteInstance.","Filter sticky notes out before applying fan-out logic.","Pass stickies to workflow() as standalone documentation elements."],"exampleFix":"// before\nstickyNode.output(0).to(target); // throws\n// after\nworkflow(source.to(target), stickyNote); // sticky added standalone","handlingStrategy":"type-guard","validationCode":"const STICKY = 'n8n-nodes-base.stickyNote';\n\nfunction safeOutput(node: NodeInstance, i: number): OutputSelector<any, any, any> {\n  if (node.type === STICKY) throw new Error('Sticky notes have no output');\n  return node.output(i);\n}","typeGuard":"function isStickyNote(node: NodeInstance): node is NodeInstance<'n8n-nodes-base.stickyNote', 'v1', void> {\n  return node.type === 'n8n-nodes-base.stickyNote';\n}","tryCatchPattern":null,"preventionTips":["Never call .output() on a sticky note; it has no ports.","Filter stickies out before fan-out loops.","Add stickies to workflow() separately from the connection chain."],"tags":["runtime","builder","sticky-note","connections"],"backgroundTag":null,"analyzedSha":"5ac6606e81f67bb9534255570cd4e86fd8101eee","analyzedAt":"2026-08-12T05:26:35.080Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}