Panic button to Slack
Mount a Disruptive button somewhere accessible (reception desk, accessible-bathroom door). One press posts an alert in Slack. A short cooldown keeps accidental double-taps from double-paging. For admins wiring a physical "ask for help" button into a team channel.
What this workflow does
When the button fires:
- The Cooldown condition checks whether this button has alerted in the last 10 minutes. If yes, the press is ignored.
- If no, Cooldown allows the press through and starts a 10-minute timer.
- Post To Channel sends a message into
#alertswith the device name and the press time.

Prerequisites
- Disruptive Technologies connected, with the button you want to use.
- Slack connected, with the Neowit app invited to
#alerts. - Workflows enabled for your org. See Enable workflows for your org.
Build it
1. Create the workflow
Workflows → New workflow → name Reception panic button → Create.
2. Add the trigger
Drag Button Pressed onto the canvas. No settings to fill in.
3. Add the cooldown
Drag Cooldown onto the canvas. Settings:
- Duration —
10m. - Key —
device-{{ .trigger.event.device.id }}. With this key, each button has its own cooldown. If you only ever wire one button to this workflow you can leave the key blank — it'll default to one cooldown per node placement.
Drag an edge from the trigger's output to Cooldown's input.
4. Add the Slack action
Drag Slack → Send to channel onto the canvas. Settings:
- Channel —
#alerts. - Content type —
text. - Content —
🆘 Panic button {{ .trigger.event.device.name }} was pressed.
Drag an edge from Cooldown's allowed port into the Slack action. Leave throttled unconnected.
5. Save and test
Click Save, turn Enabled on, add a commit message, save. Press the button — a message should land in #alerts within seconds. Press it again immediately — nothing happens (still in cooldown). Wait 10 minutes — the next press goes through again.
If you don't have the button handy, use Run workflow in the toolbar and paste a fake event:
{
"event": {
"device": {"id": "test-device", "name": "Reception", "type": "touch" },
"timestamp": 1735000000
}
}
Run twice in a row — the second run should route to throttled.
Variations
- Longer cooldown for noisy buttons — bump Duration to
30mor1h. The longer the cooldown, the more presses get suppressed. - Different channel per building — add an If condition before Cooldown that branches on
trigger.event.device.externalIdor device-name patterns, then send to a building-specific channel. - Add a visual signal — fan out a second action from Cooldown's allowed port: a Set Lights (Fagerhult / Hue) that flashes a strip red, or a Set Busylight that turns the desk indicator solid red. Pair with a second workflow that resets the light a few minutes later.
- DM a person instead of a channel — use Send DM with a fixed email if you want a single on-call recipient.
When it doesn't fire
- First press worked, second one was silently ignored. That's the cooldown doing its job. Check the Executions tab — you'll see the run routed to throttled.
- Nothing in
#alerts— make sure the Neowit Slack app is invited to the channel. Private channels need an explicit/invite @Neowit. - Button presses aren't showing up at all — the integration may have lost its DT webhook. See Disruptive Technologies → "When Disruptive stops working".