Bitfocus AS
logo
logo
Bitfocus AS
logo
logo
Sign upSign in

Loading...

Bitfocus

Subscribe to our newsletter

The latest news, articles, and resources, sent to your inbox.

FacebookInstagramGitHubYouTubeLinkedIn

Products

  • Buttons
  • Companion

Integrations

  • Supported Devices
  • Developer Community
  • Connection Development

Support

  • Support Overview
  • Documentation
  • Video Tutorials
  • Community Forum

Sales

  • Resellers & Integrators
  • Buttons Pricing

Updates

  • Case Studies
  • Events & Trade Shows
  • Press Releases
  • Product Updates
  • Webinars

Legal

  • Legal Overview
  • Privacy Policy
  • Buttons EULA
  • Terms & Cookie Policy

Company

  • About us
  • Press kit
  • Careers

© 2026 Bitfocus AS. All rights reserved.

Understand workflows
Docs for
Overview
Getting started
What is Bitfocus Buttons?
Install Buttons and get started
Manage your Buttons license
Activate Buttons offline
Find your way around Buttons
Create your first backup
Add an ATEM connection
Choose a control method
Choose an installation path
Install Buttons on Debian or Ubuntu
Understand HA clustering
Kubernetes HA
Update or remove Buttons
Positions
Understand positions
Create a position
Add controls and sections to a position
Create your first button
Use a connection's presets
Build more capable button actions
Add more feedback to a button
Organize controls in a section
Shift Section
Organize controls with a Folder Section
Add a Popover Section
Build and reuse a Shared Section
Build a Router Section
Understand Custom Routers
Custom Router panel
Surfaces
Surface compatibility
Add and attach a surface
Device orientation
Connections
Update a connection's module safely
Monitor and troubleshoot a connection
Router integrations
VideoHub and AJA KUMO
Utah Scientific BPS
Generic SW-P-08
Nevion VideoIPath
Arkona BLADE//runner
Routing
Physical routing
Configure ports and labels
Take a physical route
Understand route status
Topology graph
Routing Presets
Get started with virtual routing
Configure Nested Shapes
Reverse routing
Tielines
Routing Projects
Routing settings
Troubleshoot a route
Tally
Understand the Tally system
Send ATEM tally and labels to a UMD
Interpret Active Tally state
TSL/UMD connections
Diagnose tally problems
NMOS
Understand NMOS in Buttons
Connect Buttons to an NMOS Registry
Built-in Registry Server
Configure NMOS connections
Discover and adopt
Browse the NMOS inventory
Manage NMOS multicast addresses
Diagnose NMOS problems
Understand Cuelists
Build a Cuelist
Read and advance a running Cuelist
Control a Cuelist from a Position
Workflows
Understand workflows
Build your first workflow
Reuse a group of workflow nodes safely
Troubleshoot a workflow
Recipes
Sequence a timed automation
Call an HTTP endpoint from a workflow
REST endpoint
Use variables
Understand variable scope
Understand nested variables
Update expressions for v1.8
Plan and use Tags
Access
Create and manage users
Create roles and assign permissions
Grant access to specific resources
Show different controls by role
Sessions
Set up PIN and NFC sign-in
SSO
Get started with SSO
Connect a generic OIDC provider
Connect LDAP or Active Directory
Map identity claims to roles
Secure a Buttons deployment
Integrations
External control
Connect to Bitfocus Listener
USB Relay
Install USB Relay on Windows
Install USB Relay on macOS
Install USB Relay on Linux
Install USB Relay on a Raspberry Pi
Get started with the Control API
Secure and monitor the Control API
Control API reference
API reference
Administration
Enable and manage installable features
Services and health
Configure and monitor scheduled backups
Restore a backup and verify it
Export or import Buttons configuration
Store and rotate connection secrets
Replace the HTTPS certificate
HA backup and recovery
Settings
Collect support information
Reference
Glossary
Button Inspector reference
Network ports reference
Expressions
Internal actions reference
Routing Presets panel reference
Startup configuration reference
Workflow nodes
Connection workflow nodes
Workflow workflow nodes
Internal workflow nodes
Position workflow nodes
API workflow nodes
Utility workflow nodes

Loading...

Previous
← Workflows
Next
Build your first workflow →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/Workflows/Understand workflows

Understand workflows

A workflow is the automation and advanced-logic tool in Buttons. Use it to automate behavior that does not begin with a person pressing a button, or when a button press needs more logic than a direct sequence of actions can provide.
You connect nodes to receive events, read current values, make decisions, transform data, run actions, or exchange data with another system. A workflow can start from a connection-state change, timer, schedule, NFC read, incoming network request, or another event. It can also start from a button when the result depends on conditions, branching, retained values, timing, or communication with other systems.
For example, a workflow can watch a connection and respond when its state changes, run scheduled housekeeping, act only when several conditions are satisfied, retain a shared value, or provide an authenticated HTTP endpoint. Use a direct button action when a press should run a straightforward action. Use a Cuelist when actions should advance in a determined show order.

How a workflow fits together#

A workflow is a canvas containing nodes and the connections between them.
  • A node performs one focused job. It might read a connection variable, compare two values, wait for an event, or run an action.
  • A connection carries either a value or an event from one node to another.
  • Connections on the left side of a node are inputs. Connections on the right side are outputs.
  • Some nodes add inputs or outputs after you choose an action, feedback, endpoint, case, or named variable.
Follow a workflow from left to right to understand how information and events reach their result. A workflow does not have to be one uninterrupted chain: one output can support several branches, and separate branches can serve different purposes.

Values describe what is true now#

A value carries the latest piece of information available at that point in the workflow. It can be text, a number, a true-or-false condition, a structured object, or another supported type.
Examples include:
  • the current connection state
  • the active source name Camera 2
  • an audio level of -12
  • whether automation is enabled
  • the latest HTTP response
When an upstream value changes, nodes that depend on it can calculate new outputs. If the value does not change, it continues to represent the current state; it does not represent another occurrence.
Use values to answer questions such as:
  • What is the current level?
  • Is this condition true?
  • Which mode is selected?
  • What text should be displayed?
Values are the normal choice for calculations, comparisons, labels, conditions, and live status.

Events describe something that happened#

An event represents an occurrence at a particular moment. Examples include:
  • a Button node was pressed
  • a timer finished
  • an NFC tag was read
  • an HTTP request arrived
  • a connection action succeeded or failed
Each event is handled separately. Two identical button presses are still two events, because the occurrence matters, not whether a stored value changed.
An event can also carry a payload. For example, an incoming message event can include the received message, and an HTTP completion event can include response information. The event tells downstream nodes when to respond; its payload can tell them what arrived.
Use events to answer questions such as:
  • When should this action run?
  • Did the timer finish?
  • Did a request arrive?
  • Which completion path should continue?

Compare values and events#

Value
Event
Represents
The latest information or condition
One occurrence at a moment in time
Matters when
The information changes or is needed downstream
Every time the occurrence happens
Typical examples
Level, label, Boolean state, response data
Press, message received, timer finished, success, error
Typical use
Calculate, compare, display, or hold current state
Trigger an action or advance a sequence
A node can provide both. The Button node, for example, emits an Event for every press and provides a Timestamp value showing when the latest press occurred. Connect Event when every press should trigger work. Connect Timestamp when another node needs the latest press time as data.

Turn a value change into a specific event#

A changing value and an event are not interchangeable: the editor enforces this directly: dragging a connection from an event output to a value input (or the reverse) is simply refused, so a value and an event can never be connected to each other by mistake.
Suppose a connection feedback outputs true while a device is connected and false when it disconnects. Connecting that Boolean directly to behavior that reacts to every change can respond both when it becomes true and when it becomes false.
Use Change Switch when the workflow needs separate events for those transitions:
Connection Feedback → Change Switch → True Result  → connected behavior
                                  └→ False Result → disconnected behavior
This pattern is useful when a current condition should trigger an action only as it enters a particular state. It preserves the feedback value as the source of truth while making the transitions explicit.

Choose between a card value and a connected value#

Many nodes let you enter a setting directly on the node card or supply it through a value connection.
Use the card when the setting is fixed for this workflow. For example, enter 100 as a fixed maximum on Clamp.
Use a connection when another node should determine the setting while the workflow runs. For example, connect a Workflow Variable to the maximum so an operator-facing control can change it.
When you connect a value to a setting, the connected value normally becomes the working value. What happens to the card field itself varies by node: on most nodes (for example Math's Value A/Value B, or the open/closed switch on State Gate/Event Gate) the field stays visible and simply displays the incoming value instead of its configured default; it's still clickable, but a connection takes priority whenever one is present. On a few nodes (for example HTTP Request's URL) the field disappears entirely once connected. And a small number of inputs are connection-only from the start, with no card field at all regardless of connection state: Case Switch's Select and Default, and several of Counter's inputs, work this way. Dynamic nodes can also change their available connections after you select an action, feedback, or endpoint.

Decide whether you need a workflow#

A workflow is a good fit when:
  • automation starts from something other than a button press
  • a button press must branch according to current conditions
  • several values must be compared, transformed, combined, or retained
  • events must be delayed, ordered, gated, scheduled, or handled differently on success and failure
  • Buttons must receive data from or send data to another system
A workflow is usually unnecessary when one button can run the required action directly. Avoid hiding a straightforward control behind extra workflow logic.

Build around a clear outcome#

Start with the outcome, then identify the information and occurrences needed to reach it:
  1. Choose what should happen, such as displaying a warning or running an action.
  2. Identify the event that should start it, or the value that should control it.
  3. Add only the comparisons, transformations, and gates needed between the input and outcome.
  4. Use Display nodes to inspect important values while building the workflow.
  5. Keep success and error events separate where recovery differs.
For example, an automation that reacts when a calendar activity becomes active might use this flow:
Calendar event name → Logic Operation → Change Switch → True Result → Connection Action
The calendar name is a value. Logic Operation turns the comparison into a Boolean value. Change Switch emits an event only when that result becomes true. The event then runs the action once, rather than running it again when the condition later becomes false.

Understand what the editor shows#

Node cards show their configuration and, where useful, their current output. A red outline or warning indicator means the node has a configuration or connection problem that needs attention.
Use Display to expose an important value directly on the canvas. It is useful for tracing a workflow from input to result and finding the first point where the value differs from what you expected.
Changes on the canvas are not committed until you select Apply. A disabled workflow shows This workflow is disabled. The state of the nodes will not be updated. at the top of the editor. Review event-triggered actions before enabling or applying a workflow, especially when they can affect production equipment or external systems.

Choose the next resource#

  • Use Build your first workflow for a hands-on walkthrough of creating, wiring, and confirming a real workflow.
  • Use the workflow node reference to choose and configure a node.
  • Use a focused recipe when you need to build a specific automation or integration: sequence a timed automation with Delay, Interval, Scheduler, Countdown, or Stopwatch nodes; call an HTTP endpoint; or expose a small authenticated REST endpoint.
  • Use Reuse a group of workflow nodes safely when copying part of one workflow into another.
  • Use workflow troubleshooting guidance when a value, event, or action does not behave as expected.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful