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.

Create your first button
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
← Add controls and sections to a position
Next
Use a connection's presets →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/Positions/Create your first button

Create your first button

A button in Buttons does two things at once: it sends an action when pressed, and it shows you what's actually happening through feedback, so you always know the real state, not just what you last clicked. This page walks through creating a button, giving it an action, and adding feedback so it reflects real device state.

Before you begin#

  • A position to add the button to. See Create a position.
  • A connection with actions and feedbacks to use, such as an ATEM. See Add an ATEM connection.

Create the button#

  1. Open the position and select an empty cell on the canvas.
  2. Right-click the selection, then choose Create... → Button.
  3. Under Button Content, set Text to something recognizable, such as Camera 1. Label is a separate field: it's the name shown in the tree view for finding this button while editing, and doesn't need to match what's on the button itself.
  4. Choose a Layout for how the icon and text lines are arranged, and optionally set an Icon.

Give it an action#

  1. Select the lightning-bolt tab in the inspector to open Actions.
  1. Under Press, select Add Action... and search for the action you want. This searches both your connections' actions and Buttons' own internal actions.
  2. Select an action, such as an ATEM's ME: Set Program input.
  3. Under Mode, choose how the action targets a connection:
  • Single Connection: execute on the selected connection only.
  • Connection Variable: use a connection variable to determine the connection at runtime.
  • Multiple Targets: execute on multiple connections simultaneously.
  1. Set the action's own options, such as which input to switch to.
A button can have more than one action handler: Release, Left, Right, and Encoder are available alongside Press for surfaces that support them.

Test it without a surface#

Hold Shift and click the button on the canvas to fire it: this presses it on mouse-down and releases it on mouse-up, the same as a real surface would, without needing one assigned. Use this to confirm an action works before adding feedback or wiring up hardware.
To test a single action in isolation instead of the whole button, use the small lightning-bolt icon on that action's own row in the Actions list. This runs just that one action immediately, using its current settings (a real execution against the connection, workflow, or internal action, not a preview), and works on unsaved changes too. There's no confirmation step, so use it deliberately.

Add feedback so it reflects real state#

An action tells the button what to do. Feedback tells it what's actually true.
  1. Select the eye-shaped tab in the inspector to open Feedback.
  1. Select Add Feedback... and search for a feedback that matches what you want to reflect: for example, an ATEM's ME: One ME program source, which is active when a specific input is live on the program bus.
  1. Set the feedback's own options, such as which input it's watching for.
  2. Use the Preview panel to see what the button looks like when the feedback is active, and select Test to try it live.
Many connection presets already style their feedback with a sensible default color: check Button Styling under the feedback before assuming you need to set one yourself.

Save your button#

Select Apply to save your changes. Nothing is saved to the position until you do.

If you get stuck#

What you see
What to try
The button doesn't do anything when pressed.
Confirm you added the action under Press, not a different handler like Release.
The feedback never turns on.
Check that the feedback's own options (such as which input it watches) actually match what the action does.
You can't find the action or feedback you're looking for.
Search using the connection's own terminology: action and feedback names come directly from the connection module.

Where to go next#

  • Build more capable button actions, for multiple steps, conditional logic, repeaters, and encoders.
  • Add more feedback to a button, for stacking feedbacks and generating one per choice.
  • Organize controls in a section, once you have more than a few buttons to arrange.
  • Build a focused routing panel with Custom Router, if the controls you need are for routing rather than direct device actions.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful