Skip to content

Numbers — Authentication & permissions

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.

Scope Why requested When we ask
user:read:email Identifies the account owner and is used for account linking. At sign-in
channel:read:goals Reads active channel goals for the Numbers analytics module. At sign-in
moderator:read:followers Reads follower count and individual follow events. At sign-in
channel:read:subscriptions Checks subscriber status for subscriber-gated features. At sign-in
bits:read Reads bits cheer events and leaderboard data. At sign-in
channel:read:hype_train Reads Hype Train events for channel event rules. At sign-in
channel:read:charity Read your Twitch Charity campaign and its donations for goals, alerts, and analytics. At sign-in
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
channel:bot Allows the account to send chat messages as a bot in this channel. At sign-in

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
stream.online 1 — broadcaster_user_id Stream goes live — opens a new stream session
stream.offline 1 — broadcaster_user_id Stream ends — closes the active stream session
channel.update 2 — broadcaster_user_id Title/category changed — metadata-only snapshot between the minutely Get Streams polls
channel.goal.begin 1 channel:read:goals broadcaster_user_id Channel goal started
channel.goal.progress 1 channel:read:goals broadcaster_user_id Channel goal progress updated
channel.goal.end 1 channel:read:goals broadcaster_user_id Channel goal ended
channel.charity_campaign.start 1 channel:read:charity broadcaster_user_id Charity campaign started — opens the campaign row
channel.charity_campaign.progress 1 channel:read:charity broadcaster_user_id Charity campaign progress — authoritative current_amount, busts the campaign cache
channel.charity_campaign.donate 1 channel:read:charity broadcaster_user_id A charity donation — the only source that drives behaviour
channel.charity_campaign.stop 1 channel:read:charity broadcaster_user_id Charity campaign ended — last chance to snapshot the final total
channel.follow 2 moderator:read:followers broadcaster_user_id, moderator_user_id New follow — moderator_user_id = broadcaster_user_id
channel.subscribe 1 channel:read:subscriptions broadcaster_user_id New subscription (non-gift)
channel.subscription.gift 1 channel:read:subscriptions broadcaster_user_id Gifted subscriptions
channel.subscription.message 1 channel:read:subscriptions broadcaster_user_id Resub messages with share text
channel.cheer 1 bits:read broadcaster_user_id Bits cheered in channel
channel.bits.use 1 bits:read broadcaster_user_id Power-up bits — counted into the bits metric alongside cheers (cheer-type events are ignored, channel.cheer owns those)
channel.chat.notification 1 user:read:chat, user:bot, channel:bot broadcaster_user_id, user_id Chat notices (sub/resub/upgrades) — Plus Program prime + tier evidence
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.raid 1 — to_broadcaster_user_id Incoming raid
channel.raid 1 — from_broadcaster_user_id Outgoing raid