Smart alerts are a "when this happens, do these things" rule engine. Follows, subs, Bits, tips, keywords, commands and timers can all be triggers; actions include sending a message, popping an on-screen alert, throwing an object, adding marathon time, and more.
What it solves
Every other module handles one thing, but real stream moments are usually combinations: someone cheers and you want an on-screen alert, a thank-you in chat, and a wheel spin, all at once. Smart alerts separate triggers from actions so you can combine them freely, instead of waiting for a feature that covers each specific pairing.
Getting started
- Start from a scenario template, or create a blank rule.
- Choose the trigger: what has to happen.
- Add actions: what to do (several, executed in order).
- Optionally set cooldowns, permissions, and "live only".
Message action details
A message beginning with /reply replies to the triggering message (for command and
keyword triggers); for other triggers it @-mentions whoever caused it. If you type a
native Twitch command such as /marker or /timeout, it is converted into the
matching action on save rather than being sent as plain text.
Common misconceptions
- Using a command as a trigger doesn't require that command to be enabled. But the Commands page's permissions and "live only" setting still apply; the rule bypasses the enable switch, not every gate.
- Actions run in order, and the order matters. Message-then-spin and spin-then-message feel different to the viewer.
- Twitch announcements require MOD. Sending the message as an announcement gives it a highlighted background in chat, but the sending identity must be a MOD of your channel.
- You can't send as your own account until you've joined the channel. Complete that on the "join channel" page first; otherwise messages go out as the official bot.
- The free plan caps the number of actions. At the limit, delete actions you no longer use or upgrade to Pro.
-
The birthday greeting only fires on a viewer's birthday, on their first message.
"Birthday" is judged by your channel's time zone (UTC if you haven't set one), and the viewer must
have set a birthday and not turned greetings off in their profile settings. Each viewer is greeted at
most once per stream, and within one year only on a single date in your channel, so changing the
birthday over and over won't earn a second greeting.
The birthday scenario template is live-only by default,
and viewers can only set a birthday in chat after you enable
!birthdayon the Commands page. -
"First chat this stream" fires once per viewer, per stream.
It triggers the first time a viewer speaks during the current stream; further messages in the same
stream don't trigger it again, and the count starts over on the next stream. It never fires while
you're offline, so its limits have no "Only usable while live" switch.
{nth}is how many viewers have spoken so far this stream, counting this one; you, your channel's bot account and known bots are not counted and don't take a number. New viewers tend to pour in right after you go live, so this trigger has a global cooldown (the template defaults to 5 seconds) to keep the bot from flooding chat and hitting Twitch's message rate limit. A viewer who is held back by the cooldown is not welcomed later in the same stream.
Settings
The text below is taken from the in-app help, so it stays in sync with the actual interface.
| Setting | What it does |
|---|---|
| Full custom | Start from a blank rule and configure everything |
| Throwing trigger | A rule whose main action is throwing: pick a trigger, items and count |
| Text alert | Keeps the style's image and sound; only customize the text that pops up |
| Sound alert | Nothing shows on screen; only a sound effect plays |
| Image alert | Hides the text and drops the frame automatically; sound is optional, leave it blank or set your own |
| Run as | Which account sends this rule’s messages/commands. |
| Command | Enter the leading ! yourself if your command needs one. |
| Min | Triggers at this value or above (inclusive); 0 = no limit |
| Max | Triggers at this value or below (inclusive); 0 = no limit |
| Reward ID | Optional: pin to one reward when titles collide. |
| Send as announcement | Sends the whole message set as a Twitch announcement, highlighted in chat. The run-as account must be a moderator of this channel. |
| Arguments (optional) | Text appended after the command (optional); supports variables/functions. |
| Run as | As triggering user = runs as if that user typed the command in chat; As bot = runs as the bot. |
| Ignored users | Space-separated logins. |
| Hide the bot badge | When on, this notification looks like an ordinary message from the run-as account, with no bot badge next to the name. |
| Payment provider | Triggers only for this provider; "All" = any provider. |
| Trigger count | The {count} template variable; auto-increments by 1 on each trigger. You can override the running total. |
| Per-stream limit (all viewers) | Max triggers for this rule during one stream, across all viewers. 0 = unlimited. |
| Per-stream limit (per viewer) | Max triggers per viewer during one stream. 0 = unlimited. |
| Counter value | Insert the current value of a counter. |
| Items | No selection = random among all enabled items. |
| Burst interval (ms) | 0 = use the widget default. |
| Count mode | Scale with value: the number of throws follows bits / gift subs etc. |
| Throw once per N | e.g. 100 = one throw per 100 bits / per 100 gift subs; below N nothing is thrown. |
| Max throws | 0 = unlimited; on-screen density is governed by the Throwing "Max concurrent items" setting. |
| Size multiplier | Multiplies each item's size; 1 = use item settings. |
| Weight multiplier | Multiplies item weight; heavier hits knock back harder and sound louder. |
| Volume multiplier | Multiplies item volume; 100% = use item settings. |
| Style | Look (layout / theme / image / sound) comes from the style. |
| Duration override | Leave empty to use the style set duration; overrides are at least 3s. |
| Title | Optional: needs at least one of title, subtitle, image or sound. |
| Subtitle | Leave empty to hide. |
| Image override | Keep the style's image, or pick None for a sound-only alert. |
| Sound override | Keep the style's sound, or pick None for a silent, image-only alert. |
| Volume override | 0 = use style volume (1–100). |
| Theme override | Leave unset to keep the style's theme. "Minimal" is transparent with no card, good for image-only alerts. |
| Read message aloud | Reads the subtitle (title if none); blocked words mute the read-out while the alert still pops. |
| Counter | Create and manage these on the Counters page. |
| Operation | Reset returns the counter to its own initial value. |
| Amount | Use a negative number to subtract. |
Other notes
- The permission and "only while live" settings from the Commands page still apply. The command itself does not need to be enabled.
- You haven't joined this channel, so you can't send as yourself. Join it on the Join Channels page first.
- Recommended common alerts. Pick the ones you want and ChiwaBots will create them all at once.
- !birthday is off by default. Enable it on the Commands page first, otherwise viewers cannot set a birthday and this rule never fires.
- Start a message with /reply to reply to the triggering message (command/keyword); other triggers fall back to @mentioning the triggering user.
- YouTube only. The threshold and {amount} use the original currency (e.g. 500 JPY stays 500) — Goal and Marathon each convert to TWD separately for their own progress rules.
- This event only fires while you are live, so there is no 'Only usable while live' switch.
- During the cooldown, repeat triggers skip only the chat message (to avoid spam); the command actions still run as usual.
- The slider goes up to 300s; use the number field for longer values (max 86400s / 24 hours).
- No roles selected = nobody can trigger this rule. To allow everyone, select all roles.
- Quota and chat permission are bound to this account and cannot be changed.
- This identity's quota
- Your Twitch authorization predates support for some newer events (Hype Train, polls, predictions). Re-authorize to start receiving them.
- Voice, speed and pitch live in Alert Box → Style settings and are shared by every rule using that style.
Other settings
These settings have no additional help text in the dashboard; only their names are listed here.
- Select page
- Enable
- Disable
- Delete
- Clear
- Add
- Couldn't load this notification's settings.
- min
- No connected Twitch identity to run as yourself.
- This rule contains an action your current role can't use, so it's read-only for now. Ask the broadcaster or an editor to adjust it.
- Moderation command: runs with elevated permissions and is logged to the audit trail.
- Never runs if the target is a channel moderator, the broadcaster or the official bot. To punish a moderator, /unmod them on Twitch first.
- Advanced
- When it triggers
- What it does
- Limits
- Simple mode
- Advanced mode
- Choose a scenario
- Thank your supporters
- Stream rhythm
- Interactive responses
- Other
- Quick add
- Quick-add alerts
- Select all
- Add selected
- Thank a follow
- Thank a sub
- Thank gifted subs
- Thank a cheer
- Thank a tip
- Welcome a raid
- Reward a watch streak
- Hype Train start
- Hype Train complete
- Going live
- Stream ends
- Scheduled promo
- Start a raid
- Custom command reply
- Reward redemption
- Keyword response
- Earthquake alert
- Poll result
- Prediction result
- Birthday greeting
- First chat this stream
- Say thanks when someone follows
- Say thanks when someone subscribes
- Say thanks when someone gifts subs
- Say thanks when someone cheers bits
- Say thanks when someone tips
- Welcome viewers when a channel raids you
- Respond when a viewer hits a watch streak
- Hype up the crowd when a Hype Train starts
- Thank chat and name the conductor when it ends
- Announce in chat when the stream starts
- Sign off when the stream ends
- Post a recurring promo on a timer
- Announce when you start a raid
- Reply when a viewer types a command
- Respond when a viewer redeems a reward
- Respond when chat mentions a keyword
- Broadcast an earthquake early warning
- Announce in chat when a Twitch poll ends and results are in
- Announce the winning outcome when a Twitch prediction resolves
- Greet a viewer when they first chat on their birthday
- Welcome each viewer the first time they chat during a stream
- Don't forget to follow so you never miss a stream!
- {username} redeemed a reward!
- Message
- More actions
- Create
- Display
- Chat message
- Announcement
- + Alert Box
- + Throw items
- + Shoutout back
- the stream starts
- the stream ends
- a viewer follows the channel
- another channel raids in
- you start a raid
- a viewer hits a watch streak
- a viewer cheers bits
- a viewer subscribes
- a viewer gifts subs
- a Hype Train starts
- a Hype Train levels up
- a Hype Train ends
- Poll started
- Poll ended
- Twitch prediction started
- Twitch prediction locked
- Twitch prediction resolved
- a viewer sends a Super Chat
- a viewer becomes a new member
- a member hits a membership milestone
- a viewer gifts memberships
- a viewer sends Jewels
- a viewer donates AI credits
- a viewer gifts a ChiwaBots paid plan
- a viewer sends a tip
- an earthquake early warning fires
- a viewer sends a GIF
- a viewer chats for the first time on their birthday
- a viewer chats for the first time this stream
- sends a chat message
- posts a highlighted announcement
- throws items
- shows an Alert Box
- ,
- Sensible defaults applied.
- Limits:
- only while live
- restricted viewers
- Add message
- Add action
- Pick a random recently-active chatter (optional minutes, default 10).
- All
- All statuses
- Type
- Executor
- Collapse
- Clear filter
- Enabled
- Disabled
- Highlight your message in a chosen color.
- Prompt viewers to follow a channel.
- Add a stream marker (optional comment) at the current time.
- Permanently ban a user from chat. Reason optional.
- Temporarily ban a user from chat (duration and reason optional).
- Remove a ban or timeout on a user.
- Remove a timeout on a user.
- Clear chat history for all viewers.
- Raid another channel, sending your viewers there.
- Cancel a raid.
- Events
- Custom reward redemption
- Custom command
- Timers
- Keywords
- Stream starts
- Follow
- Incoming raid
- Outgoing raid
- Share watch streak
- Cheer
- Subscribe
- Gift subscription
- Hype Train level up
- Hype Train end
- Super Chat
- New member
- Membership milestone
- Gift memberships
- Jewels gift
- AI credits donation
- Gift a ChiwaBots paid plan
- Earthquake early warning
- Tip
- GIF message
- Myself
- Broadcaster
- Official bot
- Send message
- Twitch command
- Built-in command
- Throw items
- Alert Box
- Requires editor role or above
- Requires MOD role or above
- Random
- Sequential
- Block
- Silent (count only)
- As triggering user
- As bot
- Default
- Blue
- Green
- Orange
- Purple
- Triggering user
- Custom
- User
- Channel
- Reason (optional)
- Duration (optional)
- Description (optional)
- Taipei
- Taoyuan
- Taichung
- Tainan
- Kaohsiung
- Yilan
- Contains
- Starts with
- Regex
- Trigger
- Action
- Name
- Trigger type
- Event
- Twitch custom reward name
- Keyword
- Match mode
- Trigger every (min)
- Min chats
- Gifted only
- Area
- Delay (s)
- Arguments
- Announcement color
- Argument source
- Only usable while live
- Global cooldown (s)
- Per-user cooldown (s)
- Viewer Permissions
- Rotation
- Turn on "Usable only while live" first to set a per-stream usage limit.
- Triggered this stream:
- Not currently live
- Reset stream count
- Reset this stream's usage count?
- This zeroes both the "all viewers" and "per viewer" counts for the current stream. The lifetime trigger count is not affected. This cannot be undone.
- Display name
- Login
- Name (Twitch style)
- Months subscribed
- Tier
- Tier (CJK)
- Magnitude
- Seconds
- Payment provider (CJK)
- Train type
- Total contributed
- Level-up goal
- To next level
- Level progress %
- Conductor
- Conductor's total
- Choices
- Winner
- Votes
- Currency
- Amount (formatted)
- Member level
- Membership months
- Gift name
- GIF name
- GIF URL
- Birthday (month/day)
- Chat order this stream
- Random symbol
- Random number
- Pick one
- Command args
- Module
- General
- Unknown variable/function
- Invalid function arguments
- Malformed token
- Not available for this trigger
- Identity expired
- Disabled (role revoked)
- Disabled (over limit)
- Name is required.
- Reward name is required.
- Command is required.
- Keyword is required.
- At least one message is required.
- A message contains an invalid variable/function.
- Select a Twitch command.
- Select a built-in command.
- Alert Box action requires a style.
- Alert Box action needs a title, subtitle, image or sound.
- Counter actions need a target counter.
- Enter a Twitch username
- Over limit, won't fire
- Enable Twitch event notifications
- Re-authorize
- Dismiss
- Could not start re-authorization. Please try again.
- Live broadcast begins!
- The live broadcast is over.
- Thank you for following {username}!
- {username} just raided the channel with {amount} viewers!
- Is ready to raid {username}.
- {username} watched {amount} consecutive streams and sparked a watch streak!
- {username} has cheered {amount} bits!
- {username} just subscribed!
- {username} just gifted {amount} subscriptions!
- {username} started a {traintype}! Let's push it higher!
- The {traintype} reached Level {amount}! Only {remain} to the next level!
- {traintype} Complete! Level {amount}, {percent}%. Conductor: {topuser}. Thanks everyone!
- Poll started: {title} ({choices}). Cast your vote!
- Poll ended: "{title}". Winner: {winner} ({votes}/{total}, {percent}%). Thanks for voting!
- Prediction open: {title} ({choices}). Place your points!
- Prediction locked: "{title}". {total} points on the line. No more bets!
- Prediction resolved: "{title}". Winner: {winner}. {total} points paid out!
- Thanks {username} for the Super Chat ({amountText})! Say: {say}
- Welcome {username} as a new member!
- {username} has been a member for {memberMonths} months! {say}
- Thanks {username} for gifting {amount} memberships!
- Thanks {username} for the {giftName} gift ({amount} Jewels)!
- Thanks {username} for donate AI Credits {amount}pt!
- Thanks {username} for gifting {months} months of plan time!
- Estimated magnitude {level}, about {seconds}s after arrival.
- Thanks {username} for donate {amount}$! Say: {say}
- {username} sent a GIF: {gifName}
- 🎂 Happy birthday, {username}! Hope it's a great one!
- 👋 Welcome, {username}! You're chatter #{nth} this stream!
- Thanks {username} for donate {amount}$!
- ECPay
- OPay
- PAYUNi
- NewebPay
- PayPal
- Unifi Pay
- The Throwing module is disabled, so this action will not run until it is enabled.
- All random
- Count
- Min intensity
- Max intensity
- Spawn side
- Fixed count
- Scale with value
- Items per throw
- Auto
- Left
- Right
- Top
- Bottom
- Top-left
- Top-right
- Bottom-left
- Bottom-right
- No styles yet; create one on the Alert Box page first.
- Use this GIF
- Set to
- Reset
- This counter was deleted; the action will not run.
- This counter is disabled or over the plan limit; the action will not run.