[{"data":1,"prerenderedAt":289},["ShallowReactive",2],{"node-red-\u002Fnode-red\u002Fcore-nodes\u002Flink":3},{"id":4,"title":5,"body":6,"description":17,"extension":282,"meta":283,"navigation":284,"path":285,"seo":286,"stem":287,"__hash__":288},"nodeRed\u002Fnode-red\u002Fcore-nodes\u002Flink.md","Node-RED - Link Node",{"type":7,"value":8,"toc":260},"minimark",[9,14,18,23,26,30,33,38,41,45,48,52,55,59,62,65,68,71,75,79,82,87,91,94,97,101],[10,11,13],"h1",{"id":12},"link","Link",[15,16,17],"p",{},"Creates virtual connections between nodes without visible wires, helping organize complex flows.",[19,20,22],"h2",{"id":21},"where-and-why-do-we-use-the-link-nodes","Where and why do we use the Link nodes?",[15,24,25],{},"The Link In and Link Out nodes help organize flows by creating virtual connections that aren't visible until selected. This is essential for managing complex flows where physical wires would create visual clutter or when you want to reuse logic across multiple locations. By connecting distant parts of your flow without drawing wires across the canvas, you can keep related nodes grouped together, reduce wire crossings, and make flows more maintainable and easier to understand.",[19,27,29],{"id":28},"modes-of-operation","Modes of operation",[15,31,32],{},"Link nodes work in pairs to create virtual connections:",[34,35,37],"h3",{"id":36},"link-out-node","Link Out Node",[15,39,40],{},"Sends messages to one or more Link In nodes. You can configure which Link In nodes receive the message by selecting them from a list. The Link Out node can send to Link In nodes on the same tab or on different tabs, enabling cross-flow communication.",[34,42,44],{"id":43},"link-in-node","Link In Node",[15,46,47],{},"Receives messages from Link Out nodes. When a Link Out node sends a message, all connected Link In nodes receive a copy. The Link In node acts as a starting point for a new branch of your flow.",[34,49,51],{"id":50},"link-call-node","Link Call Node",[15,53,54],{},"Sends messages to a Link In node and waits for a response, similar to calling a function. This enables request-response patterns where you need to process data and return results. The response comes from a Link Out node configured to return to the calling Link Call node.",[19,56,58],{"id":57},"how-the-nodes-handle-messages","How the nodes handle messages",[15,60,61],{},"Link Out nodes pass messages to their connected Link In nodes exactly as received - no modifications are made. When multiple Link In nodes are connected to a single Link Out, each receives an independent copy of the message.",[15,63,64],{},"Link In nodes emit the received message and start a new flow branch. Any nodes connected to a Link In node process the message as if it came from any other node.",[15,66,67],{},"Link Call nodes send messages and pause, waiting for a response. The called Link In node processes the message through its connected nodes until reaching a Link Out node configured to return responses. This creates synchronous, function-like behavior within otherwise asynchronous flows.",[15,69,70],{},"The virtual connections between Link nodes only become visible in the editor when you select either the Link In or Link Out node, showing which nodes are connected with dashed lines.",[19,72,74],{"id":73},"examples","Examples",[34,76,78],{"id":77},"organizing-flow-sections","Organizing flow sections",[15,80,81],{},"Link nodes separate different functional areas of a flow without cluttering the canvas with long wires. This example shows input processing separated from output handling, making each section easier to understand and maintain.",[83,84],"render-flow",{":height":85,"flow":86},"200","W3siaWQiOiIyMmNhNmVmOTY2OGI1ZGRkIiwidHlwZSI6Imdyb3VwIiwieiI6ImY3N2Y2MWI5MDM5NWY1ODgiLCJzdHlsZSI6eyJzdHJva2UiOiIjYjJiM2JkIiwic3Ryb2tlLW9wYWNpdHkiOiIxIiwiZmlsbCI6IiNmMmYzZmIiLCJmaWxsLW9wYWNpdHkiOiIwLjUiLCJsYWJlbCI6dHJ1ZSwibGFiZWwtcG9zaXRpb24iOiJudyIsImNvbG9yIjoiIzMyMzMzYiJ9LCJub2RlcyI6WyJpbnB1dC1pbmplY3QiLCJwcm9jZXNzLWlucHV0IiwibGluay1vdXQtcHJvY2VzcyIsImxpbmstaW4tb3V0cHV0IiwiZm9ybWF0LW91dHB1dCIsIm91dHB1dC1kZWJ1ZyJdLCJ4IjozMzQsInkiOjUyOTksInciOjc5MiwiaCI6MjAyfSx7ImlkIjoiaW5wdXQtaW5qZWN0IiwidHlwZSI6ImluamVjdCIsInoiOiJmNzdmNjFiOTAzOTVmNTg4IiwiZyI6IjIyY2E2ZWY5NjY4YjVkZGQiLCJuYW1lIjoiU2Vuc29yIERhdGEiLCJwcm9wcyI6W3sicCI6InBheWxvYWQifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IntcInRlbXBlcmF0dXJlXCI6MjIsXCJodW1pZGl0eVwiOjY1fSIsInBheWxvYWRUeXBlIjoianNvbiIsIngiOjQ1MCwieSI6NTM0MCwid2lyZXMiOltbInByb2Nlc3MtaW5wdXQiXV19LHsiaWQiOiJwcm9jZXNzLWlucHV0IiwidHlwZSI6ImZ1bmN0aW9uIiwieiI6ImY3N2Y2MWI5MDM5NWY1ODgiLCJnIjoiMjJjYTZlZjk2NjhiNWRkZCIsIm5hbWUiOiJWYWxpZGF0ZSBJbnB1dCIsImZ1bmMiOiJpZiAoXG4gICAgbXNnLnBheWxvYWQgJiZcbiAgICBtc2cucGF5bG9hZC50ZW1wZXJhdHVyZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgbXNnLnBheWxvYWQuaHVtaWRpdHkgIT09IHVuZGVmaW5lZFxuKSB7XG4gICAgcmV0dXJuIG1zZztcbn1cbnJldHVybiBudWxsOyIsIm91dHB1dHMiOjEsIngiOjc2MCwieSI6NTM0MCwid2lyZXMiOltbImxpbmstb3V0LXByb2Nlc3MiXV19LHsiaWQiOiJsaW5rLW91dC1wcm9jZXNzIiwidHlwZSI6Imxpbmsgb3V0IiwieiI6ImY3N2Y2MWI5MDM5NWY1ODgiLCJnIjoiMjJjYTZlZjk2NjhiNWRkZCIsIm5hbWUiOiJUbyBPdXRwdXQgSGFuZGxlciIsIm1vZGUiOiJsaW5rIiwibGlua3MiOlsibGluay1pbi1vdXRwdXQiXSwieCI6OTM1LCJ5Ijo1MzQwLCJ3aXJlcyI6W119LHsiaWQiOiJsaW5rLWluLW91dHB1dCIsInR5cGUiOiJsaW5rIGluIiwieiI6ImY3N2Y2MWI5MDM5NWY1ODgiLCJnIjoiMjJjYTZlZjk2NjhiNWRkZCIsIm5hbWUiOiJGcm9tIElucHV0IFByb2Nlc3MiLCJsaW5rcyI6WyJsaW5rLW91dC1wcm9jZXNzIl0sIngiOjUxNSwieSI6NTQ2MCwid2lyZXMiOltbImZvcm1hdC1vdXRwdXQiXV19LHsiaWQiOiJmb3JtYXQtb3V0cHV0IiwidHlwZSI6ImZ1bmN0aW9uIiwieiI6ImY3N2Y2MWI5MDM5NWY1ODgiLCJnIjoiMjJjYTZlZjk2NjhiNWRkZCIsIm5hbWUiOiJGb3JtYXQgZm9yIERpc3BsYXkiLCJmdW5jIjoibXNnLnBheWxvYWQgPSBgVGVtcDogJHttc2cucGF5bG9hZC50ZW1wZXJhdHVyZX3CsEMsIEh1bWlkaXR5OiAke21zZy5wYXlsb2FkLmh1bWlkaXR5fSVgO1xucmV0dXJuIG1zZzsiLCJvdXRwdXRzIjoxLCJ4Ijo3NzAsInkiOjU0NjAsIndpcmVzIjpbWyJvdXRwdXQtZGVidWciXV19LHsiaWQiOiJvdXRwdXQtZGVidWciLCJ0eXBlIjoiZGVidWciLCJ6IjoiZjc3ZjYxYjkwMzk1ZjU4OCIsImciOiIyMmNhNmVmOTY2OGI1ZGRkIiwibmFtZSI6IkRpc3BsYXkgT3V0cHV0IiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbXBsZXRlIjoicGF5bG9hZCIsIngiOjEwMDAsInkiOjU0NjAsIndpcmVzIjpbXX1d",[34,88,90],{"id":89},"reusable-processing-logic","Reusable processing logic",[15,92,93],{},"Link In nodes enable reusing the same processing logic from multiple sources without duplicating nodes. This example shows multiple inputs feeding into a single processing pipeline through Link nodes, useful for common transformations or validations.",[83,95],{":height":85,"flow":96},"W3siaWQiOiJzb3VyY2UxLWluamVjdCIsInR5cGUiOiJpbmplY3QiLCJ6IjoiYTFiMmMzZDRlNWY2ZzdoOCIsIm5hbWUiOiJTb3VyY2UgMSIsInByb3BzIjpbeyJwIjoicGF5bG9hZCJ9LHsicCI6InNvdXJjZSIsInYiOiJzZW5zb3ItMSIsInZ0Ijoic3RyIn1dLCJyZXBlYXQiOiIiLCJjcm9udGFiIjoiIiwib25jZSI6ZmFsc2UsIm9uY2VEZWxheSI6MC4xLCJ0b3BpYyI6IiIsInBheWxvYWQiOiIyNSIsInBheWxvYWRUeXBlIjoibnVtIiwieCI6MTgwLCJ5IjoxNDAsIndpcmVzIjpbWyJsaW5rLW91dC0xIl1dfSx7ImlkIjoic291cmNlMi1pbmplY3QiLCJ0eXBlIjoiaW5qZWN0IiwieiI6ImExYjJjM2Q0ZTVmNmc3aDgiLCJuYW1lIjoiU291cmNlIDIiLCJwcm9wcyI6W3sicCI6InBheWxvYWQifSx7InAiOiJzb3VyY2UiLCJ2Ijoic2Vuc29yLTIiLCJ2dCI6InN0ciJ9XSwicmVwZWF0IjoiIiwiY3JvbnRhYiI6IiIsIm9uY2UiOmZhbHNlLCJvbmNlRGVsYXkiOjAuMSwidG9waWMiOiIiLCJwYXlsb2FkIjoiMzAiLCJwYXlsb2FkVHlwZSI6Im51bSIsIngiOjE4MCwieSI6MjAwLCJ3aXJlcyI6W1sibGluay1vdXQtMiJdXX0seyJpZCI6InNvdXJjZTMtaW5qZWN0IiwidHlwZSI6ImluamVjdCIsInoiOiJhMWIyYzNkNGU1ZjZnN2g4IiwibmFtZSI6IlNvdXJjZSAzIiwicHJvcHMiOlt7InAiOiJwYXlsb2FkIn0seyJwIjoic291cmNlIiwidiI6InNlbnNvci0zIiwidnQiOiJzdHIifV0sInJlcGVhdCI6IiIsImNyb250YWIiOiIiLCJvbmNlIjpmYWxzZSwib25jZURlbGF5IjowLjEsInRvcGljIjoiIiwicGF5bG9hZCI6IjI4IiwicGF5bG9hZFR5cGUiOiJudW0iLCJ4IjoxODAsInkiOjI2MCwid2lyZXMiOltbImxpbmstb3V0LTMiXV19LHsiaWQiOiJsaW5rLW91dC0xIiwidHlwZSI6Imxpbmsgb3V0IiwieiI6ImExYjJjM2Q0ZTVmNmc3aDgiLCJuYW1lIjoiIiwibW9kZSI6ImxpbmsiLCJsaW5rcyI6WyJsaW5rLWluLXByb2Nlc3MiXSwieCI6MzM1LCJ5IjoxNDAsIndpcmVzIjpbXX0seyJpZCI6Imxpbmstb3V0LTIiLCJ0eXBlIjoibGluayBvdXQiLCJ6IjoiYTFiMmMzZDRlNWY2ZzdoOCIsIm5hbWUiOiIiLCJtb2RlIjoibGluayIsImxpbmtzIjpbImxpbmstaW4tcHJvY2VzcyJdLCJ4IjozMzUsInkiOjIwMCwid2lyZXMiOltdfSx7ImlkIjoibGluay1vdXQtMyIsInR5cGUiOiJsaW5rIG91dCIsInoiOiJhMWIyYzNkNGU1ZjZnN2g4IiwibmFtZSI6IiIsIm1vZGUiOiJsaW5rIiwibGlua3MiOlsibGluay1pbi1wcm9jZXNzIl0sIngiOjMzNSwieSI6MjYwLCJ3aXJlcyI6W119LHsiaWQiOiJsaW5rLWluLXByb2Nlc3MiLCJ0eXBlIjoibGluayBpbiIsInoiOiJhMWIyYzNkNGU1ZjZnN2g4IiwibmFtZSI6IkNvbW1vbiBQcm9jZXNzb3IiLCJsaW5rcyI6WyJsaW5rLW91dC0xIiwibGluay1vdXQtMiIsImxpbmstb3V0LTMiXSwieCI6MTk1LCJ5IjozODAsIndpcmVzIjpbWyJwcm9jZXNzLWRhdGEiXV19LHsiaWQiOiJwcm9jZXNzLWRhdGEiLCJ0eXBlIjoiZnVuY3Rpb24iLCJ6IjoiYTFiMmMzZDRlNWY2ZzdoOCIsIm5hbWUiOiJDb252ZXJ0IHRvIEZhaHJlbmhlaXQiLCJmdW5jIjoibXNnLnBheWxvYWQgPSAobXNnLnBheWxvYWQgKiA5LzUpICsgMzI7XG5tc2cucGF5bG9hZCA9IGAke21zZy5zb3VyY2V9OiAke21zZy5wYXlsb2FkLnRvRml4ZWQoMSl9wrBGYDtcbnJldHVybiBtc2c7Iiwib3V0cHV0cyI6MSwidGltZW91dCI6MCwibm9lcnIiOjAsImluaXRpYWxpemUiOiIiLCJmaW5hbGl6ZSI6IiIsImxpYnMiOltdLCJ4Ijo0MDAsInkiOjM4MCwid2lyZXMiOltbInJlc3VsdC1kZWJ1ZyJdXX0seyJpZCI6InJlc3VsdC1kZWJ1ZyIsInR5cGUiOiJkZWJ1ZyIsInoiOiJhMWIyYzNkNGU1ZjZnN2g4IiwibmFtZSI6IlByb2Nlc3NlZCBSZXN1bHRzIiwiYWN0aXZlIjp0cnVlLCJ0b3NpZGViYXIiOnRydWUsImNvbnNvbGUiOmZhbHNlLCJ0b3N0YXR1cyI6ZmFsc2UsImNvbXBsZXRlIjoicGF5bG9hZCIsInRhcmdldFR5cGUiOiJtc2ciLCJzdGF0dXNWYWwiOiIiLCJzdGF0dXNUeXBlIjoiYXV0byIsIngiOjYyMCwieSI6MzgwLCJ3aXJlcyI6W119XQ==",[19,98,100],{"id":99},"node-documentation","Node Documentation",[102,103,106,109,110,109,114,109,122,109,125,109,132,109,134,109,137,109,148,109,151,109,155,109,161,109,165,109,197,109,200,109,209,109,215,109,222,233,109,258],"div",{"className":104},[105],"core-node-doc",[15,107,108],{},"Create virtual wires between flows."," ",[34,111,113],{"id":112},"details","Details",[15,115,116,117,121],{},"The node can be connected to any ",[118,119,120],"code",{},"link out"," node that exists on any tab.\nOnce connected, they behave as if they were wired together.",[15,123,124],{},"The wires between link nodes are only displayed when a link node is selected.\nIf there are any wires to other tabs, a virtual node is shown that can be clicked\non to jump to the appropriate tab.",[15,126,127,131],{},[128,129,130],"b",{},"Note: ","Links cannot be created going into, or out of, a subflow.",[15,133,108],{},[34,135,113],{"id":136},"details-1",[15,138,139,140,143,144,147],{},"This node can be configured to either send messages to all ",[118,141,142],{},"link in","\nnodes it is connected to, or to send a response back to the ",[118,145,146],{},"link call","\nnode that triggered the flow.",[15,149,150],{},"When in 'send to all' mode, the wires between link nodes are only displayed when\nthe node is selected. If there are any wires to other tabs, a virtual node\nis shown that can be clicked on to jump to the appropriate tab.",[15,152,153,131],{},[128,154,130],{},[15,156,157,158,160],{},"Calls a flow that starts with a ",[118,159,142],{}," node and passes on the response.",[34,162,164],{"id":163},"inputs","Inputs",[166,167,170,182],"dl",{"className":168},[169],"message-properties",[171,172,175,176],"dt",{"className":173},[174],"optional","target",[177,178,181],"span",{"className":179},[180],"property-type","string",[183,184,185,186,189,190,193,194,196],"dd",{},"When the option ",[128,187,188],{},"Link Type"," is set to \"Dynamic target\", set ",[118,191,192],{},"msg.target"," to the name of the\n",[118,195,142],{}," node you wish to call.",[34,198,113],{"id":199},"details-2",[15,201,202,203,205,206,208],{},"This node can be connected to a ",[118,204,142],{}," node that exists on any tab.\nThe flow connected to that node must end with a ",[118,207,120],{}," node configured\nin 'return' mode.",[15,210,211,212,214],{},"When this node receives a message, it is passed to the connected ",[118,213,142],{}," node.\nIt then waits for a response which it then sends on.",[15,216,217,218,221],{},"If no response is received within the configured timeout, default 30 seconds, the node\nwill log an error that can be caught using the ",[118,219,220],{},"catch"," node.",[15,223,185,224,226,227,229,230,232],{},[128,225,188],{}," is set to \"Dynamic target\" ",[118,228,192],{}," can be used to call a\n",[118,231,142],{}," by name or id. \n",[234,235,236,243,249],"ul",{},[237,238,239,240,242],"li",{},"If there is a ",[118,241,142],{}," nodes with the same id, it will be called",[237,244,245,246,248],{},"If there are two or more ",[118,247,142],{}," nodes with the same name, an error will be raised",[237,250,251,252,254,255,257],{},"A ",[118,253,146],{}," cannot call a ",[118,256,142],{}," node inside a subflow",[118,259,120],{},{"title":261,"searchDepth":262,"depth":262,"links":263},"",2,[264,265,271,272,276],{"id":21,"depth":262,"text":22},{"id":28,"depth":262,"text":29,"children":266},[267,269,270],{"id":36,"depth":268,"text":37},3,{"id":43,"depth":268,"text":44},{"id":50,"depth":268,"text":51},{"id":57,"depth":262,"text":58},{"id":73,"depth":262,"text":74,"children":273},[274,275],{"id":77,"depth":268,"text":78},{"id":89,"depth":268,"text":90},{"id":99,"depth":262,"text":100,"children":277},[278,279,280,281],{"id":112,"depth":268,"text":113},{"id":136,"depth":268,"text":113},{"id":163,"depth":268,"text":164},{"id":199,"depth":268,"text":113},"md",{},true,"\u002Fnode-red\u002Fcore-nodes\u002Flink",{"title":5,"description":17},"node-red\u002Fcore-nodes\u002Flink","Wf0pkIjZpDzDFfyaEc8XWWDvLaMntvkZ5wBsT5d2lWs",1780070555951]