# Link Call To context menu item

**URL:** <https://discourse.nodered.org/t/link-call-to-context-menu-item/101721>\
**Category:** General\
**Created:** [2 September 2026 12:29 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721 "2026-09-02T12:29:34Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [2 September 2026 12:29 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/1 "2026-09-02T12:29:34Z")

</div>

Hi There,

Recently I was adding link call nodes and became aware of how nice it would be to have this option in the context IFF the highlighted node is a link in node:

 ![Screenshot 2026-09-02 at 14.22.34](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/0/a06e68a0f0fabdf9d7842dc0d8f69efe72b25e6c.png)

The alternative was searching for the right node in this list of 385 link nodes:

![Screenshot 2026-09-02 at 14.26.15](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/8/98f21b655264d450c90daa95889d2af50bba6eed.png)

Instead I created a script for doing this for me:

```js
(RED.view.selection().nodes || []).filter(nde => nde.type == "link in").forEach( (nde) => {
    let linkCallNode = {
            "id": RED.nodes.id(),
            "type": "link call",
            "z": nde.z,
            "links": [nde.id],
            "linkType": "static",
            "timeout": "30",
            "x": nde.x + 0,
            "y": nde.y + 100,
            "name": "",
            "wires": [[]]
    }

    RED.nodes.import([linkCallNode], {
        generateIds: false,
        addFlow: false,
        markChanged: false,
        reimport: true,
        importMap: ((zz) => { let h = {}; h[zz] = "import"; return h })(nde.z),
        applyNodeDefaults: false,
        eventContext: null
    })

     RED.view.redraw(true)    
})

```

I can then trigger that in the console window.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [2 September 2026 13:22 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/2 "2026-09-02T13:22:07Z")

</div>

There is an open issue and pending PR that allows nodes to contribute custom items to the context menu. I think that would fit in well here.

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [2 September 2026 13:37 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/3 "2026-09-02T13:37:18Z")

</div>

> <https://github.com/node-red/node-red/pull/5332>
>
> \## Types of changes
> 
> \- \[\] Bugfix (non-breaking change which fixes an issue)
> …- \[x\] New feature (non-breaking change which adds functionality)
> 
> \## Proposed changes
> 
> Part of #5125.
> 
> Allows a node to have actions that can be triggered from the context menu.
> 
> \### Concept
> 
> If a node definition contains the \`contextMenu\` property, its contents will be shown in the \`Show node actions\` section of the context menu.
> 
> \`\`\`js
> RED.nodes.registerType('example', {
> defaults: {},
> contextMenu: \[
> { label: 'Click me', onselect: function () { RED.notify("Here's Johnny") } }
> \],
> });
> \`\`\`
> 
> This property will have the same characteristics as menu items:
> 
> \`\`\`ts
> interface MenuItemOptions {
> direction?: string;
> disabled?: boolean;
> group?: boolean;
> href?: string;
> icon?: string;
> id?: string;
> label?: string;
> local?: boolean;
> onselect?: string | ((state?: boolean) =\> void);
> options?: MenuItemOptions\[\];
> selected?: boolean;
> setting?: string;
> shortcut?: { scope: string; key: string; user?: boolean };
> sublabel?: string;
> toggle?: boolean;
> visible?: boolean;
> }
> 
> Type ContextMenu = MenuItemOptions\[\] | ((this: Node) =\> MenuItemOptions\[\]);
> \`\`\`
> 
> \### Preview
> 
> \#### Without context menu
> 
> \<img width="483" height="155" alt="Capture d’écran 2025-10-28 à 11 54 02" src="https://github.com/user-attachments/assets/20715a62-344e-4d58-829c-ff7664fad8a9" /\>
> 
> \#### With context menu
> 
> \<img width="691" height="155" alt="Capture d’écran 2025-10-28 à 11 54 54" src="https://github.com/user-attachments/assets/fab3a8b1-5ef4-438e-9245-dcf2faaa7423" /\>
> 
> \## Checklist
> 
> \- \[x\] I have read the \[contribution guidelines\](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
> \- \[x\] For non-bugfix PRs, I have discussed this change on the forum/slack team.
> \- \[x\] I have run \`npm run test\` to verify the unit tests pass
> \- \[\] I have added suitable unit tests to cover the new/changed functionality

that one probably?

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [2 September 2026 13:43 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/4 "2026-09-02T13:43:14Z")

</div>

> [@knolleary](#):
>
> nodes to contribute custom items

But wait, this is an inbuilt node - I can't add an action for the link-in node's context menu from my own plugin right?

Won't the link-in node provide this is in its definition?

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [2 September 2026 14:00 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/5 "2026-09-02T14:00:41Z")

</div>

The goal of that PR is to allow a node to add elements to its context menu.

Another PR ([#5333](https://github.com/node-red/node-red/pull/5333)) proposes a way to quickly navigate to the "Link In" target of a "Link Call" node.

So, you can add another action to the node definition to do what you want. Into the core or third party node.

A plugin can always override a node definition, even if it isn't supposed to 🙊

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [2 September 2026 14:13 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/6 "2026-09-02T14:13:50Z")

</div>

Ok, understand #5332 (PR above) enables the "contextMenu" property for any node, and #5333 uses that property to add a "jump to target" for the link call node.

So the next PR will add the "create link call node" for the link-in node context menu by adding the "contextMenu" property to the link-in node definition 😉

> [@GogoVega](#):
>
> A plugin can always override a node definition

Really? Surely I can't modify the static definition for a link-in node. I can definitely interact with existing instances of the nodes but its static definition.... Ok, I can define a custom node that happens to have the same type "link in" and then break my NR installation!

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [2 September 2026 14:19 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/7 "2026-09-02T14:19:18Z")

</div>

> [@gregorius](#):
>
> So the next PR will add the "create link call node" for the link-in node context menu by adding the "contextMenu" property to the link-in node definition 😉

😘

> [@gregorius](#):
>
> > [@GogoVega](#):
> >
> > A plugin can always override a node definition
> 
> Really?

It's not a great idea to go into the details of the "how" on a public forum, but you've clearly figured it out 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [2 September 2026 14:35 UTC](https://discourse.nodered.org/t/link-call-to-context-menu-item/101721/8 "2026-09-02T14:35:48Z")

</div>

> [@GogoVega](#):
>
> "how" on a public forum,

Security through obscurity? I think anyone with a decent AI and enough nefarious energy will figure it out - the rest will be left in obs(e)curity ...

That's the unfortunate new reality of Fable.

EDIT:

At this point, I could point out that my [NodeDev](https://flows.nodered.org/node/@gregoriusrippenstein/node-red-contrib-nodedev) package includes a [import functionality](https://github.com/gorenje/node-red-contrib-nodedev#importing-existing-packages) that allows inspection of third party packages before installing them. It can also import itself but for that you need to install it first 😉

So I'm not being a dick for the sack of it, rather to make folks aware and then also try to provide tools to improve the situation.
