--- title: "Configure an Internal Reward Redeem Option" slug: "configure-internal-rewards" updated: 2026-09-24T12:54:50Z published: 2026-09-24T12:54:50Z canonical: "docs.xtremepush.com/configure-internal-rewards" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt > Use this file to discover all available pages before exploring further. # Configure an Internal Reward Redeem Option An internal reward redeem option lets a user exchange tokens for a reward you configure, without leaving Xtremepush. Unlike Prizeout, physical, digital, and currency redeem options, Xtremepush fulfils the reward itself. There is no third-party integration and no webhook to your own backend. > [!TIP] > **Use This Option to Control Your Reward Budget** > > Reward rules, quests, and other loyalty features can reward users automatically as they play, which makes it easy to give away more than you intended if the rules aren't carefully capped. > > > > An internal reward redeem option puts a token cost in front of the reward instead, so a user has to spend a specific number of tokens to receive it. This gives you tighter control over how much you give away, compared to rewarding users automatically through reward rules or quests. > > > > Use this option if you want a hard limit on what a specific reward costs you, rather than relying on reward rule or quest limits to keep it in check. ## What You Can Give as an Internal Reward A **Reward Bundle** can contain any reward type you can also configure for reward rules, quests, perks, achievements, and levels. See [Loyalty Reward Types](/documentation/docs/loyalty-reward-types) for the full reference. The available types are: - **Tokens**: Give the user more tokens. - **Quests**: Unlock a quest for the user to complete. - **Game Element**: Change a specific user attribute, for example updating a stat or a balance. - **External**: Send the reward to another system using a webhook, for the same reasons you'd use a webhook on a physical, digital, or currency redeem option. - **Promotions**: Grant a bonus directly from your bonus engine, for example free spins. By default, a bundle is **Simultaneous** where a user receives every reward in the bundle when they redeem. You can change this with a reward modifier instead: - **Choose Any**: Let the user pick their preferred reward, or rewards, from the bundle. Set an **Amount** to control how many they can choose. - **Give Random**: Assign a reward at random from the bundle. Set the number of **Rounds** to control how many times the random selection runs, and a **Weight** for each reward to control how likely it is to be picked. You can also combine both modifiers, for example selecting a set of rewards at random first, then letting the user choose from that narrowed set. See [Reward Modifiers](/documentation/docs/reward-modifiers) for the full reference. ## Configuration Steps To set up an internal reward redeem option, go to **Redeem > Options**, select **Create**, then select **Internal Rewards**. The sections below describe how to configure an internal reward redeem option. ### Add a Title and Description Enter a **Title** and, optionally, a **Description**. Both are displayed to the user on the loyalty widget. ### Configure the Widget Settings Under **Widget configurations**, enter the following. These values are used by the loyalty widget to show the reward to users and start the redemption process: - **Price (tokens)**: The number of tokens a user needs to redeem this reward. - **Reward Bundle**: Select **More Rewards** to add one or more rewards to the bundle, and use a reward modifier if you don't want every reward given simultaneously. See [Loyalty Reward Types](/documentation/docs/loyalty-reward-types) for the full reference of available rewards. - **Product Image URL (optional)**: Upload an image of the reward, which is then displayed on the widget. - **Group (optional)**: Give this redeem option a label, for example `Entertainment`, to group it with similar redeem options on the widget. ### Set User Requirements If you want this redeem option to only be visible to certain users, set up the user requirement here, using **Add Requirement**. By default there are no requirements, so the redeem option is visible to everyone. Once you set a user requirement, decide whether users who don't qualify should still see this redeem option. Select **Show to users who don't qualify** to display it to everyone, along with a **Not qualified message** that explains why they can't use it yet. For example, if this redeem option is only available to Level 3 players, Level 1 and Level 2 players still see it, along with a message such as *Complete more quests to unlock.* The checkbox and the message work together: the checkbox controls whether ineligible users see the option at all, and the message tells them what they need to do. You can also select **Set usage limit** to cap how many times this redeem option can be used, in total, across all users. Once the limit is reached, decide whether users should still see it: select **Show to users when option limit is 0** to keep it visible, along with a message explaining that it's no longer available. This works the same way as **Show to users who don't qualify**: the checkbox controls visibility, and the message explains the situation. ### Configure Widget Events Decide what happens when a user finishes redeeming. Set **Redirect After Completion** to a deep link or route, for example `https://deep.link.example.com/redeemCompleted, {"route": "redeemCompleted"}`. The widget then sends a `redirect` event that your application can listen for, to take the user to the page you specify.