Modomation — Authentication & permissions
OAuth scopes
The Modomation module uses the following OAuth scopes. The baseline ones are requested when a broadcaster connects their Twitch account; the rest are requested later, the first time the feature that acts with them is set up, so most permissions for a feature you don’t use are never granted.
| Scope | Why requested | When we ask |
|---|---|---|
user:read:email | Identifies the account owner and is used for account linking. | At sign-in |
channel:read:redemptions | Reads channel-point redemption events. | At sign-in |
channel:manage:redemptions | Creates, updates, and fulfils custom channel-point rewards. | When you set up the feature |
user:read:chat | Listens to chat messages via EventSub. | At sign-in |
user:bot | Marks the account as a bot so Twitch applies bot rate limits. | At sign-in |
user:write:chat | Posts bot responses back to chat. | At sign-in |
channel:bot | Allows the account to send chat messages as a bot in this channel. | At sign-in |
channel:manage:vips | Grants and revokes VIP status as part of redemption automations. | When you set up the feature |
channel:read:subscriptions | Checks subscriber status for subscriber-gated features. | At sign-in |
moderator:read:followers | Reads follower count and individual follow events. | At sign-in |
moderator:read:automod_settings | Reads current AutoMod level and keyword filters. | At sign-in |
moderator:read:blocked_terms | Lists blocked terms managed by the broadcaster. | At sign-in |
moderator:manage:automod | Approves or denies AutoMod-held messages. | When you set up the feature |
moderator:read:chat_settings | Reads slow-mode, sub-only, and emote-only settings. | At sign-in |
moderator:read:warnings | Reads user warning history for moderation context. | At sign-in |
moderator:read:suspicious_users | Reads the suspicious-user list maintained by Twitch. | At sign-in |
moderator:read:unban_requests | Reads pending unban requests from banned viewers. | At sign-in |
moderator:read:banned_users | Lists currently banned users for audit and automation. | At sign-in |
moderator:read:chat_messages | Required by channel.moderate v2 for full moderation event detail. | At sign-in |
moderator:read:moderators | Lists channel moderators; required by channel.moderate v2. | At sign-in |
moderator:read:vips | Lists current VIPs; required by channel.moderate v2. | At sign-in |
channel:read:polls | Reads poll lifecycle events for channel event rules. | At sign-in |
channel:read:predictions | Reads prediction lifecycle events for channel event rules. | At sign-in |
channel:read:hype_train | Reads Hype Train events for channel event rules. | At sign-in |
channel:read:ads | Reads ad-break events for channel event rules. | At sign-in |
channel:manage:ads | Snoozes the next scheduled ad break (used by snooze-ads-on-raid). | When you set up the feature |
moderator:read:shoutouts | Reads shoutout events sent from or received by the channel. | At sign-in |
moderator:manage:shoutouts | Sends native Twitch shoutouts on behalf of the channel. | At sign-in |
bits:read | Reads bits cheer events and leaderboard data. | At sign-in |
EventSub subscriptions
Every subscription is created with the application access token (Twitch requires it for webhook transport). “Requires” lists the scopes the broadcaster must already have granted before Twitch will create the subscription.
| Type | Version | Requires | Condition keys | Description |
|---|---|---|---|---|
channel.channel_points_custom_reward_redemption.add | 1 | channel:read:redemptions | broadcaster_user_id, reward_id | Channel point redemption — one subscription per redemption rule; reward_id is set at runtime |
stream.online | 1 | — | broadcaster_user_id | Stream goes live — also provisioned by Auto Shoutouts |
stream.offline | 1 | — | broadcaster_user_id | Stream ends |
channel.update | 2 | — | broadcaster_user_id | Channel title/category updated |
channel.ad_break.begin | 1 | channel:read:ads | broadcaster_user_id | Ad break starts |
channel.raid | 1 | — | to_broadcaster_user_id | Channel receives a raid |
channel.shoutout.create | 1 | moderator:read:shoutouts | broadcaster_user_id, moderator_user_id | Shoutout sent from channel |
channel.hype_train.begin | 2 | channel:read:hype_train | broadcaster_user_id | Hype Train starts (v2 — v1 withdrawn 2026-01-22) |
channel.hype_train.progress | 2 | channel:read:hype_train | broadcaster_user_id | Hype Train level progresses (v2 — v1 withdrawn 2026-01-22) |
channel.hype_train.end | 2 | channel:read:hype_train | broadcaster_user_id | Hype Train ends (v2 — v1 withdrawn 2026-01-22) |
channel.follow | 2 | moderator:read:followers | broadcaster_user_id, moderator_user_id | New follower — subscribed when a follow channel-event rule is enabled; moderator_user_id = broadcaster_user_id |
channel.subscribe | 1 | channel:read:subscriptions | broadcaster_user_id | New subscription |
channel.subscription.gift | 1 | channel:read:subscriptions | broadcaster_user_id | Gifted subscriptions |
channel.subscription.message | 1 | channel:read:subscriptions | broadcaster_user_id | Resub with share message |
channel.cheer | 1 | bits:read | broadcaster_user_id | Bits cheered |
channel.bits.use | 1 | bits:read | broadcaster_user_id | Power-up bits — bits counters and bits wheelspin thresholds, same as a cheer (cheer-type events are ignored, channel.cheer owns those) |
channel.poll.begin | 1 | channel:read:polls | broadcaster_user_id | Poll starts |
channel.poll.end | 1 | channel:read:polls | broadcaster_user_id | Poll ends |
channel.prediction.begin | 1 | channel:read:predictions | broadcaster_user_id | Prediction starts |
channel.prediction.progress | 1 | channel:read:predictions | broadcaster_user_id | Prediction receives new entries |
channel.prediction.lock | 1 | channel:read:predictions | broadcaster_user_id | Prediction locked for voting |
channel.prediction.end | 1 | channel:read:predictions | broadcaster_user_id | Prediction resolved |
channel.chat.message | 1 | user:read:chat, user:bot, channel:bot | broadcaster_user_id, user_id | Chat messages — used by VIP Commands and Auto Shoutouts; subscribed when vip_enabled OR auto_shoutout_enabled |
automod.message.hold | 2 | moderator:manage:automod | broadcaster_user_id, moderator_user_id | AutoMod holds a message for review |
automod.message.update | 2 | moderator:manage:automod | broadcaster_user_id, moderator_user_id | Held AutoMod message approved or denied |
automod.settings.update | 1 | moderator:read:automod_settings | broadcaster_user_id, moderator_user_id | AutoMod settings changed |
automod.terms.update | 1 | moderator:read:blocked_terms | broadcaster_user_id, moderator_user_id | AutoMod blocked/permitted terms updated |
channel.chat.message_delete | 1 | user:read:chat, user:bot, channel:bot | broadcaster_user_id, user_id | A chat message was deleted |
channel.chat.user_message_hold | 1 | user:read:chat, user:bot, channel:bot | broadcaster_user_id, user_id | A user message was held by AutoMod |
channel.chat.user_message_update | 1 | user:read:chat, user:bot, channel:bot | broadcaster_user_id, user_id | Held user message approved or denied |
channel.moderate | 2 | moderator:read:blocked_terms, moderator:read:chat_settings, moderator:read:unban_requests, moderator:read:banned_users, moderator:read:chat_messages, moderator:read:warnings, moderator:read:moderators, moderator:read:vips | broadcaster_user_id, moderator_user_id | Moderation action taken (ban, timeout, etc.) — Twitch checks every listed scope against moderator_user_id |
channel.warning.acknowledge | 1 | moderator:read:warnings | broadcaster_user_id, moderator_user_id | A user acknowledged a warning |
channel.warning.send | 1 | moderator:read:warnings | broadcaster_user_id, moderator_user_id | A warning was sent to a user |
channel.suspicious_user.message | 1 | moderator:read:suspicious_users | broadcaster_user_id, moderator_user_id | A suspicious user sent a message |
channel.suspicious_user.update | 1 | moderator:read:suspicious_users | broadcaster_user_id, moderator_user_id | Suspicious user status updated |
Share Feedback
Need help or want to chat? Join our Discord to get support, report bugs, and talk with other streamers.0 / 1000
Privacy
▸ What we're sending
| Module | — |
| Page | — |
| Browser | — |
| Screen | — |
| Channel | anonymous |
| Submitted | — |