Skip to content

Modomation module

Modomation is a moderation and automation toolkit. It automates responses to channel point redemptions and channel events (subs, gifts, hype trains, polls, predictions, raids, and more), manages VIP status, shouts out a curated list of viewers when they chat, and uses machine learning to suggest AutoMod tuning improvements.

Chat messages Modomation sends honor your channel’s bot identity (broadcaster, shared @StreamerCatalyst bot, or your custom bot — chosen in Chatters → Bot Setup).

Available on the Free tier and above. See Module access by tier.

Channel point redemption automations

Define rules that fire when a viewer redeems a specific Channel Point reward. Each rule sends a configurable chat message with template variable support.

VariableSubstituted with
$(user)Viewer’s display name
$(count)How many times this viewer has redeemed this specific reward

Setup:

  1. Open Modomation in the dashboard and click Add Rule.
  2. Pick a Channel Point reward from your channel’s list (one rule per reward; messages up to 500 characters).
  3. Write a message template and save — the EventSub subscription registers automatically, and a Subscribe button covers the rare case it shows as Pending.
  4. Redemptions now trigger the automation in real time.

Redemptions are deduplicated, so a reward tracked by both a rule and redemption tracking never fires twice. Rule limits depend on your tier (3 on Free, 10 on Affiliate, unlimited on Partner and above) — if your tier drops, the newest rules beyond the limit are disabled automatically. See Tier comparison.

Each rule card includes a Counts panel showing the top 100 redeemers of that reward.

Redemption tracking

Independent of rules, you can count how many times each viewer redeems rewards without sending a chat message. Use selective mode to track chosen rewards (add them from your channel’s reward list), or all mode to track every redemption on the channel. The tracking page shows when tracking started and a leaderboard — top 50 redeemers per reward, or aggregated across all rewards.

VIP automation

Modomation turns Twitch VIP status into a fully automated reward system. You can hand out VIP by chat command, from the dashboard, or automatically the moment a viewer subscribes — and Modomation can just as automatically take VIP back when a grant expires or when the viewer stops meeting the conditions you set. Every grant and revoke is written to an immutable audit log.

Requires the Affiliate tier or above. Enable it in Modomation → VIP and toggle VIP automation on. Enabling VIP registers the shared channel.chat.message EventSub subscription so chat commands are picked up (the same subscription auto-shoutout uses).

At a glance

CapabilityWhat it does
Auto-grant on subscribeAutomatically gives VIP to anyone who subscribes at or above a tier you choose
Chat commandsGrant/remove VIP live from chat (!addvip, !addtempvip, !addpermvip, !removevip)
Dashboard grantsGrant VIP to any user with a chosen duration from the dashboard
Timed VIPVIP that expires automatically after a set time (minutes → weeks, up to 365 days)
Stream-limited VIPVIP that lasts a set number of streams, then auto-expires
Auto-removalRevoke VIP automatically when a viewer unfollows, unsubscribes, or drops sub tier
Audit logImmutable record of every grant, expiry, and removal

VIP grant durations

Every VIP grant carries a duration type that decides if and when it is removed automatically:

Duration typeBehaviour
PermanentNever expires on its own. Only removed manually or by an auto-removal rule (unfollow/unsub/tier-drop).
TimedExpires at a fixed time. Written as a number + unit: 30m, 2h, 3d, 1w. Maximum 365 days.
Stream-limitedLasts a set number of streams. Written as 1stm, 3stm, etc. The counter drops by one each time your stream ends (stream.offline); at zero the VIP is removed on the next daily check.
DefaultUses the channel’s configured default duration so you don’t have to type one every time.

Duration-string units accepted by the temp-VIP command and default-duration setting: s (seconds), m (minutes), h (hours), d (days), w (weeks), and stm (streams).

Auto-grant VIP on subscribe

Reward subscribers with VIP automatically — no command, no dashboard click.

  1. Go to Modomation → VIP.
  2. Turn on Grant VIP on subscription.
  3. Pick the minimum tier that qualifies: Tier 1, Tier 2, or Tier 3.

When a viewer subscribes at or above that tier, Modomation immediately grants them VIP (as a permanent grant) and records it in the audit log with the reason sub_threshold. Viewers who already have an active VIP record are skipped, so re-subs never create duplicates. Gift-sub and resub events flow through the same channel-event pipeline.

To have subscriber VIPs removed again if the viewer later lapses, pair this with Remove VIP on sub tier drop and/or Remove VIP on unsubscribe (see auto-removal below).

VIP chat commands

Moderators and the broadcaster can manage VIP straight from chat. Commands come in two layouts, chosen with the command mode setting:

Unified mode (default) — one command that uses your default duration:

CommandEffect
!addvip @usernameGrants VIP using the channel’s default duration (permanent if no default is set).
!removevip @usernameRemoves VIP and marks the record removed.

Split mode — separate commands for temporary vs permanent:

CommandEffect
!addtempvip @username [duration]Grants a timed or stream-limited VIP. Duration is optional if a default is configured — e.g. !addtempvip @nightbot 3d or !addtempvip @nightbot 2stm.
!addpermvip @usernameGrants a permanent VIP.
!removevip @usernameRemoves VIP.

Who can run VIP commands:

  • The broadcaster — always.
  • A lead moderator — always.
  • A regular moderator — only when Allow moderators to use VIP commands (vip_mod_access) is turned on.

Unauthorized users are ignored silently. Commands are deduplicated for five minutes so a repeated message can’t grant twice.

Grant VIP from the dashboard

Modomation → VIP → Add VIP grants VIP to any username with a duration you pick — Permanent, Timed (value + unit), or Stream-limited (number of streams). Timed grants are capped at 365 days. The VIP list shows both managed VIPs (granted through StreamerCatalyst) and external VIPs (added directly on Twitch or by another tool); you can remove either from the dashboard.

Each active VIP is enriched with the viewer’s current sub tier and follower status so you can see at a glance who still meets your conditions.

Auto-removal of VIP

A daily job (06:00 UTC) reviews every active managed VIP and removes the ones that no longer qualify. Removal reasons are recorded in the audit log.

Always active (built into the duration):

  • Timed VIPs whose expiry time has passed → removed (duration_expired).
  • Stream-limited VIPs that have run out of streams → removed (streams_expired).

Optional rules you enable in Modomation → VIP:

SettingRemoves VIP when…
Remove VIP on unfollowThe viewer no longer follows the channel.
Remove VIP on unsubscribeThe viewer no longer subscribes.
Remove VIP on sub tier dropThe viewer’s sub tier falls below your auto-grant threshold (requires Grant VIP on subscription to be on).

Unfollow and unsubscribe checks only apply to non-permanent VIPs granted after you first enabled VIP automation, so VIPs you set up before turning the feature on — and any permanent grants — are never swept up unexpectedly. If Twitch’s API can’t confirm a viewer’s status on a given day (transient error or a missing scope), that viewer is skipped and re-checked on the next run rather than being removed on bad data.

Audit log

Every VIP action — grant, expiry, manual removal, and automatic removal — is written to an immutable audit log with the target user, the action, the reason, and who performed it (cron for automatic expiry/removal, system for auto-grant on subscribe, or the moderator/broadcaster login for manual actions). View it under Modomation → VIP to see the full history for your channel.

Required permissions

VIP automation relies on these Twitch OAuth scopes, all requested when you connect your account for Modomation:

  • channel:manage:vips — grant and revoke VIP.
  • channel:read:subscriptions — check subscriber status for auto-grant and tier-drop removal.
  • moderator:read:followers — check follower status for unfollow removal.

If you connected before these scopes existed, the dashboard prompts you to re-authorize. See Modomation — Authentication & permissions.

Auto-shoutout

Automatically shout out specific viewers when they chat — fellow streamers, community pillars, regular raiders. Auto-shoutout works from a curated list you manage under Modomation → Auto-Shoutouts: only people you’ve added are ever shouted out.

Message variants

The shoutout message adapts to the chatter’s own live status and last-played game, which Modomation looks up at send time from their channel (not yours). Four variant fields cover the combinations, each up to 500 characters:

When the chatter is…Config fieldFalls back to
Live, last game knownauto_shoutout_message (primary)
Live, last game unknownauto_shoutout_message_no_gameprimary
Offline, last game knownauto_shoutout_message_offlineprimary
Offline, last game unknownauto_shoutout_message_offline_no_game_no_game, then primary

A blank variant inherits from its fallback, so filling in only the primary message still covers all four cases. The cascade is order-sensitive: offline_no_game_no_game → primary; offline → primary; no_game → primary.

Variables

Messages support these template tokens:

VariableSubstituted with
$(user) / $(touser)The chatter’s display name (both resolve to the same value)
$(login)The chatter’s username (safe inside twitch.tv/ links)
$(url)twitch.tv/<login>
$(game)The chatter’s last-played category
$(status)live or offline

Because live/game status is probed from the chatter’s channel at send time, $(game) and $(status) describe the person being shouted out. Example primary message: $(user) is live right now playing $(game)! Go show them love at $(url) 💜.

Cooldown

  • Global cooldownonce per stream (the default; resets each time you go live) or a fixed interval from 1 second to 24 hours (the dashboard offers 5 min / 15 min / hourly presets).

Per-user overrides

Any listed user can override:

  • Message — a custom message that wins over every global variant.
  • Cooldown — inherit the global, once per stream, or a custom interval.
  • Native shoutout — inherit the global default, force on, or force off.

Native Twitch shoutout

Optionally fire Twitch’s built-in shoutout (POST /helix/chat/shoutouts) in addition to the chat message — set the global Native Twitch shoutout default and, per user, inherit / on / off. It is best-effort and fail-soft: a native failure never suppresses the chat message. It only works while you are live, is skipped for the broadcaster themselves, and requires the moderator:manage:shoutouts scope. That scope is requested at sign-in, so a channel that connected recently already has it. If you connected before it was added, native shoutouts stay quiet until you authorize again — use the Reconnect button that appears beside the toggle. See Modomation — Authentication & permissions.

Twitch only accepts one native shoutout every ~2 minutes, so an auto-shoutout that can’t fire right away now joins the shoutout queue instead of being dropped. It’s the same queue Chatters’ !so uses — the two features no longer knock each other out — and it drains in order as the cooldown allows. Check it in chat with !soq. The queue is on by default; whenever it isn’t available the old behaviour applies — the shoutout is attempted immediately and quietly skipped if Twitch says it’s too soon.

Duplicate chat events are debounced, and cooldown state is tracked per user, so a chatty friend is greeted exactly as often as you configured. You can’t add yourself — the broadcaster is never shouted out.

Channel event automations

Beyond redemptions, event rules post a chat message when a channel event fires — one rule per event type, each with a 500-character template and event-specific variables. Twenty event types are supported, split across three dashboard tabs:

Dashboard tabEvent typesExample variables
Channel EventsStream online/offline, title/category change, ad-break start, incoming raid, shoutout sent$(title), $(category), $(duration), $(from_user), $(viewers), $(to_user)
Follows, Subs, Bits & Hype TrainsNew follower, subscribe, gifted subs, resub message, cheer, hype train begin/progress/end$(user), $(login), $(tier), $(total), $(cumulative_months), $(streak_months), $(bits), $(level), $(goal), $(top_user)
Polls & PredictionsPoll begin/end, prediction begin/progress/lock/end$(title), $(choices), $(results), $(winner), $(winner_votes), $(total_votes), $(outcomes), $(top_outcome), $(status)

Each rule’s EventSub subscription registers automatically on save (with a Subscribe button as fallback), and anonymous gifters/cheerers render as “Anonymous”. Each tab shows the exact variables available per event type.

$(tier) renders the tier as a label — Tier 1 / Tier 2 / Tier 3 — not as Twitch’s internal plan code, so “thanks for the $(tier) sub” reads the way you wrote it. Writing the word yourself (“Tier $(tier)”) is fine too; it will not double up.

New follower announcements

A New Follower rule (channel.follow, $(user) / $(login)) is the one way to greet follows in chat without setting up an Events reward — write the message, enable the rule, done. It needs the moderator:read:followers permission, which every login already requests, so no re-authorization is involved.

Follows are the one event here a single viewer can fire over and over, so each follower is announced once per 24 hours — unfollowing and re-following will not repeat the message. That is a re-follow guard, not a follow-bot defence: a bot flood arrives from thousands of distinct accounts, and the answer to that is Twitch’s own follower-mode and account-verification settings. If you are being follow-botted, switch the rule off until it passes.

Polls & Predictions

Poll and prediction rules are informational chat announcements: when the event fires, the rule posts your message. Modomation takes no moderation action and never creates, resolves, or cancels a poll or prediction itself — it only announces Twitch’s own lifecycle events. One rule per event type, each with a 500-character template, and the EventSub subscription auto-registers on save (Subscribe button as fallback).

Event typeDashboard labelVariables
channel.poll.beginPoll Started$(title), $(choices)
channel.poll.endPoll Ended$(title), $(winner), $(winner_votes), $(results), $(choices), $(total_votes), $(status)
channel.prediction.beginPrediction Started$(title), $(outcomes)
channel.prediction.progressPrediction Progress$(title), $(outcomes), $(top_outcome)
channel.prediction.lockPrediction Locked$(title), $(outcomes), $(top_outcome)
channel.prediction.endPrediction Ended$(title), $(winner), $(status)

How the derived variables are computed:

  • $(choices) — comma-joined list of the poll’s choice titles. Available on both channel.poll.begin and channel.poll.end.
  • $(results) (poll end) — comma-joined choice titles each annotated with its vote count, sorted highest-first, e.g. Red: 40, Blue: 25. The count is that choice’s total votes (base + Channel Points + Bits). Empty when the poll ended with no votes.
  • $(winner) (poll) — the choice with the most votes; empty if the poll ended with zero votes, so write templates that tolerate a blank winner.
  • $(winner_votes) (poll end) — the winning choice’s total vote count (base + Channel Points + Bits); 0 when the poll ended with no votes.
  • $(total_votes) — the sum of every choice’s votes (0 when there were none).
  • $(outcomes) (prediction begin) — comma-joined outcome titles only.
  • $(outcomes) (prediction progress/lock) — comma-joined outcome titles, each annotated with its current user count, e.g. Yes (12), No (3).
  • $(top_outcome) — the outcome with the most Channel Points staked so far.
  • $(winner) (prediction end) — the winning outcome’s title, resolved from Twitch’s winning_outcome_id.
  • $(status) — Twitch’s raw status string: completed / terminated / archived for polls, resolved / canceled for predictions.

The poll and prediction variables don’t overlap: $(choices), $(results), $(winner_votes), and $(total_votes) are poll-only, while $(outcomes) and $(top_outcome) are prediction-only. $(winner) exists on both channel.poll.end and channel.prediction.end. An unknown token (e.g. a poll variable in a prediction template) is left untouched and rendered literally, so keep each template to its own event’s variables.

These events need the channel:read:polls and channel:read:predictions OAuth scopes — see Modomation — Authentication & permissions.

Snooze ads on raid

When your channel is raided, StreamerCatalyst automatically snoozes your next scheduled Twitch ad so incoming raiders aren’t immediately shown an ad break.

How to enable: Dashboard → Modomation → Channel Events → toggle “Snooze next ad on raid” on. No additional EventSub subscription step is needed — the existing channel.raid subscription is reused.

Requirements and caveats:

  • Requires the channel:manage:ads OAuth scope. If the dashboard prompts you to re-authorize, follow the prompt to grant this permission (it is already declared for Modomation — re-authorization is only needed for accounts that connected before this scope was added).
  • Only works while you are live with an ad scheduled — Twitch’s snooze endpoint no-ops otherwise; nothing visibly happens in this case.
  • Snoozes only the single next ad per raid (one snooze call per raid event), and consumes one of Twitch’s limited daily snoozes. Back-to-back raids each trigger one snooze call.
  • If Twitch’s daily snooze limit is reached, further raids that day won’t snooze — this is a Twitch-side cap, not a StreamerCatalyst bug.

AutoMod suggestions (Partner and above)

When ML capture is enabled, Modomation records AutoMod and moderation events (held messages, deletions, warnings, term updates, and more). A daily job (06:00 UTC) reviews the last 7 days — once at least 20 events are captured — and uses Workers AI to propose AutoMod tuning improvements: raising or lowering a category level, adding or removing a blocked term, or enabling/disabling a moderation feature. Low-confidence ideas are filtered out before you see them.

Suggestions appear under Modomation → AutoMod Suggestions (which also shows the capture toggle, an events-captured progress bar, and the last run time). Suggestions are advisory — review each one and apply it yourself via the page’s link to your Twitch moderation settings, then snooze it (1, 7, or 30 days), dismiss it, or restore a snoozed/dismissed one. Snoozed suggestions return to pending automatically when the snooze expires.

Capture can be switched on at any tier, but suggestion generation runs on Partner and above.

Configuration

Open Modomation in the dashboard sidebar to:

  • Add, edit, and delete redemption rules, and view per-rule redemption counts.
  • Configure redemption tracking and browse its leaderboard.
  • Set up channel event rules across the Channel Events, Subs/Bits/Hype Trains, and Polls & Predictions tabs.
  • Configure VIP automation: auto-grant on subscribe (with tier threshold), command mode and moderator access, a default duration, and the unfollow / unsubscribe / tier-drop auto-removal rules.
  • Manage the auto-shoutout list, the four live/offline message variants, global cooldown, the native Twitch shoutout toggle, and per-user overrides.
  • Enable ML capture and review AutoMod suggestions.

API and endpoint reference

See Modomation — API endpoints for the full list of HTTP endpoints.

Auth reference

See Modomation — Authentication & permissions for the OAuth scopes this module uses and the EventSub subscriptions it registers.