What this step does

Step 4 has two jobs:

  1. YouTube authentication — optional, but required if you want the app to automatically create and manage a YouTube live broadcast.
  2. Publishing the match — send the match data to OBS and optionally start the stream.

Card 1 — YouTube Authentication

Signing in

Click Sign in with Google to begin the OAuth flow. You will be redirected to Google’s sign-in page and then returned to the app. A confirmation banner will show your YouTube channel name once authenticated.

Tip: Authentication persists across sessions via a server-side session. You will not need to sign in again unless you explicitly sign out or the session expires.

Signing out

Click Sign out to clear your YouTube session. Any match you publish after signing out will not automatically create a YouTube broadcast.

YouTube is optional

You can publish and go live without signing in to YouTube. In that case:

  • No YouTube broadcast is created
  • The stream key must be set directly in OBS
  • The ▶ Watch link will not appear in the Live Dashboard

Card 2 — Publish the Match

Match summary

A read-only list confirms all the data you have entered:

  • Rig and table names
  • Player names, event, format
  • Whether live scoring is enabled

Review this before publishing.

Publish options

Three buttons let you choose how to publish:

Stage — Don’t Start Stream

Sends the match configuration to OBS (player names, event, scenes, stream key) without switching scenes or starting the stream. Use this to:

  • Pre-load overlay content before the match starts
  • Set up OBS while still showing an intermission or holding screen
  • Test that the overlay receives data correctly

No YouTube broadcast is created when staging.

Start — Match

Sends the full match payload and tells OBS to switch to the match scene. This:

  1. Switches OBS to the configured match scene
  2. Starts the OBS stream (via OBS WebSocket)
  3. If authenticated, creates a YouTube broadcast and injects the stream key automatically
  4. If live scoring is configured, starts the PoolStat poll

Start — Intermission

Same as Start — Match but switches OBS to the intermission scene instead. Available only if an intermission scene is configured for the selected table.

Use this when you want to start streaming but show a holding screen before the match begins.

Status feedback

After publishing, the button area is replaced with a status message:

Status Meaning
✅ Staged — stream not started. Config sent to OBS. Stream not started.
✅ Live — OBS switching to Match scene. OBS scene switched and stream started.
✅ Live — OBS switching to Intermission scene. Intermission scene active.
• Live scoring active. PoolStat polling has started.
▶ Watch (link) YouTube broadcast URL — click to open in a new tab.
❌ [error message] Something failed — buttons are re-enabled for retry.

Note: If YouTube broadcast creation fails, the stream will still start. A warning toast is shown and you can manually set the stream key in OBS if needed.

After publishing

Once published you can:

  • Click View Live Matches → to go to the Live Dashboard (Step 5)
  • Click Setup New Match to clear all match data and start a new wizard from Step 1

← Step 3 — Match Info     Step 5 — Go Live →