Skip to content

Numbers — Authentication & permissions

OAuth scopes

The Numbers 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
user:read:emailIdentifies the account owner and is used for account linking.At sign-in
channel:read:goalsReads active channel goals for the Numbers analytics module.At sign-in
moderator:read:followersReads follower count and individual follow events.At sign-in
channel:read:subscriptionsChecks subscriber status for subscriber-gated features.At sign-in
bits:readReads bits cheer events and leaderboard data.At sign-in
channel:read:hype_trainReads Hype Train events for channel event rules.At sign-in
channel:read:charityRead your Twitch Charity campaign and its donations for goals, alerts, and analytics.At sign-in
user:read:chatListens to chat messages via EventSub.At sign-in
user:botMarks the account as a bot so Twitch applies bot rate limits.At sign-in
channel:botAllows the account to send chat messages as a bot in this channel.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.

TypeVersionRequiresCondition keysDescription
stream.online1broadcaster_user_idStream goes live — opens a new stream session
stream.offline1broadcaster_user_idStream ends — closes the active stream session
channel.update2broadcaster_user_idTitle/category changed — metadata-only snapshot between the minutely Get Streams polls
channel.goal.begin1channel:read:goalsbroadcaster_user_idChannel goal started
channel.goal.progress1channel:read:goalsbroadcaster_user_idChannel goal progress updated
channel.goal.end1channel:read:goalsbroadcaster_user_idChannel goal ended
channel.charity_campaign.start1channel:read:charitybroadcaster_user_idCharity campaign started — opens the campaign row
channel.charity_campaign.progress1channel:read:charitybroadcaster_user_idCharity campaign progress — authoritative current_amount, busts the campaign cache
channel.charity_campaign.donate1channel:read:charitybroadcaster_user_idA charity donation — the only source that drives behaviour
channel.charity_campaign.stop1channel:read:charitybroadcaster_user_idCharity campaign ended — last chance to snapshot the final total
channel.follow2moderator:read:followersbroadcaster_user_id, moderator_user_idNew follow — moderator_user_id = broadcaster_user_id
channel.subscribe1channel:read:subscriptionsbroadcaster_user_idNew subscription (non-gift)
channel.subscription.gift1channel:read:subscriptionsbroadcaster_user_idGifted subscriptions
channel.subscription.message1channel:read:subscriptionsbroadcaster_user_idResub messages with share text
channel.cheer1bits:readbroadcaster_user_idBits cheered in channel
channel.bits.use1bits:readbroadcaster_user_idPower-up bits — counted into the bits metric alongside cheers (cheer-type events are ignored, channel.cheer owns those)
channel.chat.notification1user:read:chat, user:bot, channel:botbroadcaster_user_id, user_idChat notices (sub/resub/upgrades) — Plus Program prime + tier evidence
channel.hype_train.begin2channel:read:hype_trainbroadcaster_user_idHype Train starts (v2 — v1 withdrawn 2026-01-22)
channel.hype_train.progress2channel:read:hype_trainbroadcaster_user_idHype Train level progresses (v2 — v1 withdrawn 2026-01-22)
channel.hype_train.end2channel:read:hype_trainbroadcaster_user_idHype Train ends (v2 — v1 withdrawn 2026-01-22)
channel.raid1to_broadcaster_user_idIncoming raid
channel.raid1from_broadcaster_user_idOutgoing raid