OverlayThing Docs
Home
Login / Request Access
01 Get started
Introduction Quickstart Add to your stream
02 Overlays
Overlays The editor Overlay URLs Alert queue Share, export & import
02.1 Widgets
Widgets overview Alerts Variations Hype Train Text to speech Goals Countdown & subathon Chat box Data labels Counter Text, image & video
03 Chatbot
Chatbot overview Getting started Commands Variables Conditionals Recipes API commands Integrations Command API & Copy-URL Chat moderation Bot account Bot settings
03.1 Chatbot modules
Modules overview Timers Counters Quotes Chat alerts Welcome Ad Breaks Giveaways Queue Song requests Loyalty
04 Flows
Overview Build a flow Triggers Conditions Actions Using data Examples
05 Channel Rewards
Channel Rewards
06 Remote Control
Overview Connect OBS Studio Connect Meld Studio Bindings & triggers Security & access
07 OBS Dock
Overview & setup Layouts & display Chat & Needs You Activity & media Stream info & controls
08 Companion
Companion overview Install & pair Feed, chat & channel Scripting The scripting API Permissions & security
09 Monetize
Tip page Tip settings Merch with Fourthwall
10 Build your own
Describe & Build Custom widgets Widget SDK
11 Your data
Dashboard Stream data Chat log Moderation
12 Account
Settings & connections Export your data Import from StreamElements
13 Reference
Label tokens Keyboard shortcuts FAQ Troubleshooting
Chatbot/Commands
Chatbot

Commands.

Commands are the heart of the bot. A viewer types a trigger, the bot replies with your text, with live data filled in. Custom commands, keyword triggers, permissions, cooldowns and aliases are all here.

Custom commands

A command is a trigger plus a response. Type the trigger in chat (with your prefix) and the bot posts the response. The response can mix your own words with variables that fill in live.

twitch chat command Live
ferret_king
BOTOverlayThingJoin the ferret_king Discord at discord.gg/ferret
commandexample
Trigger:  !discord
Response: Join the $(channel) Discord at discord.gg/yourcode

Variables make a command dynamic. A !uptime command whose response is $(channel) has been live for $(uptime) posts the real elapsed time every time.

Finding variables

Under the response box, the quick chips insert the common ones and the All variables button opens the full library, where every entry has examples you can insert whole (press the bulb on a row to see them). ⌘ / (Ctrl / on Windows) opens the library from the response box. Typing $( shows matching variables as you write: inside $(if …) it lists the conditions, after $(command your own commands, and after a variable that takes something, like $(countdown, ready-made shapes for it.

Build a command with AI

Do not want to wire up variables by hand? On the Commands page hit Build a command for me (or Build a keyword for me on the Keywords tab), describe what you want in plain language, and the AI writes a ready-to-use command for you: the trigger, a response with the right variables, a sensible permission level and cooldown. You get a preview to review and tweak before it saves.

build a commandprompts
a !hype command that hypes up the streamer
a command that suggests a random retro game to play
a keyword that posts the Discord link when someone says "discord"

The builder is honest about what it can do. If a request needs data the bot does not have, it tells you instead of quietly building a command that does nothing, and when a request needs live data it will wire up an API command for you where one fits.

Two different builders

This one builds chat commands. The Describe & Build under Build your own is a separate tool that generates overlay widgets.

Add and remove commands from chat

You and your mods can manage commands without leaving chat. These are built-in commands, available to you and your moderators by default.

CommandWhat it does
!addcommand <description>Describe a command in plain language and the bot builds it with the same AI as the dashboard button. Example: !addcommand find a cat fact api and give me a random cat fact. If your channel has AI turned off, !addcommand becomes a manual builder instead: !addcommand <name> <text> makes a plain command, e.g. !addcommand drops Gift 2+ subs for the skin. If that name already exists, the bot asks you to confirm | reply yes to overwrite it or no to keep it (reply to the bot's message, or @yourbot yes). Protected and default commands cannot be overwritten from chat.
!delcommand / !remcommand <name>Remove a command by name (the two are aliases). The bot works out which command you mean and deletes it, if you are allowed to.

Who can remove what

Deletion from chat is permission-gated so a mod cannot wipe commands above their station:

  • You (the broadcaster) and Lead Moderators can remove any command, including ones built from the dashboard.
  • Anyone else can remove a command only if they created it themselves, or if its creator ranked strictly below them. So a moderator can delete a command a subscriber made, but not one another moderator made.
  • A command with no recorded creator (older commands and seeded defaults) can be removed only by you or a Lead Moderator.
Lead Moderator

A Lead Moderator is Twitch's elevated moderator role. OverlayThing recognises it everywhere a mod check matters, so your most-trusted mods get the wider delete reach automatically.

Default commands

You start with a set of commands already made for you. They are normal commands you can edit, disable or delete.

CommandReplies withWho
!commandsA link to your public command list.Everyone
!uptimeHow long you have been live.Everyone
!followageHow long the viewer (or an @user) has followed.Everyone
!accountageHow old the viewer (or an @user) Twitch account is.Everyone
!watchtimeTracked watch time for the viewer (or an @user).Everyone
!titleYour current stream title.Everyone
!gameShows the category you are streaming. !game <name> switches it for anyone who meets the switch level (Moderator by default, configurable).Everyone
!soA shout-out to another streamer, plus a native Twitch shoutout.Mods
!socialsA pointer to your social links.Everyone
!discordYour Discord invite pointer.Everyone
!lurkA friendly lurk message.Everyone
!clipCreates a clip of the current stream and posts the link. Needs the clips:edit permission connected first (Chatbot > Commands > !clip > Connect). Has a 30s cooldown.Subs+
!markerDrops a stream marker at the current moment (optional note), so you can find highlights later.Mods
!pollStarts a native Twitch poll, for example !poll "Best game?" A;B;C 60.Mods
!quoteShows a random saved quote. Managed in the Quotes module, off until you enable it.Everyone
Restore defaults

Deleted one you wanted back? The Commands page has a Restore defaults button that puts back any missing default without touching commands you have customised.

Category switching

!game on its own replies with the current category. Give it a name, like !game Just Chatting, and anyone at or above the switch level can change the category from chat: an exact title switches immediately, a close match sends back a did-you-mean without switching anything, and a title that does not match at all gets a not-found reply. The switch level defaults to Moderator but is configurable in the command's editor, which also exposes all four replies, the view reply plus the switch, did-you-mean and not-found templates, each with $(game.name) and $(game.query) tokens for the matched category and the text the caller typed. No re-authorization is needed, it runs on the connection you already granted.

Keywords and match types

Most commands match the first word of a message (a prefix command). A keyword command instead watches the whole message and fires when it matches a pattern, no prefix needed. Each keyword has a match type:

Match typeFires when the message…Example
Exactis exactly the phrase, nothing more.Phrase hi bot matches only "hi bot".
Containshas the phrase anywhere in it, as whole words.Phrase discord matches "what is your discord?"
Startsbegins with the phrase, as a whole word.Phrase gg matches "gg everyone" but not "ggwp".
Regexmatches a regular-expression pattern.Pattern h[ae]llo matches "hello" or "hallo".

Whole words by default

Contains and Starts match whole words, so a keyword gg fires on "gg everyone" and "that was GG!" but not on "eggs" or "ggwp". If you really want a keyword to fire inside other words, turn on Match inside words on that keyword. Letters, digits and underscores count as word characters, in any language.

Priority

When two keywords could both match one message, the higher priority wins; on a tie, the older keyword wins. Leave it at 0 unless you need one keyword to beat another.

Regex, plainly

A regular expression is a mini pattern language for "does this text look like X". You do not need it for most keywords, contains and starts cover the common cases. When you do, a few pieces go a long way:

PieceMeansExample
|either / orlol|lmao|haha matches any of the three.
?the thing before it is optionalcolou?r matches "color" and "colour".
[ae]any one character in the bracketsgr[ae]y matches "gray" and "grey".
\ba word boundary (so you match whole words)\bgg\b matches "gg" but not "egg".
regex keyword trigger regex Live
Pattern/h[ae]llo/i
When the pattern matches, the keyword command fires its response, no prefix needed.
Keyword matching is case-insensitive

Exact, Contains and Starts ignore upper and lower case, and a long message is capped before a regex runs so a heavy pattern cannot bog the bot down. Regex triggers can opt into case-sensitive matching with the Case sensitive toggle, which matches the raw message exactly as typed.

Regex Assist

Do not want to write the pattern yourself? When a keyword is set to Matches regex, a Regex Assist button appears next to it. Click it, describe in plain language what you want to match, add an example message if you like, and it writes a regular expression for you. You get a live preview that highlights what the pattern would catch, so you can confirm it before you insert it.

describe itRegex Assist
any greeting like hi, hey, hello or yo
a message that is just a string of question marks
someone saying gg or good game as a whole word

The pattern it produces is valid for our chatbot and is checked before it lands in the box, so you never paste in something broken. You will also find the same Regex Assist helper in Flows, on the keyword trigger.

Edit what it gives you

Treat the result as a strong first draft. You can tweak the pattern by hand afterwards, and the live preview updates as you go so you can see the effect of each change.

What wins when several could match

One message fires at most one command. A prefix command (or one of its aliases) always beats a keyword. Only when no prefix command matches does the bot check keywords, highest priority first and oldest first on a tie, and the first match wins.

Permissions (user levels)

Each command has a who can use it level. A viewer must be at that level or higher to run it.

LevelWho can run it
EveryoneAnyone in chat.
FollowerAnyone following the channel, and every level above.
RegularAnyone with at least the hours of watch time you set on the Loyalty page (10 by default), and every level above. Needs Loyalty turned on.
SubscriberSubscribers, VIPs, mods and you.
VIPVIPs, mods and you.
ModeratorYour mods and you.
BroadcasterOnly you.

Higher levels always qualify: a subscriber can run a Follower command without the bot checking whether they follow. If a viewer below the level tries a command, the bot simply stays quiet.

Availability

Each command can be limited to when you are Live, when you are Offline, or run at Any time (the default). Outside its window the command is simply not there: no reply, no cooldown used, no count added.

Required arguments

A command that needs something typed after it, like a name for !so, can turn on Requires an argument. When a viewer runs it bare, the bot replies with the usage line built from the argument hint instead of running the command, and no cooldown or count is used.

chatusage reply
!so
→ Usage: !so <user>

Cooldowns

Cooldowns stop a command being spammed. There are two, and both can be set on the same command:

CooldownWhat it limits
GlobalHow often the command can run for the whole channel, regardless of who runs it.
Per userHow often a single viewer can run it. Others are unaffected.

By default mods and you bypass cooldowns entirely (you can turn that off in Bot settings). When someone hits a cooldown the bot either stays silent or posts a short "wait Ns" reply, your choice in Bot settings.

Aliases

Give a command extra trigger words that do the same thing. A !commands command with aliases cmds and help answers all three. Aliases share the command response, permission and cooldowns, and they cannot collide with another command trigger.

Public list visibility

Each command has a show in public list toggle. Public commands appear on your shareable command page at overlaything.com/c/yourname (built-in module commands from Queue, Quotes, Counters, Music and a live giveaway keyword show there too). Turn it off for internal or mod-only commands you would rather not advertise.

You can also assign your custom commands to specific categories on the public list, so they group under their own headings on the command page instead of sitting in one long list.

Unknown-command suggestions

Turn on suggestions in Bot settings and when a viewer mistypes (like !uptme) the bot can reply "Did you mean !uptime?". It is rate-limited per viewer so it never spams.

Related

  • Variables
  • Getting started
  • Conditionals
  • Chatbot overview
Previous Getting started Next Variables
On this page
Ask the docs
Have a question?
Thinking it through...
Answer
Get an answer instantly; our model is trained on every feature of our streaming suite.
ESC
Get started
More than overlaysOverlayThing is an all-in-one toolkit for your Twitch channel: a visual overlay … Get started From zero to liveThe fastest path to a working overlay on your stream. Sign in, build something, … Get started Add to your streamOne overlay, one URL, one browser source. OverlayThing works with any streaming … Get started
Overlays
OverlaysYour overlays live on the Overlays page, a gallery of every canvas you have buil… Overlays The editorWhere overlays are built. A canvas in the middle, your layer stack on the left, … Overlays Overlay URLsEach overlay has its own private URL. Add it to your streaming software once and… Overlays Alert queueWhen events pile up (a gifted-sub train, a hype raid), you usually want alerts t… Overlays Share, export & importMove overlays and individual widgets between your own overlays, back them up as … Overlays
Widgets
Widgets overviewWidgets are the building blocks of an overlay. Some fire on an event and leave (… Widgets AlertsThe moment something happens, an alert fires on screen with motion, sound and yo… Widgets VariationsOne event, different reactions. Variations let a single alert play a bigger vers… Widgets Hype TrainWhen a Hype Train rolls on your channel, OverlayThing can fire an on-screen aler… Widgets Text to speechHave alerts read messages aloud: a tip note, a resub message, a redemption. Text… Widgets GoalsA progress bar with a target. It fills itself as events come in, and you can cel… Widgets Countdown & subathonTwo timer widgets. A countdown runs down to a time or for a set duration. A suba… Widgets Chat boxPut your Twitch chat on stream, great for handheld, IRL or face-cam layouts wher… Widgets Data labelsSmall live readouts that keep your channel numbers on screen: latest follower, l… Widgets CounterPut a live number on your overlay: deaths, wins, fails, anything you keep a runn… Widgets Text, image & videoThe plain building blocks. Use them for backgrounds, frames, logos, panels and l… Widgets
Chatbot
The chatbotA Twitch chat bot built into OverlayThing: custom commands, timers, counters, qu… Chatbot Getting startedTurn the bot on, make it a moderator, and pick your command prefix. Three small … Chatbot CommandsCommands are the heart of the bot. A viewer types a trigger, the bot replies wit… Chatbot VariablesVariables are $( … ) tokens you drop into a command response. They fill in with … Chatbot ConditionalsConditionals let one command react differently to different viewers and situatio… Chatbot RecipesCopy-ready command responses for the trickier variables: shoutouts, weather, dic… Chatbot API commandsPower-user territory. Wire a command to an external API and pull a live value in… Chatbot IntegrationsBuilt-in connections to outside services that add ready-made variables. Today th… Chatbot Command API & Copy-URLFire bot commands and module actions from outside chat: a Stream Deck button, a … Chatbot Chat moderationWhen the bot is a moderator it can keep chat clean automatically: tunable spam f… Chatbot Bot accountChoose which Twitch account the bot posts as: the shared OverlayThing bot, your … Chatbot Bot settingsThe channel-wide behavior of the bot: your prefix, how it replies, how cooldowns… Chatbot
Chatbot modules
ModulesThe bot is built from modules you switch on one at a time. Turn on only what you… Chatbot modules TimersPost recurring messages on a schedule: rules, your socials, a sponsor plug. Time… Chatbot modules CountersTrack a number from chat: deaths, wins, fails, anything you want to tally live.… Chatbot modules QuotesA searchable quote book your chat builds with you, one memorable line at a time.… Chatbot modules Chat alertsPost a chat message when someone follows, subscribes, resubs, gifts, cheers or r… Chatbot modules WelcomeGreet people automatically: first-time chatters, returning regulars, and incomin… Chatbot modules Ad BreaksHave the bot speak up around your ad breaks: a heads-up before they hit, a line … Chatbot modules GiveawaysRun a giveaway and draw a winner from chat, by keyword entry or passive presence… Chatbot modules QueueLet viewers line up to play with you. They join, you pull people up in order.… Chatbot modules Song requestsViewers request YouTube songs by name or link and the bot builds a play queue, w… Chatbot modules LoyaltyTrack how long your viewers watch, so you can spot and reward your most loyal re… Chatbot modules
Flows
FlowsFlows let you wire your channel together with no code. Pick something that happe… Flows Build a flowYou build a flow on a canvas: add nodes, connect them in the order they should r… Flows TriggersA trigger is the event that starts a flow. Every flow has at least one. Most tri… Flows ConditionsConditions are the rules in a flow. They decide whether the run keeps going and … Flows ActionsActions are the things a flow does. Most of what the rest of the platform can do… Flows Using dataThe best flows feel personal because they use the real details of the event. Dro… Flows ExamplesFour flows from simple to advanced, drawn as the real graphs you build on the ca… Flows
Channel Rewards
Channel RewardsCreate channel-point rewards through OverlayThing and your flows can do things T… Channel Rewards
Remote Control
Remote ControlDrive your local OBS Studio or Meld Studio straight from OverlayThing. Switch sc… Remote Control Connect OBS StudioAdd the Remote Control URL as a dock or browser source, enable the OBS WebSocket… Remote Control Connect Meld StudioAdd the blank Remote Control source to every Meld scene. There is no password to… Remote Control Bindings & triggersA binding is one or more actions plus the trigger that fires them. Build them on… Remote Control Security & accessThe Remote Control URL is a key to your streaming software, and your OBS passwor… Remote Control
OBS Dock
OBS DockChat, activity, media requests and stream controls in a panel docked inside OBS.… OBS Dock Layouts & displayBuild the dock out of panes, save arrangements as layouts, and open a second doc… OBS Dock Chat & Needs YouRead and send chat as yourself, moderate from the message row, and clear AutoMod… OBS Dock Activity & mediaEvery channel event in one filterable feed, and full control of the media queue … OBS Dock Stream info & controlsEdit your title, category and tags without leaving OBS, and run markers, clips, … OBS Dock
Companion
CompanionA native desktop app for macOS and Windows that pairs with your OverlayThing acc… Companion Install & pairDownload the Companion for your operating system, open it, and approve one short… Companion Feed, chat & channelThe Companion mirrors the parts of your dashboard you touch mid-stream, on your … Companion ScriptingWrite small scripts that react to your stream and do things only a local app can… Companion The scripting APIThe complete ot surface: every event you can listen to, every action you can tak… Companion Permissions & securityScripts run in a sandbox and start with zero powers. You grant each capability p… Companion
Monetize
Your tip pageA branded donation page viewers can reach from a single link in your panels or c… Monetize Tip settingsEverything behind your tip page: the payment connections, your branding, the amo… Monetize Merch with FourthwallConnect your Fourthwall shop and merch sales fire alerts on stream, the same way… Monetize
Build your own
Describe & BuildDescribe the widget you want in plain language and OverlayThing builds a styled,… Build your own Custom widgetsFor when you want to break the mold. Write your own HTML, CSS and JavaScript, re… Build your own Widget SDKThe API your custom widgets use to receive live events and persist state. It is … Build your own
Your data
DashboardYour home base. The numbers that matter at a glance, a chart to spot trends, and… Your data Stream dataThe numbers behind your overlay. Labels, goals and leaderboards all read from he… Your data Chat logA searchable archive of your chat, events and moderation actions. Look up what a… Your data ModerationEvery chat message, tip note and alert message runs through a moderation pipelin… Your data
Account
Settings & connectionsYour account, your connected services, and the controls that protect your access… Account Export your dataYour data is yours. From Settings, under Data and privacy, you can take it with … Account Import from StreamElementsAlready set up elsewhere? Bring your overlays, alert settings, goals and history… Account
Reference
Label tokensTokens are {placeholders} you drop into alert text, label templates and goal lab… Reference Keyboard shortcutsThe editor is built for the keyboard. These are the ones worth learning.… Reference FAQShort answers to the questions we hear most. For step-by-step fixes when somethi… Reference TroubleshootingQuick fixes for the things that trip people up most.… Reference
↑↓ navigate ⏎ open esc close