The dashboard button config contains this -

...which suggests if you stick an inject node in front of the button node, the msg from the inject node should pass through the button node and appear in debug.
![]()
But it doesn't, it just sends the payload contained in the button node, and the msg from the inject node is disregarded.
My user case was to chain a number of buttons together, each of which performs a different function, and the single output then influences further processes.

The flow for the 3 node example above;
[
{
"id": "d87ba0f9.de993",
"type": "ui_button",
"z": "6eb37a1d.ee8f34",
"name": "button",
"group": "ddd690d2.0351d",
"order": 5,
"width": "2",
"height": "1",
"passthru": true,
"label": "test",
"color": "green",
"bgcolor": "#2A2A2A",
"icon": "",
"payload": "fromButton",
"payloadType": "str",
"topic": "",
"x": 750,
"y": 540,
"wires": [
[
"8bdb8c06.f727f"
]
]
},
{
"id": "8f4c010f.465cd",
"type": "inject",
"z": "6eb37a1d.ee8f34",
"name": "inject",
"topic": "",
"payload": "fromInject",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 590,
"y": 540,
"wires": [
[
"d87ba0f9.de993"
]
]
},
{
"id": "8bdb8c06.f727f",
"type": "debug",
"z": "6eb37a1d.ee8f34",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 900,
"y": 540,
"wires": []
},
{
"id": "ddd690d2.0351d",
"type": "ui_group",
"z": "",
"name": "Test2",
"tab": "117b6717.6166b9",
"disp": true,
"width": "27",
"collapse": false
},
{
"id": "117b6717.6166b9",
"type": "ui_tab",
"z": 0,
"name": "Test2",
"icon": "dashboard",
"order": 7
}
]