Skip to content
English
  • There are no suggestions because the search field is empty.

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:

  1. The Cooldown condition checks whether this button has alerted in the last 10 minutes. If yes, the press is ignored.
  2. If no, Cooldown allows the press through and starts a 10-minute timer.
  3. Post To Channel sends a message into #alerts with the device name and the press time.

The finished workflow: Button Pressed → Cooldown → Post To Channel. The Cooldown's "throttled" port is unconnected.

Prerequisites

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:

  • Duration10m.
  • Keydevice-{{ .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 typetext.
  • 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 30m or 1h. 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.externalId or 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".

Related