Skip to content

Widgets — Authentication & permissions

OAuth scopes

The Widgets 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.

ScopeWhy requestedWhen we ask
channel:read:subscriptionsReceives new subs, resubs and gifted subs for alerts, the subathon timer and goals, and leaderboards.At sign-in
bits:readReceives cheers and Power-ups for alerts, the subathon timer and goals, and leaderboards.At sign-in
moderator:read:followersReceives follows for follower alerts and the subathon timer.At sign-in
channel:read:redemptionsReceives channel-point redemptions for the subathon goals ladder.At sign-in
user:read:chatReceives Twitch chat notices, which carry the lifetime gift counts the gift leaderboard uses.At sign-in
user:botRequired by Twitch, with user:read:chat and channel:bot, for the chat-notice subscription.At sign-in
channel:botRequired by Twitch, with user:read:chat and user:bot, for the chat-notice subscription.At sign-in
channel:read:charityReceives charity-campaign donations for alerts, goal overlays, and the subathon timer and goals.At sign-in
channel:read:pollsReceives poll starts so a poll overlay can put its card on screen.At sign-in
channel:read:predictionsReceives prediction starts so a prediction overlay can put its card on screen.At sign-in

EventSub subscriptions

The Widgets module creates none of these subscriptions itself (“consumer only”). The platform creates them for every channel whose plan includes Widgets, and delivers each event to Widgets over its internal fan-out.

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.

TypeVersionRequiresCondition keysDescription
channel.cheer1bits:readbroadcaster_user_idBits cheered — leaderboard, subathon goals + timer, hype tally (consumer only)
channel.bits.use1bits:readbroadcaster_user_idPower-up bits — leaderboard ledger only (consumer only; cheer-type events are ignored, channel.cheer owns those)
channel.subscribe1channel:read:subscriptionsbroadcaster_user_idNew subscription — subathon goals + timer, hype tally (consumer only)
channel.subscription.message1channel:read:subscriptionsbroadcaster_user_idResub — subathon goals + timer, hype tally (consumer only)
channel.subscription.gift1channel:read:subscriptionsbroadcaster_user_idGifted subs — leaderboard, subathon goals + timer, hype tally (consumer only)
channel.chat.notification1user:read:chat, user:bot, channel:botbroadcaster_user_id, user_idChat notices — the Twitch lifetime-gift floor for the leaderboard (consumer only)
channel.follow2moderator:read:followersbroadcaster_user_id, moderator_user_idNew follow — subathon timer (consumer only)
channel.raid1—to_broadcaster_user_idIncoming raid — subathon timer (consumer only)
channel.channel_points_custom_reward_redemption.add1channel:read:redemptionsbroadcaster_user_idChannel point redemptions — subathon goals; the same broadcaster-wide row rewards and chatters contend over (consumer only)
stream.online1—broadcaster_user_idStream goes live — leaderboard stream-window marker (consumer only)
stream.offline1—broadcaster_user_idStream ends — leaderboard stream-window marker (consumer only)
channel.charity_campaign.donate1channel:read:charitybroadcaster_user_idCharity donations — subathon goals + timer, goal overlays, alerts (consumer only)
channel.poll.begin1channel:read:pollsbroadcaster_user_idA poll opened — poll overlays (consumer only)
channel.prediction.begin1channel:read:predictionsbroadcaster_user_idA prediction opened — prediction overlays (consumer only)