# Respond when a viewer redeems a reward

Point a flow at one of your Twitch rewards, answer it in chat, and decide whether the points are kept.

Updated 20 September 2026

## Before you start

Rewards are made on Twitch, in your channel’s **Channel Points → Manage Rewards**. Bloopbot does not create them: it watches the ones you already have and does something when one is redeemed. Keep your channel connected on [Links](https://bloopbot.com/docs/permissions-and-cooldowns) so Bloopbot can read the list.

Twitch Channel Points are not the same as Bloopbot loyalty points. Viewers spend Twitch Channel Points on a reward; Bloopbot loyalty points are the separate balance on the [Loyalty page](https://bloopbot.com/docs/loyalty-and-regulars).

## 1. Start a flow that watches a reward

1. Open **Flows** and choose **+ New flow**, then **Start blank**.
2. In **Add a node**, search for `reward` and add **On a reward redeemed**. This is the trigger: it decides which flows start when someone spends points.
3. Give the flow a name you will recognise later, such as “Hydrate alert”.

The trigger node is where the reward is chosen. Everything after it happens because of that redemption.

## 2. Pick the reward

Select the trigger and open its **Reward** field. Bloopbot lists the rewards your channel has, with what each one costs, so you pick from what actually exists instead of typing. Choose yours and save.

- The name is what the flow matches on, so a reward renamed on Twitch stops matching. The field keeps showing the old name marked **(not on Twitch now)** — pick the new one to repair the flow.
- A saved reward that is no longer on Twitch stays selectable, so opening a flow never silently repoints it at a different reward.
- Leave the field on **Any reward** to run for every reward your channel has — useful for a log or a thank-you.
- If the list is not there the field says why, and you can type the reward’s name exactly as it appears on Twitch. A channel with no rewards yet is told to make one on Twitch; a channel Bloopbot is not allowed to read is not sent anywhere it cannot fix.

## 3. Say something back

Add a **Send a chat message** action and connect it to the trigger’s **next** output. The **Insert…** menu on that action offers what the redemption carried:

| Token | What it says |
| --- | --- |
| `$(user)` | Who redeemed it |
| `$(reward)` | The reward’s name |
| `$(cost)` | What it cost in Channel Points |
| `$(query)` | The text the viewer typed, for rewards that ask for it |

For example:

```
Thanks for the $(reward), $(user)!
```

> **Not every reward asks for text**
>
> A reward only carries `$(query)` when it is set up on Twitch to ask the viewer for a message. On the others that token comes out empty, so leave it out of the reply.

## 4. Keep or refund the points

Add a **Fulfil or refund reward** action and connect it after your reply. In **Mark the redemption as**, choose **Fulfilled** to leave the points spent, or **Cancelled (refund the points)** to give them back. Both choices usually belong in the same flow on different branches: keep it when everything went as expected, refund it when it did not — [screening the typed-in text](https://bloopbot.com/docs/text-screening) is the worked example.

> **Twitch does not let Bloopbot complete a redemption today**
>
> Marking a redemption fulfilled or refunded is something Twitch allows only for a reward the same Bloopbot created — and Bloopbot does not create rewards, so in practice no reward qualifies. Every reward comes from your own Twitch dashboard. If you add this step anyway, Twitch refuses it, the run log carries the refusal, and the flow shows under **Needs attention**; the redemption itself waits in your Twitch redemptions queue for you to action there. For a reward that does not need reviewing, switch on **Skip Reward Queue** on Twitch instead — but then leave this step out of the flow, because Twitch has already finished the redemption and the step would fail. Everything else in this guide — starting a flow, replying, reading what the viewer typed — works for every reward.

## Check it works

1. Press **Save**, then **Test fire**. The dry run uses a realistic example redemption — “Hydrate!” by Thirstygamer — so the branches your conditions check take a real path.
2. Expand the **Run log** and confirm which nodes ran and what each decided. Nothing here reaches Twitch: a test fire never fulfils or refunds a real redemption and never spends real points.
3. Redeem the reward yourself in Twitch to confirm the live path. The flow’s row on Flows shows when it last ran and how it ended.

> **A dry run is not a live check**
>
> A green test fire proves the wiring, not the connection. The real redemption is the only thing that proves your channel and permissions are working.

## Troubleshooting

- Nothing happened when the reward was redeemed: the flow is paused, the reward was renamed on Twitch since you picked it (the field shows it as **not on Twitch now**), or another flow already handles that reward — check **Needs attention** on Flows for what stopped.
- Every reward starts the flow: the **Reward** field is on **Any reward**.
- The points are not refunded, or the redemption sits in your Twitch queue: that is the step 4 limitation — Twitch will not let Bloopbot complete a redemption for a reward you made yourself, so action it in Twitch, or use **Skip Reward Queue** and take the step out of the flow.
- The list is missing from the **Reward** field: the field says which case it is. If it offers you the Links page, reconnecting Twitch there and reloading brings the list back. Typing the exact name works either way.
