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.
While Events opens on the dashboard or in a popout, its header, the summary bar with the Filter button at its end and the search bar keep their places - the summary bar holds a placeholder pill for each kind, and Filter stays at its end when the numbers arrive - and the feed shows loading rows in the timeline's shape: a time-group heading, then rows with a round avatar, a sentence line and the time on the right. The loading rows never show a highlight card, because nobody knows yet which event will be a big moment. A hidden header or footer stays hidden during loading. The Recent activity card on the Dashboard home loads with the same rows. Live events that arrive while the first history read is pending remain in the feed when that read finishes.
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:
- Header - the Events title, a viewer-count pill per live platform, and (on the Events page) the popout, streamer-mode and notification buttons. This row shows only when it holds something: in a popout under its window bar and in a Cockpit tile it appears only while viewer counts (or a reconnect warning) show, so the head is a single row otherwise.
- Summary bar - under the header, one pill per kind of event in the running stream: All, Follows 12, Subs 7, Bits & KICKs 1,350, Raids 2, Donations 45 €. A click shows only that kind; All (or a second click) shows everything again. The numbers count the loaded events since the latest go-live (or every loaded event when no go-live is loaded); a kind with nothing in it has no pill. Donations show a total when they all share one currency and a count otherwise. Streamer mode masks nothing in this bar: the donation total, the Bits & KICKs sum and the counts stay visible, as donation amounts do in the rows. The bar ends, set apart at its right, with the Shared Chat chip (with Twitch connected, see below) and the Filter button. In a narrow window (such as the 420 px OBS dock) the pills show icon and number only and scroll sideways, the Shared Chat chip shows only its icon, and the chip and Filter stay pinned at the right. When the pills do not fit, a ‹ or › arrow at the side that hides more pills (with a fade on that edge) scrolls them by about one row; the mouse wheel over the pills scrolls them sideways too, and a pill that takes keyboard focus scrolls into view.
- Filter button - at the summary bar's right end; switches between the event list and the fine filters (platforms, stores and single event types, see Filtering). It is tinted while the filters are open; the kind pills hide then, and the button stays in the same place, so a second click returns to the list.
- 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. The General tab also carries a Region & language block (language, time zone, date format, and time format) - a second entry point to the same global user preference as Dashboard → Settings, marked as applying everywhere you sign in; it is read-only in a token-authenticated popout. Both surfaces load older events automatically as you scroll (infinite scroll) - there is no page-by-page counter.
Density in the display settings (group Text & emotes, after font size and emote size) chooses Compact or Full; the default is Full. Full is the timeline as described on this page. Compact makes the whole event list slightly smaller - rows, highlight cards, follow waves, time-group headings and chips - and tightens the space between and inside the rows and the avatar. No information is left out: sentence, names, type icon and chip, platform badge, amount, message, sub-lines (order items, gift recipients, poll options), the TEST badge, song buttons and times all stay. The list loads in the chosen density, so it does not jump when the events arrive. Density belongs to the events settings of the surface: the events page and popout share it, the Cockpit's events tile has its own, and Events presets and Cockpit presets carry it. The start page's Activity list has no events settings and always shows the full rows.
Show messages expanded, right after Density, is on by default. On, every message (sub, resub, cheer, pin, raid and reward messages) and every detail line of a row (a hype train's points and top contributors, a reward's title and cost, a stream title or category) shows in full and wraps, with no ▾. Off, each of them is one line; a longer one ends in ▾, and a click, a tap, or Enter on it unfolds that one row. Like Density, the switch belongs to the events settings of the surface (events page and popout together, the Cockpit's events tile on its own) and Events presets and Cockpit presets carry it; the Activity list shows messages expanded.
Header in the display settings shows or hides the header together with the summary bar. Search bar shows or hides the bottom bar; the connection notice (connection lost, reconnecting, or not authorized) shows at the bottom edge of the list either way.
The feed keeps loading stored events beyond the first 30 days. While older events may remain, the footer says how many are loaded and offers Load older events; the number counts stored events only (test events are not counted) and is not a total of everything stored. All events loaded appears only when the history has ended. A sparse period can produce an empty read while older events still exist, so the feed continues through it. If the first read or an older-page read fails, it shows an error with Try again; already loaded events stay visible.
The timeline
The feed is a calm list grouped by time: Now, 5 minutes ago, 15 minutes ago, 30 minutes ago, 1 hour ago, 2 hours ago … and the date for older events. The headings move along on their own once a minute. A thin line runs through the avatars of a group.
Each row reads as a sentence: the large round avatar with the platform's logo as a small
badge on its corner, the event's glyph in its colour, the name in bold and what
happened ("SakuraVT resubscribed"). Under it sit detail chips such as
Tier 1 · 14 months for a resub, New for a first sub or new member, or Gift
for a received gift sub. The viewer's own text appears as a speech bubble. The amount
stands large on the right - cheered Bits, KICKs, a Super Chat or
tip, an order total, a raid's viewers - next to the time (21:42 with the date below, as set
in Timestamp). A row never says the same thing twice: a gift bundle's sentence carries
its count ("gifted 5 subs"), so no ×5 stands beside it, and a KICKs row's sentence names
the unit, so its amount is the bare number. Every kind of event keeps one fixed colour
in every theme and season, on every platform; platform colours appear only as the badge on the
avatar. A stream going live, going offline and its title or category update share one red on
Twitch, YouTube and Kick alike, and an ad break is always amber. Two families keep their
source's colour on purpose, since each comes from that one source: the Spotify actions wear
Spotify green and the 7TV emote changes wear 7TV's teal. A Discord boost is pink like a gift, a
copyright warning or block is rose like a ban, and a member leaving the Discord server, a lifted
copyright state stay neutral grey; a test event wears the tone of its real type. A first
chat and a watch streak look exactly as they do in the chat: the blue spark and the orange
flame, in the chat's own colours (a shade darker in the light theme, so they stay readable). Where
the data has no picture (a poll, a Shopify order, a stream going live), a rounded tile with
the event's glyph takes the avatar's place; a Spotify track shows its cover.
StreamElements tips show the sender's name and amount. A received YouTube gift
membership names the gifter when the event includes one.
Event badge in the display settings shows the kind of each event. A row whose sentence
already names it ("resubscribed", "pinned a message", "is no longer a moderator") gets
only the coloured glyph in front of the sentence - for a moderator or VIP change the role's
shield or diamond, struck through when the role is removed. A row with a title instead of a
sentence (a Spotify track, play or pause, a poll, a channel joining or leaving a Shared Chat)
also gets a label chip such as Track or Poll. A stream going live, going offline or
updated, an ad break and a cancelled raid get no chip: their title ("Stream Offline")
already names the kind. Where the glyph already fills the avatar's tile, it is not repeated
in front of the title. With the setting off, rows show neither glyph nor label; highlight
cards keep their heading.
The channel details of a stream going live and a stream update each start with a fixed icon:
a T for the stream title, a gamepad for the category, a tag for the tags and the languages
symbol for the broadcast language. An incoming raid shows the raider's title and category only,
each behind the same icon; it lists no language and no tags. Hovering the icon shows the field's
name, and a screen reader reads it. Tags appear as small chips that wrap; the language shows
its name in your language ("German"); Twitch's other reads Other, its asl reads
American Sign Language, and a code without a name shows in capitals (XX). A stream update shows the changed field only, a short
one as old → new. A field the event does not carry has no line, so older events show only
their title and category. The same icons appear on the Events page and popout, the Cockpit's
events tile, the start page's Activity list, the chat's event lines and the User Info
Card's Events tab.
A long title - a track, a playlist, a stream title - wraps onto more lines and is never cut: the glyph stays in front of its first word, the label chip follows its last word, and a very long word breaks. The artist line under a track wraps the same way, so every artist stays listed. Names are never shortened: a long name wraps at its spaces, and a long name without spaces breaks inside the word. The ⓘ that opens the User Info Card stays on the line of the name's last letter, so it never starts a line on its own; clicking the name opens the card too. The same holds for recipients, the moderator of a role change, pin persons, Shared Chat channel names and the channel chip of a partner event. Every other line can be read in full as well (see Show messages expanded above). A message with no visible text (only spaces) shows no speech bubble; a cheer that is only cheermotes shows the cheermote images. A message - the viewer's own text and the text of a pinned message alike - shows the same emotes as the chat - Twitch emotes and the channel's and global 7TV, BTTV and FFZ emotes - on the events page, the popout (also with a popout token), the Cockpit tile, the Activity list and the User Info Card's Events tab.
Only the head of a row - the name and its sentence - shares its line with the buttons and the time on the right. The chips (tier, months, a pin's duration such as ∞ until stream end, a poll's state such as live), the message bubble, the detail lines, poll options and gift recipients run underneath across the whole width of the row. Gift recipients are set in the regular text colour and a little bolder than the commas between them, so every name stays readable on a highlighted card, in the light and dark theme. A pinned message reads like a chat line: badges, name, a colon and the text in one flow, and a long link wraps. In every size and density, nothing in a row runs under the buttons, amount and time on the right, and the list never scrolls sideways.
Links in event text - a pinned message, the viewer's own message of a sub, resub, cheer, raid,
reward, Super Chat or tip, a reward or stream title, a poll option - are recognised like links in
the chat, bare domains such as discord.gg/x included. They are blue and underlined, reachable
with Tab, and a click or Enter opens the External Link warning (Open link, copy, Cancel)
instead of the page; Esc closes it and returns focus to the link. A click on a link never folds
or unfolds the message around it. This holds on the events page, the popout (also in an OBS dock
and with a popout token), the Cockpit's events tile, the Activity list, the event lines in the
chat and the user card's Events tab. Links in deleted chat messages and in AutoMod-held
messages stay plain text.
A name stays whole. When the name and the amount do not both fit on the head line, the amount moves to its own line under the name first; only a name wider than the whole head line wraps, and a single word wider than that line breaks inside itself. The ⓘ after a name always stays on the line of its last letter. A follow wave lists its further names under the sentence, across the whole row, and a comma never starts a line.
When Lumio learns more about an event that is already in the list - a gift bundle's recipients arrive a moment after the bundle - the row updates in place, on the events page, the popout, the Cockpit tile, the Activity list and in the chat. It keeps its position and does not count as a new event.
The hype train names its level once: as a card it reads HYPE TRAIN · Level 3
reached with 4,200 points · SakuraVT +1 sub below it; its end reads Level 3 with
Total: 4,200 points.
Big moments become highlight cards in the event's colour, with a small heading
(RAID, GIFT SUB, NEW MOD) and a larger avatar and amount: an incoming raid, a gift
bundle of two or more subs, the hype train, a tip or Super Chat of 20 or more (in its
currency), a cheer of 1,000 Bits or more, a new moderator or VIP, and a Shared Chat start
or end. The card's amount sits at the top right beside its heading and name. In a narrow tile
(such as a 300 px Cockpit tile or the OBS dock) the amount moves to its own line under the
name, at the size of the name, so the name is always visible and the heading, the Bits
graphic and the amount never overlap. Highlight events in the display settings picks the
card's look - Border, Background or Both; Off shows big moments as normal rows.
Follow waves: two or more follows in a row, each within two minutes of the previous one, become one line - "dr_lurk and 3 others followed you", with the others' avatars and names below it. Every name still opens its User Info Card. Test follows bundle only among themselves: a wave is all real or all test, and a test wave carries the TEST badge once and its names open no User Info Card. Dashboard → Activity shows every follow as its own row.
New events slide in at the top. Under Animations: Reduced they only fade in, under Off they appear at once.
The Bits and KICKs amounts carry a small graphic in front of the number - the cheer's tier
graphic or the Kick gift's sticker - and cheermotes in a cheer's message (Cheer100)
render as graphic plus amount, as in the chat. A KICKs row also names the gift after the
sender (trainwreck_fan · Rage Quit). When avatars are switched off, the graphic takes the
avatar's spot only if the row has no other picture; without a graphic (a Kick gift Lumio
does not know yet, or an older event) the amount is text only. The graphics follow the
font-size slider everywhere; cheermotes in the speech bubble also follow the emote-size
slider. Twitch's larger cheermote image is loaded on high-resolution screens and for large
graphics, so they stay sharp. With animations off or your system's reduced-motion setting
on, the graphics show their still image, and where the platform sent no still image, the
plain text instead of an animation. Clicking the username - or the small ⓘ button
beside the sentence - opens the User Info Card (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, Spotify, or a
Shopify buyer).
The Dashboard home's Recent activity card uses the same rows in a compact size.
Twitch Shared Chat session events
The feed shows Shared Chat started, channel joined, channel left and
Shared Chat ended as Twitch events at the time they happened. Start and end
cards keep one avatar like every other card and list the channels downward, one per line,
each with its avatar, name, viewers, category and stream title. A start shows the host's
avatar with the crown in the top-left corner and reads Host {channel}, with the host's
viewers, category and stream title directly below, then one line per other channel. An end
shows the greyed Shared Chat symbol and lists the host with its crown and HOST tag among
the channels. The channel count is left out because the lines show it (an end likewise drops
the partner count when it lists every partner). Join and leave show the affected channel.
With events:userinfo, every channel name in these rows (the host, each channel
line, the joining or leaving channel) opens that channel's User Info Card; test events open
none. In a narrow window (the OBS dock, a phone) each partner's viewers,
category and stream title sit on their own line under the channel name and wrap instead of
being cut off. A join reconstructed from a later check says Detected
later. An unavailable category, viewer or follower value is simply omitted.
Use the Shared Chat chip at the end of the summary bar to see only these session events, or switch individual
types on and off in the existing Twitch filter group. They are on by
default and do not open a chat alert. The same session lines appear in the
chat's All and Twitch tabs, with start/end details collapsed there.
Twitch Shared Chat partner events
During a Twitch Shared Chat session, subs, resubs, gift
subs, upgrades, pay-it-forward, raids into a partner and Bits that happen in a partner
channel appear in the feed as well. Their name line starts with a channel chip: the
partner channel's channel-coloured avatar plus its name in a grey pill (a long name is
shortened with …; hover: "Happened in {channel}'s channel (Shared Chat)"), so they
never read as your own events. The chip shows in both the full and the compact feed, also
with the type badge or avatars switched off. The stream report's announcement list names
the partner channel next to its avatar the same way.
Partner events use the same filters as your own events of that type and do not count in your stream history. To hide all of them, switch off Events from Shared Chat partners in the feed's display settings (gear icon, on by default). The four Shared Chat session events always stay; the switch changes only what the feed shows.
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. Members who may reconnect
channels (connections:create) also get a red entry in the
connection notices under the header, with a
Reconnect {platform} button (e.g. Reconnect Twitch) that starts the platform's OAuth flow in place. Otherwise
reconnect from Account → Profile or Connections; see
Connections → Reconnect flags.
New permissions available
When Lumio starts requesting a scope that an existing connection was granted
without, the connection keeps working but some events cannot arrive until you
reconnect it. The Events page (and the Chat page) then shows an amber needs new permissions
entry in the connection notices under the header, one per affected platform - for example
"Reconnect Kick to receive KICKs and channel points." Its Grant {platform} permission button
starts the same OAuth flow as the Connections page; from a popout window it opens in
a new tab. Nothing needs to be disconnected first. The notice is only shown to members
who may reconnect channels (connections:create), and a connection that already needs
a reconnect (above) shows only that entry. See
Connections → Missing scopes.
Filtering
Click Filter at the end of the summary bar to open the fine filters (the summary bar narrows by kind; these toggles narrow by platform, store and single type):
- Platform - toggle Twitch, YouTube, Kick, Spotify, StreamElements,
Discord, Shopify, 7TV, Copyright, System. Twitch, YouTube, Kick, and Spotify
appear when the account has the corresponding channel connection;
StreamElements appears when a StreamElements token is stored; 7TV appears
when at least one Twitch, YouTube or Kick channel is connected. Discord,
Shopify, Copyright, and System do not depend on those connections. If Lumio cannot read a
connection or token status, its platform remains listed (including
StreamElements for a moderator without
se-tokens:read). Turning a platform off hides its events from the feed. - 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).
- System → Test - the switch for every test event, whatever its type. Off hides all test events, including test rows already on screen. On, a test event follows its own type and platform toggles like the real event: with only Follow on, a test follow shows and a test sub does not. Test does not affect real events. The System group is always listed, also without a connection for the test's platform.
- Store - with two or more Shopify stores connected, one toggle per store (by its label). Turning a store off hides its Shopify events. Events from before stores were labelled, and events of a store you have since disconnected, stay visible.
Filters persist locally, so they stick across reloads. The feed re-queries and the infinite-scroll list resets to match the filtered result set. Disconnecting a platform removes its controls from the filters, but does not erase saved filter choices or older events from the feed history. Those events remain visible when your saved filters and access settings allow them.
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 Card
Clicking a username opens the user's card as a full-page view over the Events page -
tinted in the platform's colours, with the page behind faintly visible. It is the same card
the chat opens (see User Info Card): the header shows the avatar,
name, badges, @username, platform ID and an Open Profile link; on a wide screen the
profile facts and moderation actions sit in a left column next to the tabs, on a narrow
screen and in the events popout everything stacks into one column. Its tabs:
- Messages - the user's stored chat history on that platform, including messages older than 30 days while retained. Links in these
messages are clickable and open through the
External Linkwarning (the same one the chat feed uses), so nothing leaves Lumio until you confirm; the warning appears on top of the card andEsccloses only the warning. This works on the Events page and in the events popout. - Mod Notes - private notes shared with your moderators (requires
chat:notes). - Moderation History - bans, timeouts, deletions and treatment changes for this user.
- Events - stored events for that user on the selected platform (follows, subs, cheers, KICKs,
redemptions), including pins they set as a moderator and raids they sent to your channel. Your own
outgoing raids do not show on your card. Cheers and KICKs show their graphic in front of the amount, and
the emotes in an event's message (for example a resub message's sub emotes, or the
cheermotes in a cheer) render as images. Links in a pin's text or an event's message open the card's
External Linkwarning, as in the Messages tab. A pin's text and an event's message show in full below the row's label and time, across the row's full width: they wrap, a long word without spaces breaks, and nothing ends in "…" or scrolls sideways. An event's message and a new pin's text sit in the same speech bubble as in the events timeline and the chat; a message with no visible text shows no bubble.
The Messages and Events tabs load older stored rows as you scroll, past 30 days until account start or the retention limit. All stored messages loaded and All stored events loaded mark the real end. An empty time window can still lead to older rows; Load older keeps searching. A failed read shows Try again rather than an empty-history message, and rows already loaded remain on screen.
The card also shows account-created date, the user's own follower count (Twitch only),
follow status and date, and the user's treatment status. Close it with X or Esc.
Requires events:userinfo (or chat:userinfo when opened from the chat view). The chat-only Highlight / Hide buttons do not appear here.
Test events
On the Dashboard home, Test Event opens a side sheet;
on a phone it fills the screen. The button appears with feature:events and
events:create. The same catalog is available in the
Test-Events popout, including as an OBS dock.
What it does
Sending broadcasts an event the server marks isTest: true. It appears live with a TEST badge on the Events page and popout, in
chat's inline event lines, in the Cockpit's Events and Chat modules, and in
Dashboard → Activity. The activity row also has a dashed border. The filter
System → Test on the Events page, popout and Cockpit Events module, and the
Test toggle in chat's event settings, hide every test event at once; Activity has
no type filter and always shows them. A test row
does not open a User Info Card or offer copyright report or recommendation.
Dashboard widget previews receive tests. The Show on stream checkbox is off by default and stays as you set it until the page reloads. When checked, OBS overlay and widget browser sources also receive the test; the built-in Alert Box, Event List and Spotify Now Playing mark it TEST. The confirmation toast then ends with also on stream; it names no number of receivers, because the dashboard cannot see which overlays and widgets are open in OBS. Again resends with the checkbox state used for that entry. An OBS source with ?preview=1 receives no events; use the dashboard editor or designer for a widget preview.
Each test event uses the same event shape and visible details as its real counterpart,
with test values for details such as tier, months, gift recipients, Shopify shop and
Spotify cover. A first sub test has no viewer message; choosing more than one month
sends a resub with its message.
Test follows within two minutes of each other bundle into a test follow wave
with one TEST badge.
Tests are not stored: a page reload removes them, and history loads or a
reconnect cannot bring them back. They do not increase the stored event total,
enter the summary bar or join a wave of real follows, or affect metrics, the live Now card
and milestones.
How to fire one
- Open Test Event from the dashboard header.
- Search the catalog or choose a platform tab; More contains other event sources. The catalog lists only sources that are connected, whose features are on and that your role may see — see which events are offered.
- Choose Send on a row to use its defaults, or expand the row to change values or pick random values before sending.
- To check the output in OBS, enable Show on stream before sending. Leave it off to check the dashboard, popouts and widget previews without putting the test on stream.
- Check the confirmation and Just sent list. Again repeats a test with its original stream setting. The sheet stays open for further sends.
Use this to:
- Verify a new overlay animation before going live.
- Check several overlay alerts without waiting for real audience activity.
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 Settings → Channel → Access → Popout 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 Card.
The window bar. The popout has a slim bar on top, like the Cockpit: the Lumio logo, Events, the channel switch ▾ (signed in with more than one channel only, see Popout window bar), the preset choice ▾ and the Settings cog (with the screen-lock indicator before it). The feed's own head follows under it without a second title. There is no Edit and no ↗. The bar belongs to the header: with Show Header off the window shows no bar at all, and the cog sits at the end of the search bar - or, with the search bar hidden too, floats in the bottom-right corner. That cog opens the same settings page. Preset ▾ lists your events presets and those shared from the channel; a click loads one like Load in the Presets area (it replaces this page's events settings and reloads the window), and the bar then names it - until then it says Own settings. Manage presets… opens the settings in their Presets area.
The settings page. The cog opens the events settings: edge to edge, the Cockpit's settings
page with only the areas Display, Presets (on plans with presets) and Window & account.
From 768 px window width the areas stand in a column on the left; in a narrower window you
first see the list, and ‹ Back returns to it. × or Esc closes. Display holds
every row the events cog had - font size, emote size, Density, Show messages expanded, header, search bar, platform icon,
timestamp, event badge, avatars, readable colors, Shared Chat partner events, the song
buttons, the counters, Animations and Highlight Events - and a line on top says that
it applies to the events page and the events popout, not to the events tile in the Cockpit.
Window & account holds theme, Streamer Mode, Animations in Lumio, region & language,
transfer, channel switch and sign-out. The events page /dashboard/events opens the same
settings page from its cog; its page head stays as it is.
The seasonal look also shows in this popout; append &season=off, &seasonStrength=subtle or &seasonMotion=off to the URL to change it for this popout only.
Animations for this view
Open the settings and choose Display → Animations → As global, Reduced, or Off. The choice affects this view on the dashboard and in its popout, and is stored per browser and per user/account pair. It can only reduce motion further than your global Animations in Lumio preference; an unavailable looser choice is disabled. For an OBS popout, append &motion=reduced or &motion=off (use ? if it is the first URL parameter) to apply a stricter choice to that URL without saving it. The global preference is read-only in a token popout.
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, store and type toggles behind the Filter button): 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 and use the Export / Import buttons under Window & account → Transfer settings (the same controls are in the dashboard and the popout). On plans with presets they also sit below the preset cards in the Presets area.
- 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 have a Presets area - named snapshots of your Events
display and filter settings, saved to your account so you can switch layouts and reuse
them across devices. In the popout, the preset ▾ in the window bar loads one directly.
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:reward_status, 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.
Twitch also reports twitch:mod_added, twitch:mod_removed,
twitch:vip_added and twitch:vip_removed. The feed labels them New Mod,
Mod removed, New VIP and VIP removed. In chat they are centred
event rows with the platform icon first when that setting is on: grants use
the role colour, while removals use a grey dashed treatment. The fallback VIP
symbol is a diamond. Each type has its own chat Events switch, on by default.
The row always says Moderator for a mod, including a Lead Moderator,
because Twitch does not report that distinction. These role rows exist only
for Twitch; Kick does not report its mod, VIP or OG commands to Lumio, and
YouTube reports bans only.
The three Twitch pin types are twitch:pin_added, twitch:pin_updated and
twitch:pin_removed. The feed calls them Message pinned, Pin duration
changed and Pin removed; the icon at the start identifies the platform.
Each type can be filtered independently and is on by default. A Pin removed
row also says how long the pin stood (or that it expired): in seconds or minutes
under an hour, in hours and minutes from one hour, and in days and hours from one
day, rounded down.
A goal row shows the goal text as its title and the translated goal type underneath, with the
progress as a chip in your language's number format (e.g. 13.284/14.000). Its badge reads
Goal Started when the goal is created and Goal Reached or Goal Missed when it ends
(Goal Ended if Twitch did not say). Progress updates in between are not listed. Stream Offline shows the stream's length
as a clock chip, e.g. 3h 12m.
In the Events feed, a Twitch poll or prediction row says each thing once: its chip names only the kind (Poll / Umfrage, Prediction / Vorhersage), and the pill on the right names only the state:
| Event | Pill (English / German) |
|---|---|
twitch:poll, twitch:prediction | live / läuft |
twitch:poll_end | ended / beendet, or Tie / Unentschieden when the top choices share the most votes |
twitch:poll_delete | deleted / gelöscht |
twitch:prediction_lock | locked / gesperrt |
twitch:prediction_end | resolved / aufgelöst, canceled / abgebrochen, or ended / beendet if Twitch sends no status |
The poll or prediction title and its option breakdown stay visible in the row. In the chat, a prediction's end badge reads Prediction Resolved (Vorhersage aufgelöst), Prediction Canceled (Vorhersage abgebrochen) or Prediction End (Vorhersage Ende) when Twitch sends no status.
A channel-point redemption shows the reward title, its cost in points and the viewer's input. When
you complete or refund a redemption in Twitch's reward queue, that status change is its own
twitch:reward_status row that reads completed or refunded; it is on by default and has its own
toggle under the Twitch heading of the type filter. Creating, editing or deleting a reward is not
listed in the feed — those changes reach widgets and extensions live only.
YouTube
youtube:subscribe, youtube:member, youtube:superchat, youtube:supersticker,
youtube:gift_membership, youtube:gift_membership_received, youtube:poll,
youtube:poll_end, youtube:stream_online, youtube:stream_offline.
A YouTube poll is one channel-event row titled with the poll question. Below it, each option shows its bar and its vote count, or its share of the votes when YouTube sends no count. An option's text is never cut off, at any width. The options of a poll or prediction - YouTube or Twitch - share one line when all of them fit with their whole text; otherwise, and always in a narrow window (the OBS dock, a phone), every option gets its own line with its whole text, bar and number. The row updates in place on every vote, and once the poll is closed the leading option gets the trophy. Polls are not stored, so the row is only there while the page is open.
Stream start and stream end render as channel events with a System badge, like
Twitch and Kick: Stream Online shows the broadcast's title underneath (YouTube
has no stream category, so none is shown), Stream Offline shows how long the stream
ran as a clock chip (e.g. 3h 12m) when the start time is known, otherwise the label only.
Kick
kick:follower, kick:subscribe, kick:resub, kick:gift, kick:kicks,
kick:reward, kick:reward_status, kick:stream_online, kick:stream_offline,
kick:stream_update.
kick:pin_added and kick:pin_removed use the same Message pinned and
Pin removed labels, with the Kick platform icon.
Pin rows have the ordinary event layout. The large head avatar belongs to the
person who pinned the message on Message pinned and to the sender on
Pin duration changed or Pin removed. The head name has no badges.
Below it, the message's sender appears with avatar, badges, text and the time
they wrote the message when known and different from the row's own time. The planned duration appears as a chip by
the type label. The moderator who pinned and a replaced sender show avatar
and name without badges. Names open the User Info Card when the viewer has
chat:userinfo; otherwise they are plain text. The feed row has no jump link
to the message.
Kick rows look like their Twitch counterparts: the viewer's name and avatar (click it
for the User Info Card), a months chip on a resub, the gift count and every recipient
on a gift (an anonymous gifter shows a ? avatar and no clickable name), a gold
KICKs row with the amount chip and the sender's message, and a channel-point
redemption with the reward title, its cost in points and the viewer's input. A
redemption's later status change is its own kick:reward_status row that reads
accepted or rejected. Stream start, stream end and stream-info changes render
as channel events with a System badge and the stream title or the changed fields
(see Stream updates), not as a user row. Every Kick type is on by default and has its own toggle under
the Kick heading of the type filter; a filter saved before a type existed turns
the new type on automatically. Kick events need the platform:kick plan feature.
Stream updates
A Stream Update row (twitch:stream_update, kick:stream_update) names only
the fields that actually changed, each with its own label:
| Label | Shows | Platforms |
|---|---|---|
| Title | The new title | Twitch, Kick |
| Category | old → new category (game); only the new one when the previous is unknown | Twitch, Kick |
| Language | old → new broadcast language, as a language name in your interface language (e.g. English → German); Twitch's other reads Other, asl American Sign Language, any code without a name shows in capitals | Twitch, Kick |
| Tags | The new tag list, comma-separated; — when every tag was removed | Twitch |
An unchanged field is never repeated. The title shows only the new value so the line stays readable. The same line appears on the Events page, in the chat inline event and on the Events tab of the User Info Card. Stream updates recorded before Lumio tracked language and tags show title and category only. On Twitch, a tag-only edit is reported together with the next title, category or language change — Twitch sends no update for tags alone (details: Stream update payloads).
Discord
discord:member_join, 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.
The System group's Test toggle is not an event a source sends: it switches every test event, whatever its type (see Filtering).
Every Shopify event shows a chip with its store's label (see Connections › Shopify), on the Events page, in the popout and in the start page's Activity, also with only one store and in Streamer Mode. Events from before a store had a label may have no chip.
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 Card on an event row |
Tips & best practices
- Check bot and automation settings before sending tests. They may post
[Test]messages or call webhooks even with Show on stream off. Enable it when you also want to check OBS overlays and widget alerts. - 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 Settings → Channel → Access → Popout 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 banner never shows while the page first connects: Chat, Events and Music (page, popout and Cockpit tile) keep it hidden for the first few seconds after opening, while the skeleton says the content is loading. It shows once the connection drops later, or when the first connect takes longer than that. A not authorized notice shows at once.
When it stays, 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 Settings → Channel → Roles.
Popout shows Invalid or expired token
The token was revoked, expired, or scoped too narrowly. Create a new one under Settings → Channel → Access → Popout 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.