Events
Events are the heartbeat of your stream. Every follow, sub, cheer, raid, channel-point redemption, super chat, tip, and Spotify track change flows through Lumio's event pipeline in real time. The Dashboard gives you a live feed of what is happening on every connected platform, and the same stream powers your overlays, automations, and bot reactions.
Lumio surfaces the same live feed in two places: the dedicated Events page in
the sidebar and the /popout/events window for OBS and secondary monitors. This
guide covers both, plus filtering and searching, sending test events, the
channel-status indicator, and every supported event type.
Where to find it
- Events page (
/dashboard/events): a dedicated, full-height feed in the sidebar under Stream → Events, right below Chat. This is the primary place to watch and filter events. It requires theevents:readpermission and thefeature:eventsplan feature. - Popout window (
/popout/events): a borderless copy of the same feed for a second monitor or OBS browser source.
Both surfaces share the same feed component, so filters and display settings you pick carry across them, and each updates automatically as long as the WebSocket is connected. The Dashboard home does not embed the live feed - it carries the Test Events panel and a compact stream-history overview (the last few sessions) instead.
Quick start
- Open Stream → Events in the sidebar for the full feed.
- Connect at least one streaming platform under Manage → Connections so events can flow in.
- Watch the feed. New events push in from the top.
- If nothing arrives, go to the Dashboard home and click the Test Events header to expand the panel and fire a fake follow, sub, or cheer to verify your overlays and automations.
- For a dedicated monitor, open the popout with the external-link icon (on the
Events page or the home panel) or load
/popout/eventsdirectly.
The event feed
Panel layout
Every surface shares the same controls:
- Tab toggle (
Events/Filters) - switches between the event list and the filter controls. - Search box - filter by any text in the event (username, message, reward title,
track name). Placeholder reads
Search events.... - Settings gear - on both the Events page and the popout, a gear opens the display settings (font size, emote size, timestamps, badges, avatars, viewer count, and the header/footer toggles) shared with the chat popout. The font-size slider scales the row text and its emotes together; the emote-size slider (0.5×–2.0×) tunes the emotes on top of that. Both surfaces load older events automatically as you scroll (infinite scroll) - there is no page-by-page counter.
Each row shows the platform icon, a colored type badge (e.g. Follow, Sub, Bits,
Raid), the username, the timestamp, and an event-specific payload (message,
amount, reward title, etc.). Clicking the username - or the small ⓘ button
beside it - opens the User Info Modal (see below). The username click target and
the button appear together and only where a real platform user backs the row (not on
channel-wide events like raids out or hype trains, the anonymous gifter, or Spotify).
The header also shows the total event count - "No events yet", "1 event total", or "42 events total" - and, while any channel is live, a small viewer-count pill per online platform.
Real-time updates
The dashboard maintains a WebSocket connection to the API and subscribes to the
events:\{account_id\} and chat:\{account_id\} channels. Events flow through Redis
pub/sub → API → WsServer → browser. When the connection drops, Lumio reconnects
with exponential backoff (1s, 2s, 4s … capped at 30s) and you will see the
connectionLost banner briefly.
Reconnect required
The per-platform stats row in the header (viewers / likes / views) doubles as a
health indicator. If a platform's OAuth connection expires and needs
reconnecting, that platform shows a reconnect-required error pill - and it
stays visible even while the channel is offline (a dead connection is exactly
when nothing is live, so the pill must not disappear). This is separate from the
transient connectionLost WebSocket notice above. Reconnect from
Account → Profile or Connections; see
Connections → Reconnect flags.
Filtering
Switch to the Filters tab to narrow the feed:
- Platform - toggle Twitch, YouTube, Kick, Spotify, StreamElements, Discord, Shopify, Copyright, System. Disabled platforms are hidden from the list.
- Type - fine-grained toggles for every event type that has appeared for your account (follower, subscribe, resub, cheer, raid, reward, poll, prediction, hype train, superchat, track, tip, and so on).
Filters persist locally, so they stick across reloads. The feed re-queries and the infinite-scroll list resets to match the filtered result set.
Search
The search box performs a substring match on the rendered row. Useful examples:
- Type a username to find every action by that viewer.
- Type a reward title to audit channel-point redemptions.
- Type
@yournameto find messages that tagged you.
User Info Modal
Clicking a username opens a modal with three tabs:
- Messages - the user's recent chat history on that platform.
- Mod Notes - private notes shared with your moderators (requires
chat:notes). - Events - every event that user has triggered (follows, subs, cheers, raids).
The modal also shows account-created date, follow status and date, platform ID, and
an Open Profile link out to the source platform. Requires events:userinfo (or
chat:userinfo when opened from the chat view).
Test Event panel
The Test Events panel lives on the Dashboard home and is collapsed by
default - click the Test Events header to expand it. It stays on the home page
(it is not part of the dedicated Events page) and only appears if your plan
includes the Overlays feature. Firing an event needs the events:create
permission - without it the buttons are there but the request is rejected.
What it does
Clicking any preset fires a real event through the pipeline with isTest: true
marked on the payload. It reaches every subscriber exactly like a real event:
- The Events page
/popout/eventswindow- Every overlay widget listening for that type
- Automations with matching triggers
- Bot reactions
Test events are not stored in the database - they are broadcast-only. Reload the page and they disappear.
How to fire one
- Expand the panel.
- Pick a Platform tab: Twitch, YouTube, Kick, Spotify, StreamElements, Discord, Copyright, or Shopify.
- (Optional) When you have more than one overlay, pick an Overlay target from the row of overlay buttons to preview the test event against a specific overlay.
- Click any event preset (e.g.
Follow,Sub,Bits 500,Raid 42). - Watch the event appear in the feed within a few hundred milliseconds.
Use this to:
- Verify a new overlay animation before going live.
- Smoke-test automations after editing a trigger.
- Confirm your bot reacts to
twitch:raidwithout waiting for a real raid.
Popout window
Open /popout/events (or click the external-link icon on the Events page) to get
a borderless, chrome-free event list suitable for a second
monitor, a stream deck browser, or a browser source for your producer view.
Two authentication modes:
- Cookie auth - if you are already logged in to Lumio in the same browser, the popout uses your session cookie automatically.
- Popout token - append
?token=YOUR_TOKENto the URL (e.g.https://lumio.vision/popout/events?token=lm_pop_…). Use this when loading the popout inside OBS, where cookies are unavailable. Create popout tokens under Manage → Tokens, see Tokens.
The popout respects the permissions granted to the token - a scoped token may hide moderation-only event types or the User Info Modal.
Where these settings apply
These settings apply to you on this account. Events settings are stored in your browser (there is no server copy) and keyed to the pair (you, the channel account you are viewing). This covers both the event-feed display options and the event-feed filter (the platform and type toggles under the Filters tab): switch to a second channel account, or sign in as a different team member of the same account, and they start from defaults — a filter you set while viewing one channel is not applied to another, and never leaks between team members. You set them once per browser context (the dashboard, and again in an OBS popout, which is separate). To reuse them elsewhere, move them deliberately with Export / Import or a preset.
Save and transfer your settings
Your events display options and event filters are stored in the browser, so they only exist where you set them - a fresh OBS browser source, a second computer, or a browser with cleared site data starts from defaults. Transfer settings lets you save them and re-import them anywhere, with no server involved.
Open the Settings cog, go to the Presets tab, and use the Export / Import buttons below the preset cards (the same controls are in the dashboard and the popout). On a plan without the presets feature there is no Presets tab, so Export / Import appears at the bottom of the General tab instead.
- Export - tick the sections you want (grouped Chat / Events / Music; your
Events sections are pre-selected here); sections with nothing saved are greyed
out. Take them with you by Copy code (a single
LS1…line to send over a messenger), Copy link (a share link that carries the same code and opens the events settings with the import preview directly when clicked on any signed-in device - both update live as you change the selection), Copy JSON, or Download a file. Very long links can be wrapped by some messengers - for those, use the code or the file. - Import - pick a file, drop it onto the dialog, or paste a file, an
LS1…code, or a share link into the one input (detected automatically). A preview shows what each section will replace before anything is written; import replaces a section wholesale, it does not merge. The page reloads afterwards.
Event filters record which platforms and event types you show. Newly added event types are enabled automatically on the next load, so an older file never silently hides a brand-new event type. Importing something from a newer version of Lumio, an incomplete code, or anything that is not a valid Lumio settings file or code, is refused with a clear message.
See the Multichat guide for the full list of what is and is not included in a settings file.
Presets
The Events settings panel also has a Presets tab - named snapshots of your Events
display and filter settings, saved to your account so you can switch layouts and reuse
them across devices. (Because the Events panel used to be a single column, the Presets
tab is what gives it a tab bar.) New preset opens an assistant to choose what to store
and name it; each saved preset card offers Load, share, overwrite, rename and delete,
with a quota line showing how many you have used. Share copies a code/link for the
preset and can make it visible to your whole account (with the presets:share permission);
presets teammates share into your account appear in a Shared from the channel section
you can load or save as your own. In a popout you can load a preset but not change or share
one. See the Setting Presets feature page for details.
Channel-status indicator
While a channel is live, the Events header shows a small pill per online platform with that platform's icon and viewer count (and, on YouTube, optional like and total-view counts you can switch on in the display settings). When every channel is offline, no pill is shown. The Dashboard home shows the same state as a LIVE badge on each channel card.
The Spotify worker and some event pollers only run while at least one channel is live (see the Channel Status guide). This saves API calls and avoids logging Spotify tracks when you are not streaming. If you need to bring the Spotify worker up manually, use the Connect button on the Music page - it starts the worker for 30 minutes.
Supported event types
Event type strings follow the platform:action convention (e.g. twitch:follower,
youtube:superchat). The full set currently recognised:
Twitch
twitch:follower, twitch:subscribe, twitch:resub, twitch:prime_upgrade,
twitch:gift_upgrade, twitch:gift, twitch:pay_it_forward, twitch:bits_badge,
twitch:cheer, twitch:raid, twitch:raid_out, twitch:unraid,
twitch:raid_done, twitch:reward, twitch:hype_train, twitch:hype_train_end,
twitch:poll, twitch:poll_end, twitch:poll_delete, twitch:prediction,
twitch:prediction_lock, twitch:prediction_end, twitch:goal,
twitch:goal_end, twitch:ad_break, twitch:stream_online,
twitch:stream_offline, twitch:stream_update.
YouTube
youtube:subscribe, youtube:member, youtube:superchat, youtube:supersticker,
youtube:gift_membership, youtube:gift_membership_received, youtube:poll,
youtube:poll_end.
Kick, Discord
discord:member_leave, discord:boost.
Spotify, StreamElements, Shopify, Copyright, System
spotify:track, spotify:play, spotify:pause, spotify:skip,
spotify:previous, spotify:seek, spotify:shuffle, spotify:repeat,
spotify:volume, spotify:device, spotify:queue_add,
spotify:playlist_create, spotify:playlist_edit, spotify:playlist_delete,
spotify:playlist_add, spotify:playlist_remove, streamelements:tip,
shopify:order, shopify:order_paid, shopify:product, copyright:warning,
copyright:blocked, copyright:clear, system:test.
Permissions
| Permission | What it unlocks |
|---|---|
events:read | View the Events page and the popout |
events:create | Fire a test event |
events:userinfo | Open the User Info Modal on an event row |
Tips & best practices
- Use test events liberally before going live. Fire
twitch:raid,twitch:cheer, andyoutube:superchatto make sure overlays, alerts, and automations all behave. - Pin a popout to your control monitor.
/popout/eventsin a narrow window makes a great always-visible activity feed next to your streaming software. - Generate a scoped token for browser sources under Manage → Tokens so a compromised stream PC does not expose your full Lumio session.
- Filter aggressively during raids. Hide
spotify:*andchat:*noise so you can focus on follow/sub/cheer incoming during the chaos.
Troubleshooting
No events arrive
- Check the channel-status pill - if all channels are offline, most platforms only push events for live streams.
- Open Manage → Connections and confirm every platform shows a green Connected badge. Re-authorize anything showing Not connected.
- Fire a test event. If it shows up but real events do not, the issue is with your platform connection or that platform's event subscription scopes.
- Reload the page to force a WebSocket reconnect.
Connection lost - reconnecting… banner persists
The browser cannot reach the API's /v1/ws endpoint. Causes: your auth token
expired (log out and back in), a network blocker (VPN, corporate firewall), or the
API is genuinely down. Check Account → Sessions to confirm your session is
still valid.
Test events do not fire
You need the events:create permission. Ask your account owner to grant it on
your role under Manage → Roles.
Popout shows Invalid or expired token
The token was revoked, expired, or scoped too narrowly. Create a new one under Manage → Tokens and update the URL in OBS / your second monitor.
Popout shows No authentication token provided
You loaded /popout/events outside a browser session. Append ?token=YOUR_TOKEN
to the URL, or load it inside the same browser where you are logged in.
Related
- Channel Status - how online/offline state gates workers and pollers.
- Overlays - how events drive on-stream widgets and alerts.
- Automation Templates - react to any event with the visual builder.
- Chat - chat messages and moderation share the same WebSocket channel.