Reward redemption is where viewers spend the points they've accumulated. You define the rewards, their price and their limits; viewers redeem them from chat or the public page, and every redemption is logged.
What it solves
Points that can only be accumulated and never spent lose their meaning fast — once the number is large, adding more stops feeling like anything. Rewards give points an exit: priority on a song request, picking the next game, a handwritten thank-you note — any of these can become something a viewer buys with points. Without an exit, none of the earning matters.
Getting started
- Enable the Channel points module first (rewards are built on top of it).
- Create your first reward: a name and how many points it costs.
- Optionally set a
per-viewer limitand acooldown. - For a nicer look, pick an icon and background colour, or point it at a custom image URL.
What happens on redemption
A reward can simply notify you, or it can carry effects directly — grant points, fire an on-screen alert, throw an object, add marathon time, and so on. If you'd rather approve each one yourself, mark the reward as requiring confirmation: redemptions land in a pending queue and you approve or reject them. Rejecting refunds the points.
Common misconceptions
- This spends ChiwaBots points, not Twitch channel points. The two are separate. You can also bind a Twitch custom reward as a trigger, but that's a different path.
- The cooldown slider stopping at 300 seconds doesn't mean 300 is the maximum. The slider is sized for common values; type a larger number in the field next to it — up to 24 hours.
- A limit of 0 means "unlimited", not "cannot redeem". This is the convention for every numeric field on the site, cooldowns included.
- Disabling a reward hides it from viewers entirely. It isn't "visible but unavailable" — it disappears from the list and the public page.
- Custom images must be https URLs. An http image simply won't render; when in doubt the built-in icons look more consistent anyway.
Settings
The text below is taken from the in-app help, so it stays in sync with the actual interface.
| Setting | What it does |
|---|---|
| List this reward | When off, viewers can't see or redeem it. |
| Appearance | Tile artwork on the public page and viewer panel: a preset icon with a background color, or a custom image. |
| Unlimited stock | No quantity limit — always redeemable. |
| Per-viewer limit | 0 = unlimited; total redemptions allowed per viewer. |
| Global cooldown (sec) | Cools down for the whole channel after any redemption. |
| Personal cooldown (sec) | Cooldown for the same viewer. |
| Only while live | Can't be redeemed while the stream is offline. |
| Custom redeem command | Optional; gives this reward its own command in addition to !redeem name. |
| Seconds (±) | Adds or subtracts from the marathon countdown. |
| Require streamer approval | When on, redemptions wait in the queue until you approve them — effects run only on approval; rejecting refunds the points. |
| Points change | Positive grants points, negative deducts. |
| Duration (s) | 0 = use style default. |
| Read aloud (TTS) | Reads the text using the alert's voice settings. |
| Items | Empty = random from all enabled items. |
| Delay (ms) | 0 = use widget default. |
| Factor | Applied to the remaining time; no effect once it has hit zero. |
Chat commands
These are the default command names; they can be renamed or given aliases in the dashboard.
!shop— List the rewards available to redeem.!redeem— Redeem a reward with channel points (!redeem name).
Other notes
- Create your first reward for viewers to redeem with points.
- Only https image URLs are supported.
- The slider goes up to 300s; use the number field for longer values (max 86400s / 24 hours).
- Viewers can browse the reward list on the public page.
Other settings
These settings have no additional help text in the dashboard; only their names are listed here.
- Requires the channel points module to be enabled for redemptions to take effect.
- Enable channel points
- Failed to toggle
- Over the plan limit — inactive
- Move up
- Move down
- Add reward
- No rewards yet
- Open page
- (untitled)
- None
- Delete failed
- Basics
- Icon
- Background color
- Reset to default
- Choose image
- Remove image
- Image URL must start with https
- Points & stock
- Limits
- Commands
- Public page
- Name
- Description
- Points
- Stock
- Role restriction
- Custom success message
- Permanent VIP
- Days to keep
- Wheel
- Giveaway
- Tickets
- All
- Pending
- Completed
- Failed
- Refunded
- Fulfill
- Refund
- No redemptions yet.
- Pending
- Points were automatically returned
- Clear selection
- Redemption messages
- Default:
- Restore default
- Redemption success announcement
- Pending announcement
- Not enough points
- Out of stock
- Per-viewer limit reached
- On cooldown
- Role not eligible
- Refund announcement
- !shop list header
- Announced when a viewer redeems successfully.
- Announced when a redemption enters the pending queue.
- Replied when a viewer doesn't have enough points to redeem.
- Replied when a reward is sold out.
- Replied when a viewer hits this reward's per-viewer limit.
- Replied while the global or personal cooldown is active.
- Replied when the viewer's role doesn't meet this reward's restriction.
- Announced on refund; leave empty = no announcement, not sent by default.
- Header line shown at the start of the !shop item list.
- Resolved records (completed / failed / refunded) are kept for 90 days; pending redemptions are never auto-deleted.
- Go to command settings
- Copy link
- Copied
- Reward name
- Points cost
- Remaining stock
- Viewer balance
- Points name
- Channel points ±
- Giveaway tickets
- Spin the wheel
- Marathon
- Grant VIP
- Approval
- Actions
- Add action
- Delay (s)
- Command
- Command
- Run as
- Arguments
- Style
- Title
- Subtitle
- No alert box styles yet.
- All (random)
- Count
- Min force
- Max force
- Spawn side
- Throwing is off — this effect won't run.
- Save failed
- ± Add/subtract
- × Multiply
- ÷ Divide
- Points were NOT auto-refunded (part of the reward was already delivered) — refund manually if appropriate.
