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 Custom Routers
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 a Router Section
Next
Custom Router panel →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/Positions/Understand Custom Routers

Understand Custom Routers

A Custom Router is the context for a routing panel you build yourself, button by button, rather than a panel Buttons generates for you. This page explains what that context tracks and the choices that shape how it behaves, before you build one.
See Build a Router Section if you want a ready-made panel generated from a set of routing resources instead, that's a different element with a similar name.

What the context holds#

A Custom Router's context tracks the state every button placed inside it shares: the currently selected source, selected destination, active levels, active tally channels, and, at runtime, a selected project or routing preset. Because this state is shared, a source button, a destination button, and a Take button placed anywhere inside the same Custom Router all act on the same in-progress selection.
Every button that should act on a router must be placed inside that Custom Router's boundary: directly, or nested inside a popover, folder section, or shared section that is itself mounted inside the Custom Router in the final layout. A button pressed outside any Custom Router context fails and shows a brief error indicator rather than doing nothing, so a misplaced button is noticeable rather than silently broken.

How a selection becomes a route#

The Auto Take Mode setting decides how many selections it takes before Buttons actually routes:
Auto Take Mode
What happens
Off (Require Take Button)
Selecting a source and a destination only stages them. Nothing routes until a Take button is pressed.
Source then Destination
Selecting a source only stages it. Routing happens as soon as a destination is selected afterward.
Destination then Source
Selecting a destination only stages it. Routing happens as soon as a source is selected afterward.
Either Source or Destination (Complete Selection)
Routing happens the moment both a source and a destination are selected, in either order.
Off (Require Take Button) matches the staged-then-confirm pattern used in Execute View and Router Section, so it's a reasonable default if you want a consistent feel across your routing surfaces. The other modes trade that confirmation step for fewer presses.

Who can change the selection#

Each side of the router (source and destination) has its own Control Mode, so one side can behave differently from the other:
Control Mode
What it means
Editable
Internal actions inside this Custom Router can change this selection. This is the default.
Locked
This side is fixed to a configured endpoint. Internal selection actions cannot change it.
Remotely Controllable
Internal actions can change this selection, and the state can also be controlled externally.
Parent Variable
This side follows a routing endpoint variable on the parent section: an enclosing element supplies the value.
Position Variable
This side follows a routing endpoint variable on the current position, so more than one section can share or react to the same value.
Levels and tally channels have their own, simpler control mode with only Editable and Locked: there's no variable-driven option for those.

Which state the router shows#

Route State Source controls which underlying state the router's buttons treat as the current source or destination when showing selection, contributing sources, and tally: the same Live, Request, and Virtual distinction covered in Understand route status, applied here to feed a Custom Router's own buttons instead of the Route Status view. The options are listed Virtual, Request, Live, matching the link-type picker in Routing → Execute. The default, Auto (Virtual → Request → Live), prefers a virtual link, falls back to a pending request, then the physical live state: the same order Routing → Execute uses to resolve Auto.

Levels and tally channels#

A Custom Router's Levels setting (Video, Audio, Data) restricts which member ports of a multi-port bundle participate when a bundle-level source or destination is taken: it doesn't introduce a separate routing concept, it filters the same ports the rest of Buttons already knows about.
Tally channel selection reuses the same tally channel system used elsewhere in Buttons: the router's Red and Green Tally Channel settings choose which channels count as each color for buttons inside it, so those buttons can react to the same tally state your Tally configuration produces.

Nesting and using more than one Custom Router#

A Custom Router can be nested inside another Custom Router. Anything placed inside the inner one belongs to the inner router's own context, not the outer one: the nearest enclosing Custom Router always wins.
A position can also have more than one independent Custom Router side by side, for example, one scoped to video routing and a separate one for audio routing. Each keeps its own selection, levels, tally, and project state completely separate from the others, so building more than one on the same position is a supported way to keep unrelated routing tasks from interfering with each other.

Where to go next#

  • Build a focused routing panel with Custom Router with a Take button and source and destination controls.
  • Find every button type available in the Routing Presets panel.
  • Compare with Router Section for a generated panel instead.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful