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.

Add more feedback to a 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
← Build more capable button actions
Next
Organize controls in a section →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/Positions/Add more feedback to a button

Add more feedback to a button

Create your first button covers adding one feedback. This page covers stacking several feedbacks on the same button, testing a variable's own value as a feedback, and generating a feedback per choice the same way you can with actions.

Before you begin#

  • A button with at least one feedback added. See Create your first button.

Stack more than one feedback#

A button can hold as many feedbacks as you need, each independently active or inactive, each overriding its own set of Button Content and Button Styling fields when active. This is how a single button reflects more than one piece of state at once: for example, one feedback that sets Context Background Color when a source is on preview, and a second that sets Background Color when the same source is on program, letting both states show simultaneously on a three-line layout.
Later feedbacks in the list are evaluated after earlier ones, so if two active feedbacks both target the same field, the one lower in the list wins.

Test a variable directly as feedback#

The Internal Expression feedback isn't tied to any connection: it evaluates an expression you write against any variable and reports true or false, the same way a connection's own feedback would. Use it for logic a connection doesn't expose directly, such as checking the current hour or comparing two variables. It gets the same Preview and Test controls as any other feedback, so you can confirm the expression evaluates correctly before relying on it.

Generate a feedback per choice#

When a feedback's own field is a dropdown of choices, its ... menu offers Create Button Repeater from choices, the same as an action's dropdown does. This is how a repeated set of buttons gets matching feedback: for example, repeating an ATEM's Set Program input action across every input, then repeating an On program feedback the same way, so each generated button both switches to its own input and lights up when that input is actually live.
Both repeaters need to reference the same option list (for example, both keyed off the connection's own input list) to stay aligned button for button. The Repeater tab's Data Sources list shows every action and feedback repeater feeding the current layout together, so you can confirm they're aligned, see Build more capable button actions for the full repeater mechanics, including the $(self.repeatIndex)/$(self.repeatDataId)/$(self.repeatDataLabel) variables and the Customize Data & Labels editor.
Feedback repeaters don't have an encoder-selector equivalent: encoder selection is an action-only concept, since it drives what an encoder's turn does, not what a button displays.

If you get stuck#

What you see
What to try
Two feedbacks conflict on the same styling field.
Check their order in the list: a later feedback overrides an earlier one's value for the same field when both are active.
A repeated feedback doesn't match up with its repeated action.
Confirm both repeaters are built from the same option list, see the Data Sources list on the Repeater tab.
An Expression feedback never turns true.
Use Test to check the expression directly, and confirm the variable it references is actually populated.

Where to go next#

  • Build more capable button actions, for steps, groups, conditional logic, repeaters, and encoders.
  • Button Inspector reference, for every field on the Feedbacks and Repeater tabs.
  • Understand variable scope, for what a variable in an expression can actually see.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful