Connections
The Connections page is where you link Lumio to the outside world: the streaming platforms it reads chat and events from, the local tools it controls on your stream machine (OBS, Streamer.bot), and external services it ingests tips from (StreamElements). This guide walks through every panel on the page and the sub-pages it links to.
Where to find it
- Sidebar: Manage → Connections
- URL:
/dashboard/connections - Required permission to open:
connections:read
The page header shows the title Connections with the description "Connect your streaming platforms to Lumio." and two buttons in the top-right:
- Bot Connections — opens the bot-connection sub-page.
- App Credentials — opens the credentials manager (only visible if you have
connections:edit).
Quick start
- Click App Credentials in the top-right.
- For each platform you want to use (Twitch, YouTube, Kick, Trovo, Spotify), click Set Up and follow the three-step wizard — it links you to the platform's developer console, shows the exact callback URL and required scopes to paste in, and ends with the Client ID / Client Secret fields. Click Save Credentials.
- Go back to Connections via the Back to Connections link.
- On the platform card, click Connect. You are redirected to the platform's OAuth consent screen.
- Authorize the requested scopes. You are redirected back to Lumio and the card flips to Connected with a green badge.
Repeat steps 4–5 per platform. You only need to enter credentials once per platform per account — connections and disconnections reuse them.
Channel connections
Each card in the main grid represents one streaming platform:
| Platform | Typical use | Default scopes |
|---|---|---|
| Twitch | Chat, events, moderation, rewards | 27 scopes |
| YouTube | Chat, superchats, members | 2 scopes |
| Kick | Chat, moderation | 6 scopes |
| Trovo | Chat (public API, no OAuth for some) | 2 scopes |
| Spotify | Now playing, playback, queue, playlists | 7 scopes |
Spotify sits in the same grid and works the same way — you set up its app credentials, connect it, and the Music page then has something to talk to.
Card states
A card can be in one of five visible states:
- Unavailable (greyed out, outline badge) — the provider is disabled system-wide by Lumio admins. Nothing you can do.
- Not connected — no credentials configured yet. Card shows "Set up app credentials to connect this platform." with a Set Up button that deep-links to the credentials page.
- Credentials configured, not connected — card shows "Credentials configured. Click Connect to authorize." with a Connect button.
- Connected (green badge) — card shows the channel name, platform channel ID, the first three OAuth scopes (click the scope row or the
+Nbadge to see the rest), connected date, last-updated date, and token expiry. Buttons: Reconnect and Disconnect. - Reconnect required (amber badge) — the connection still exists, but Lumio's automatic token refresh failed terminally (the platform rejected the stored grant), so the connection can no longer be used. The card shows an amber hint explaining the refresh failed and highlights the Reconnect button. This is the only expiry-related error state — a lapsed access-token date on its own is never an error (see Token expiry).
The Connect, Reconnect and Disconnect buttons only appear if you have connections:edit.
Connecting
- Click Connect on the card.
- The button spins while Lumio fetches the OAuth authorization URL from the backend.
- You are redirected to the platform's authorize screen. Review the scopes and click Allow.
- The platform redirects you back to
/dashboard/connections?connected={platform}. - A green banner "Successfully connected to {platform}!" appears above the grid.
Reconnecting
Use Reconnect if tokens stop working (e.g. you revoked them in Twitch settings). It re-runs the OAuth flow with the same credentials and overwrites the stored tokens.
Disconnecting
- Click Disconnect on a connected card.
- A confirmation dialog appears: "Are you sure you want to disconnect {platform}? This will revoke the connection but keep your app credentials."
- Click Disconnect to confirm, or Cancel to abort.
Disconnecting clears the OAuth token from Lumio and stops all chat/event ingestion for that platform. Your App Credentials are kept so reconnecting later is one click.
Viewing all scopes
On a connected card, the scopes row shows the first 3 scopes. Click anywhere on that row (or the +N badge) to open the Scopes dialog and see the full list. Scopes are static — to change them you must disconnect and reconnect.
Token expiry
A card shows "Token expires {date} (auto-refresh)" when an access token has an expiration. This line is always informational — never an error. Access tokens are short-lived (Google's, for example, last one hour) and Lumio's background token-refresh worker silently renews them, so a past or imminent expiry date on its own means nothing is wrong and you do not need to act on it.
Refresh only fails permanently when the platform rejects the stored grant itself (the refresh token was revoked or expired). When that happens the card switches to the Reconnect required state (amber badge) — that, not the expiry date, is the signal to click Reconnect.
App credentials
The App Credentials sub-page (/dashboard/connections/credentials) stores the Client ID and Client Secret pairs that let Lumio speak to each platform's API on your behalf. These are separate from the credentials used to log you in to Lumio — they are per-account and encrypted at rest (AES-256-GCM).
Every platform gets a card showing Configured (with a Client ID: … hint made of the last characters of the ID) or "No credentials configured yet.", plus an Unavailable badge if Lumio has that platform switched off system-wide.
For each platform you can:
- Click Set Up (or Update when credentials already exist) to run the guided three-step wizard. Step 1 links you to that platform's developer console and lists what to fill in, step 2 shows the exact callback URL and required scopes to register, and step 3 takes the Client ID and Client Secret. Finish with Save Credentials.
- Click the delete icon to remove the credentials. A confirmation dialog warns that this also disconnects the platform.
You need connections:edit to reach this sub-page from the Connections header. Setting up credentials is a one-time task per account.
Integrations
Integrations configure external tools that Lumio talks to. Add one by clicking Add Integration in the Integrations section, then pick the platform: Streamer.bot, Shopify, or OBS WebSocket. Every integration also gets a free-text Label so you can tell several of them apart.
Each saved integration is shown as a card with its label, platform, host and port, an Enabled / Disabled status badge, and two buttons: Test and Remove.
The Integrations section only appears if the Integrations feature is part of your plan.
Streamer.bot
Connects to a running Streamer.bot instance so automations in Lumio can trigger actions in Streamer.bot.
| Field | Default | Notes |
|---|---|---|
| Label | Streamer.bot | Free text; helps you identify the integration |
| Host | 127.0.0.1 | Hostname or IP |
| Port | 8080 | Streamer.bot WebSocket port |
| Endpoint | / | Usually / |
| Password | (optional) | Only if you enabled auth in Streamer.bot |
Click Save to add, or Test on a saved integration to verify Lumio can reach it. The result is shown inline as a success or an error message.
Shopify
Connects a Shopify store so store events can drive automations and alerts. It uses the same host / port / endpoint / password fields as Streamer.bot.
OBS WebSocket
Connects to OBS via the built-in obs-websocket plugin. Once configured, Lumio can switch scenes, toggle sources, and control media from automations. Picking OBS WebSocket in the Add Integration dialog swaps the host/port/endpoint fields for OBS-specific ones:
| Field | Default | Notes |
|---|---|---|
| Port | 4455 | OBS WebSocket server port |
| Password | (optional) | Set in OBS under Tools → obs-websocket Settings |
| Enable remote access | off | Opt-in for remote OBS instances |
| Host / IP Address | — | Only shown when remote access is enabled |
Enabling remote access requires a public IP and port forwarding in your router/firewall. Only recommended for advanced setups. For local OBS on the same machine, leave remote access off.
Click Save to store. Afterwards Test on the integration card verifies the WebSocket handshake and reports the OBS version (for example "Connected to OBS 30.1.2 successfully!").
Day-to-day OBS remote control (scenes, stream/recording state) lives on its own OBS page in the sidebar, not here.
Testing or removing an integration
- Click Test to re-verify connectivity. The result appears inline on the card as a green success or a red error message.
- Click Remove to delete the integration. Automations that referenced it will fail gracefully.
The Enabled / Disabled label on a card is a status badge, not a switch — to stop using an integration, remove it.
StreamElements tokens
Lumio can ingest tip events from StreamElements. The section only appears if the StreamElements feature is part of your plan. Click Add Token under the StreamElements section to open the Add StreamElements Token dialog:
- Pick a Platform — Twitch, YouTube, Kick, or Trovo. This tells Lumio which channel the tips belong to.
- Paste your JWT Token from your StreamElements dashboard.
- Optionally set a Label (e.g.
Main Channel) to identify the token later. - Click Save.
The token is stored encrypted. Lumio stores a short hint (displayed as "Token: …xxxx") so you can recognise it. You can add multiple tokens across different platforms. Click Remove on a token row to revoke it — a confirmation dialog appears because revoking stops tip ingestion immediately.
Bot connections
Click Bot Connections in the page header to open /dashboard/connections/bot. This sub-page configures custom chat-bot identities so your bot posts under a separate account (e.g. YourBot instead of YourChannel).
Each platform card shows a Connected / Not Connected badge and, when connected, whether it is running as:
- Global Bot (default) — a Lumio-hosted bot. No setup required.
- Custom Bot — click Connect Bot to run OAuth under the bot identity you want to use.
A platform whose bot connections are switched off system-wide is greyed out with a "This platform is currently unavailable for bot connections." note.
Disconnecting a custom bot falls back to the global bot automatically. Discord has no card here at all — Discord bots are configured by Lumio admins and cannot be customised per account.
A Back to Connections link at the top of the page returns you to the main Connections page.
Permissions
| Action | Required permission |
|---|---|
| Open the Connections page | connections:read |
| Connect / reconnect / disconnect | connections:edit (button visibility); connections:create / connections:delete on the API |
| Manage App Credentials | connections:edit |
| See integrations | settings:read |
| Add, test or remove an integration | settings:edit |
| See StreamElements tokens | se-tokens:read |
| Add a StreamElements token | se-tokens:create |
| Remove a StreamElements token | se-tokens:delete |
| Manage Bot Connections | bot-connections:read, bot-connections:create, bot-connections:delete |
If a button is missing, you lack the corresponding permission. Ask an account owner to adjust your role.
Tips and best practices
- Connect every platform you stream on, even the secondary ones — most overlays and automations need the channel to be connected to render user emotes or resolve usernames.
- Do not share credentials across accounts. App Credentials are per-account; if you manage several brands, register a separate OAuth application per brand.
- Review connected scopes periodically. If Lumio adds new features that need extra scopes, the UI will ask you to reconnect. Reconnecting never changes which channel is linked.
- Test integrations before going live. Click Test on Streamer.bot and OBS integrations right before a stream — catching a misconfigured port five minutes before going live is much easier than mid-stream.
- Use labels on integrations and StreamElements tokens so you can tell them apart on multi-PC setups.
Troubleshooting
OAuth redirect lands on an error page. The most common causes are (1) the Client ID or Client Secret in App Credentials is wrong, (2) the redirect URI in your OAuth app does not exactly match what Lumio expects, (3) the platform is rate-limiting repeated attempts. Re-enter credentials and wait 60 seconds before retrying.
Card says Connected but no events arrive. Scopes may be missing for the features you use. Disconnect and reconnect — Lumio always requests the current scope set. Also check that the platform connection is not disabled account-wide (Unavailable badge).
Card shows "Reconnect required" (amber badge). Automatic token refresh has failed permanently — the platform rejected the stored grant (revoked or expired refresh token). Click Reconnect to re-run OAuth. If it keeps failing, your Client Secret is probably invalid — re-enter it under App Credentials. (A token-expiry date on a still-Connected card is not an error — it auto-refreshes; only the amber Reconnect required state means action is needed.)
Streamer.bot Test succeeds but actions do not fire. Confirm the automation in Lumio is actually targeting that integration (the dropdown on the automation node) and that Streamer.bot has an action registered for the payload Lumio sends.
OBS connection works locally but not remotely. Remote OBS needs a public IP and port forwarding. The Test error message will tell you whether it is a timeout (firewall) or an auth failure (wrong password).
StreamElements tips stop showing up. The JWT may have been revoked or rotated. Open your StreamElements account, copy a new JWT, and re-add it. Remove the old token once the new one is verified.
Related
- Dashboard — see events arrive once connections are live.
- Members — give teammates access to manage connections.
- Bot Control — once connections are live, manage the bots themselves.
- Token refresh — how Lumio keeps OAuth tokens fresh.