> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/loyalty-and-rewards/points-and-ways-to-earn/set-up-product-redemption.md).

# Set up product redemption

Let customers redeem whole products with points. Set the cost, the per-customer limit, the product options they choose from, and how many units each redemption adds to the cart.

**Product Redemption** lets customers spend points on an entire product. Add one from **Loyalty Program → Points → Ways to redeem → Add way to redeem**.

<figure><img src="https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2FHTBq1hg53viRI4n0vCcn%2FScreenshot%202026-08-07%20at%204.38.54%E2%80%AFPM.png?alt=media&amp;token=4b357e19-39df-4284-8485-aa5ce65cf624" alt=""><figcaption></figcaption></figure>

#### Redemption Settings

* **Points cost**: what the reward costs, whichever product the customer picks.
* **Redemption limit per customer**: how many times each customer can redeem this reward. Set 1 for a once-per-customer perk, or raise it to let customers come back for more.
* **Storefront Card Display Name**: leave blank to use the product title, or enter a space to hide it from your storefront. Blank works best when the reward offers several products: every card labels itself with its own Shopify title. Set a name only for a single product you want to present differently.

#### Product Options

Customers can redeem their points for **any one** of the products you add here. Add multiple products to give customers choices: one points cost, their pick.

* **Search or Browse** to add products. Selection is variant-level, so you can offer the `200ml` without the `500ml`, or only the flavours you choose.
* **Qty**: how many units one redemption adds to the cart. Set Qty to 2 and a single redemption puts **two units** of that product in the customer's cart for the same points cost.

<figure><img src="https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2FfnUru1UmIQHFotVzTnn6%2FScreenshot%202026-08-07%20at%204.39.07%E2%80%AFPM.png?alt=media&amp;token=23d45a9e-af22-4a81-aadc-4c9cf37463c8" alt=""><figcaption></figcaption></figure>

* **Drag the handles** to reorder the options. This sets the order the product cards appear in on your storefront.
* Remove an option with the **×**.

Group similarly priced products under one points cost. This gives customers a clear reward with useful choice.

The **Summary** panel restates the configuration (*Redeem 500 Points for any one of 3 product options*). Set **Status** to *Active* when the reward should be live.

#### Membership tier eligibility

Leave empty to allow all customers, or select specific tiers to restrict the reward to those members only. Members only see the rewards their tier is eligible for, so this is how you build tier-exclusive product rewards or a [tag-based tier's](/loyalty-and-rewards/membership-tiers-and-referrals/tag-based-membership-tiers.md) own redemption menu.

#### Stock and sold-out rewards

Roadmap checks stock before letting customers spend points, so nobody redeems something you cannot ship.

Stock is judged **in the shopper's country**. Shopify holds inventory per location and different countries are served by different locations, so the same reward can be redeemable for one customer and sold out for another. A reward with no stock in your home country but stock in the UK shows as sold out at home and stays redeemable for UK shoppers.

When a reward offers several product options, the two levels behave differently:

* An option that is out of stock is marked in the dropdown and **cannot be selected**. The remaining options stay redeemable, so the reward keeps working.
* The reward only turns fully sold out, replacing the **Redeem** button, once **every** option on it is out of stock.

#### What a sold-out card looks like

A sold-out reward stays on the page rather than disappearing, so customers can see it exists and come back for it:

* The badge switches to **SOLD OUT** in place of the unlocked badge.
* The product image is greyed out.
* The line under the title reads **Sold out** instead of *Available to redeem*, and the points cost is dropped.
* The **Redeem** button is replaced by a disabled **Sold out** button.

<figure><img src="https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2FiN4lvOzlbFnu7ncVXYo1%2FScreenshot%202026-09-24%20at%2010.00.16%E2%80%AFPM.png?alt=media&amp;token=ca918145-f455-4b62-8ed7-0cdcf1489a74" alt=""><figcaption></figcaption></figure>

#### Sold-out wording

The wording lives with the **Product Redeemer** block settings in the loyalty widget editor, under **Sold Out State**, described there as *shown when the reward is out of stock in the shopper's country*:

* **Badge Text**: the badge on a sold-out card. `SOLD OUT` by default.
* **Sold Out Button**: replaces the Redeem button once every option is out of stock. `Sold out` by default.
* **Sold Out Option Suffix**: added to out-of-stock choices in the dropdown, which cannot be selected. `Sold out` by default.

{% hint style="info" %}
There is nothing to switch on. The stock check applies automatically to every product reward, and you only need to visit these settings to change the wording.
{% endhint %}

If a reward looks sold out when you expect it to be available, check the stock level at the location serving that country in Shopify, rather than the total inventory across all locations.

#### Where customers redeem it

Customers redeem products only through the **Product Redeemer** block on your loyalty page. Each eligible product appears with its points cost. Customers choose a variant when needed, redeem, then the product, at its configured quantity, is added to their cart.

Customize the block's badges, buttons, confirmation prompts, and card layout in [Customize the loyalty widgets](/loyalty-and-rewards/getting-started/customize-the-loyalty-widgets.md).

{% hint style="info" %}
Two layers of ordering: drag **rewards** in the Ways to redeem list to order the Product Redeemer's rewards, and drag **product options** within a reward to order the choices inside it.
{% endhint %}

#### Related guides

* [Ways to redeem points: overview](/loyalty-and-rewards/points-and-ways-to-earn/ways-to-redeem-points-overview.md)
* [Customize the loyalty widgets](/loyalty-and-rewards/getting-started/customize-the-loyalty-widgets.md)
* [Reward customers for reaching a tier](/loyalty-and-rewards/membership-tiers-and-referrals/reward-customers-for-reaching-a-tier.md)
* [The Customer Rewards storefront redeeming block](/loyalty-and-rewards/membership-tiers-and-referrals/the-customer-rewards-storefront-redeeming-block.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.roadmap.so/loyalty-and-rewards/points-and-ways-to-earn/set-up-product-redemption.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
