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.
| 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 |
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 |
|---|---|---|---|---|
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 |
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 | — |