Skip to main content

Channel Status

Channel Status is Lumio's always-on awareness of whether each of your connected streaming platforms is live right now. It drives the live-indicators on your dashboard, gates which background workers are running (most notably the Spotify integration), and keeps API usage down when you're offline.

This guide explains how the live detection works, what the dashboard shows you, and the one case where you might need to intervene manually (Spotify).

Where to find it

The primary surface is the live channel card grid on the main dashboard (Dashboard > Overview). Each connected platform (Twitch, YouTube, Kick, Trovo) gets its own card with avatar, channel name, a Live badge when online, and — while live — viewer count, stream title, and game/category. A tiny pulsing red dot on the avatar also indicates live status.

Offline platforms still show a card (so you can click through to the channel) but without the red dot, Live badge, or stream-info section.

Quick start

Nothing to set up. Once you've connected a platform via Dashboard > Connections, Lumio automatically tracks its live status:

  1. Go live on the platform as usual.
  2. Within seconds (Twitch) or up to a minute (YouTube / Kick / Trovo), the dashboard card flips to Live and starts showing viewer count.
  3. When you end the stream, the card flips back to offline.

The only manual control is the Spotify Connect button on Dashboard > Music (see below), which is only relevant if you want Spotify active before you actually go live.

How live detection works

Lumio uses the most efficient signal available on each platform:

PlatformDetection methodTypical latency
TwitchEventSub webhook (stream.online / stream.offline)Seconds
YouTubePollingUp to ~60 seconds
KickPollingUp to ~60 seconds
TrovoPollingUp to ~60 seconds

Twitch is nearly instant because it pushes events to Lumio the moment you go live. The other three don't offer a reliable push mechanism, so Lumio polls their APIs on a background cadence. Going offline is detected the same way.

What changes the indicator

The dashboard card switches to Live when the backend receives:

  • A Twitch EventSub stream.online event, or
  • A polling response showing the channel as broadcasting.

It switches back to offline when the platform stops reporting the stream as live (EventSub stream.offline for Twitch, or the poller sees the stream ended).

What the UI polls

The dashboard itself polls the Lumio API on a 30-second cadence for the latest cached status (/api/status/channel). It also listens for WebSocket events (channel:online, channel:offline, channel:status_update) so changes appear faster than the 30-second tick when the WebSocket is connected. When the browser tab becomes visible again (e.g. you alt-tab back), it fetches immediately — so switching windows and coming back always gives you a fresh read.

What you see while live

Per-platform, the Live card shows:

  • Channel avatar with a pulsing red dot indicator.
  • Channel name with a click-through link to the platform (Twitch, YouTube, Kick, or Trovo).
  • Live badge in red.
  • Viewer count (formatted compactly: 1.2K, 15.3K, 1.4M).
  • Stream title (truncated if long).
  • Category / game (if the platform provides it).

Not every platform reports every field — for example, Trovo may not expose viewer count in all cases, and category may be blank if you haven't set one. The card gracefully hides fields that aren't present.

Why it matters: resource-aware workers

Channel status isn't just cosmetic — several Lumio workers key off it:

  • Spotify worker — Only runs when at least one channel is live. This saves API calls against Spotify and avoids writing track-change events to the database when nobody is watching.
  • Event logging — Logged activity (followers, subs, raids, etc.) is weighted to the "you're actually streaming" window for more useful analytics.
  • Platform API usage — Several enrichment paths (profile lookups, chat polling enhancements) throttle down when you're offline.

This is why you may notice Spotify "Now Playing" not updating the moment you open the dashboard — it waits until you're live. The Connect button below is the escape hatch.

Spotify: manual connect

If you need Spotify running before you actually go live — for pre-stream testing, a countdown scene that shows the upcoming song, or overlay development — use the Connect button.

  1. Open Dashboard > Music (or the Popout > Music page).
  2. Click Connect. The Spotify worker starts immediately.
  3. The button flips to show the remaining time (a countdown).
  4. The worker runs for up to 30 minutes.
  5. If you go live during that window, the worker stays up automatically beyond the 30 minutes, following your real live status.
  6. If you don't go live, the worker stops when the countdown hits zero.

You can also Disconnect manually to stop it early.

Manual connect state is synced across browser tabs via BroadcastChannel — start it in one tab and the button in another tab updates immediately without a reload.

Permissions

Live status itself is non-sensitive — anyone with dashboard access sees the Live indicators on their own account's channels. The Spotify manual connect is the one gated action here.

CapabilityPermission
View channel status on the dashboardoverview:read (implicit via dashboard access)
See Spotify manual connect statusmusic:read
Start / stop Spotify manual connectmusic:control (backend returns 403 otherwise)

If a 403 is returned for the Spotify worker toggle, the UI surfaces a toast — you likely don't have music:control on your role. Ask an admin to grant it, or use a role that includes it.

Tips & best practices

  • Don't poll the dashboard yourself. The built-in 30-second polling + WebSocket push is enough. Reloading the page doesn't make detection faster.
  • Trust EventSub for Twitch. If Twitch says you're offline but you just went live, give it ~10 seconds. If it still doesn't flip, check Dashboard > Connections for token issues.
  • Use manual Spotify connect sparingly. It's fine for testing, but leaving it on burns API quota against Spotify. It auto-stops after 30 minutes on purpose.
  • Bookmark the Music popout. If you use Spotify manual connect routinely (e.g. to warm it up before every stream), the popout URL is shorter to hit than clicking through the dashboard.
  • Keep tokens healthy. Status detection depends on valid platform OAuth tokens. A failed token refresh = stale status. Token Refresh runs automatically, but a "connection needs attention" notification in the bell is a sign to reconnect.

Troubleshooting

I'm live but the dashboard still says offline.

  • Twitch: wait 10-15 seconds. If still offline, check Dashboard > Connections — your Twitch connection may have lost permissions.
  • YouTube / Kick / Trovo: wait up to 60 seconds for the next poll. Refresh the page or alt-tab away and back to force an immediate refetch.

I ended my stream but the dashboard still says live.

  • Same as above — Twitch should clear in seconds; the others take up to a minute.
  • If it persists for more than a couple of minutes, refresh the browser tab.

Viewer count shows 0 (or is missing).

  • Some platforms report 0 on stream start before viewers arrive.
  • Trovo and Kick occasionally omit the count; the UI simply hides the field in that case.

Spotify shows nothing even though I'm live.

  • Check that Spotify is connected in Dashboard > Connections.
  • If you're live but there's no currently-playing track on your Spotify account, there's nothing to show.
  • If you recently reconnected Spotify, wait 30 seconds for the worker to pick up the new token.

Manual connect countdown is showing "0:00".

  • Expired. Click Connect again to start a new 30-minute window.

"Connect" button returns a permission error.

  • Your role lacks music:control. Ask an admin (or whoever manages roles on the account) to grant it.
  • Connections — connecting Twitch/YouTube/Kick/Trovo/Spotify and handling token refresh errors.
  • Music — full Spotify feature overview including the Now Playing widget and overlay integration.
  • Events — the stream-time events that get logged while you're live.
  • Notifications — where connection/token issues surface if detection stops working.