Hype Train.
When a Hype Train rolls on your channel, OverlayThing can fire an on-screen alert, update live overlay labels, post bot messages in chat, and expose the train to your commands. It is off until you add the pieces you want.
Turn it on
Hype Train data needs the channel:read:hype_train permission. If you connected before this feature shipped, reconnect Twitch from Settings when prompted, then the train data starts flowing. Nothing here works until that scope is granted.
The overlay alert
Add a Hype Train alert widget to an overlay and it fires as the train starts and on each new level, with tokens for the level, total, progress, goal and conductor (see the token reference). Style it like any alert, and use variations for level-specific looks (a bigger splash at level 5, say).
Big channels do not want an alert on every level. Add variations for the levels you care about (criteria like level >= 50) and turn on Only play when a variation matches so the alert fires only at those levels. Small channels leave it off and celebrate every level. There is a separate Hype Train end alert widget for a closing summary; add it only if you want one.
Live overlay labels
The data label tokens {hype_train_active}, {hype_train_level}, {hype_train_progress}, {hype_train_goal}, {hype_train_total} and {hype_train_conductor} update live through the train, so you can show a running progress readout. They also fill the "Latest hype train" card on your Stream data page.
Bot chat alerts
The bot can post messages at chosen moments of a train. On the Chatbot Chat Alerts page, open Hype Train, flip it on, and add rules. Each rule is a trigger plus a message:
| Trigger | Fires |
|---|---|
| Train starts | Once, when the train begins. |
| Level milestone | Every Nth level (you set N), so one rule covers any train length. |
| Exact level | Once, when a specific level is reached. |
| Timer running low | Once, when the countdown drops below your chosen seconds. |
| Train ends | Once, with the final level and conductor. |
Messages use the same variables as commands, including $(hypetrain.level), $(hypetrain.conductor), $(hypetrain.total) and $(channel). A per-train cap stops a busy train from flooding chat, and "Send test" previews your wording without posting.
A train's goal and progress only exist while it is running, so $(hypetrain.goal) and $(hypetrain.progress) are empty in an end message. Level, total and conductor are always available.
Chat variables
Use the train in any command via $(hypetrain.active), $(hypetrain.level), $(hypetrain.progress), $(hypetrain.goal), $(hypetrain.total) and $(hypetrain.conductor). See the variable reference.