# Limit a selection of rewards to only allow a user to purchase one from that selection

### Introduction

Allowing your users to choose one reward from a selection is a great way to introduce gamification to your loyalty program. It encourages users to think more deeply about the options available to them and makes them more likely to complete the tasks required to unlock the rewards. Including date criteria in the logic can also encourage users to return to your program regularly.

### Configuration

{% hint style="success" %}
You need to create the rewards first in order to generate their `rewardId`. If you don't want users to be able to see the rewards prior to configuration you can turn 'Purchasable' off or set their availability to a future time and date. For more information see [Reward availability](/product/loyalty-engine/rewards-and-points/rewards/reward-availability.md).
{% endhint %}

### Audience

{% hint style="info" %}
The following audience will group users together who have not yet selected one of the rewards.
{% endhint %}

1. Navigate to Users > Audiences and click 'Create' in the top right corner.
2. Give the Audience a name and description. `AUDIENCE_JOINED` and `AUDIENCE_LEFT` events are optional. The refresh rate should be set to 'Reactive' or 'Daily Reactive'.
3. Move to the criteria tab. The criteria should be;
   * Event type is `PURCHASED_REWARD`
   * Event occurrence count is `0`
   * Profile matches JSON schema

     ```json
     {
       "$schema": "http://json-schema.org/draft-06/schema#",
       "type": "object",
       "required": [
         "rewardId"
       ],
       "properties": {
         "rewardId": {
           "enum": [
             "enter reward ID 1 here",
             "enter reward ID 2 here"
           ]
         }
       }
     }
     ```
4. Click Save.

<figure><img src="/files/Weo73LEugpQxNymZHC7F" alt=""><figcaption><p>Criteria for the "Have not purchased reward A or B" audience.</p></figcaption></figure>

### Reward

1. Navigate to Rewards > Reward List. Click 'Show' next to one of the rewards you want to limit. Click 'Edit' in the top right corner.
2. Click the 'Availability' tab. Click the 'Purchasable for audiences' drop down menu. Select the audience you made in the previous step.
3. Click Save.
4. Repeat for each reward in the selection.

<figure><img src="/files/S9yVi727IVQ8DKTaGO8C" alt=""><figcaption><p>Reward A being restricted to only users in the "Have not purchased reward A or B" audience.</p></figcaption></figure>

### Tips

* There is no limit to the number of rewards that can be included in the selection, just add their `rewardId` to the enum in the event schema.
* You can add date rules to the audience. This means that users can only select a reward from the selection once in any given period. If you're doing this ensure the audience refresh rate is set to 'Daily Reactive'. For more information about using dates in audience criteria see [Create an audience with date and time based criteria](/product/loyalty-engine/audiences/audience-tutorials/create-an-audience-with-date-and-time-based-criteria.md).

> For example adding the rule "Reported at is later than 1 month ago" would mean that users can pick one of the rewards from the selection each rolling month.&#x20;

* Configuring the 'Purchasable for audiences' option on the rewards means that they will be locked once a selection has been made. If you'd rather the rewards be hidden you can use visibility criteria instead. See [Reward availability](/product/loyalty-engine/rewards-and-points/rewards/reward-availability.md) for more information.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kbase.whitelabel-loyalty.com/product/loyalty-engine/rewards-and-points/reward-tutorials/limit-a-selection-of-rewards-to-only-allow-a-user-to-purchase-one-from-that-selection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
