> For the complete documentation index, see [llms.txt](https://help.openloyalty.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.openloyalty.io/sample-setups/sample-campaigns/11-spend-eur100-in-may-to-unlock-a-discount-coupon-and-a-tier-with-better-perks.md).

# #11 Spend €100 in May to unlock a discount coupon and a tier with better perks

## Spend €100 in May to unlock a discount coupon and a tier with better perks

### Business case

This setup helps you drive higher monthly spend during a fixed seasonal window.

It combines an instant reward with a better tier experience.

Use this setup when you want to:

* increase total member spend in a specific month
* unlock a coupon after a clear spending threshold
* move qualified members into a tier with better ongoing perks

<figure><img src="/files/uNTZYXfkSNSSzZkToOmg" alt=""><figcaption></figcaption></figure>

Use this setup to reward members who spend at least `€100` in **May**.

In this example, the member gets:

* one discount coupon reward
* a higher tier with better tier benefits

{% hint style="warning" %}
This setup combines two mechanics:

* **Tiers** track cumulative spend and move the member to the better tier
* a **Campaign** rewards the member with a coupon when the tier upgrade happens
  {% endhint %}

Use a dedicated seasonal tier set for this scenario.

This keeps the logic clear and avoids rewarding unrelated tier moves.

### Recommended setup

For this use case, use these elements:

* **Tier set condition:** Total spending
* **Threshold:** `€100`
* **Seasonal window:** May
* **Campaign trigger:** Member Tier Updated
* **Campaign effect:** Give reward
* **Main condition:** Reward only when the member moves up

{% hint style="info" %}
The coupon is issued by the campaign.

The better perks come from the tier benefits configured on the higher tier.
{% endhint %}

### Step-by-step setup

{% stepper %}
{% step %}

### Create the coupon reward

Go to **Rewards** → **Reward List** → **Add reward**.

Then:

1. Choose **Coupon** as the reward type.
2. Enter the reward name and description.
3. Set the discount value and coupon availability.
4. Set the reward to **Active**.
5. Save the reward.

Example reward:

* `May €10 discount coupon`

You will select this reward later in the campaign.

Learn more about rewards:

{% content-ref url="/pages/-MZBsgxfYxB177ii8Wzr" %}
[Rewards](/rewards-redemption/rewards.md)
{% endcontent-ref %}
{% endstep %}

{% step %}

### Create a dedicated May tier set

Go to **Tiers** and create a tier set for the seasonal promotion.

Set the tier set like this:

* **Tier set condition:** Total spending
* **Status:** Active
* **Downgrade / recalculation:** choose the option that fits your yearly cycle

Then add at least two tiers:

* **Base tier:** default level below `€100`
* **May perks tier:** unlocked from `€100`

Add the ongoing perks to the higher tier.

Examples:

* free shipping
* priority support
* better discount rate

Learn more about setting up tiers:

{% content-ref url="/pages/-MZBspk\_YeJoAJMpx6a5" %}
[Tiers](/gamification/tiers.md)
{% endcontent-ref %}
{% endstep %}

{% step %}

### Limit the promotion to May

Configure the tier logic so this setup is treated as a seasonal campaign.

Recommended options:

* start the promotion before May begins
* communicate that only May spending counts for qualification
* schedule recalculation or downgrade after the promotion period if needed

If you want the better tier to be temporary, choose a downgrade or recalculation strategy that resets the seasonal tier after the campaign window.
{% endstep %}

{% step %}

### Create the coupon campaign

Go to **Campaigns** → **Campaigns & Referral Campaigns** and add a new campaign.

Set the basic campaign details:

* **Campaign trigger:** Member Tier Updated
* **Name:** `May spend €100 - tier upgrade coupon`
* **Start date:** before May begins
* **Status:** Active

This means the campaign reacts when the member changes tier.
{% endstep %}

{% step %}

### Add the rule for the coupon reward

In the campaign rules, add a rule that rewards only upgrades.

Use this condition:

```plaintext
event.body.tierMoveUp == true
```

Then add this effect:

* **Give reward**
  * **Reward:** the coupon reward you created earlier

This rule issues the coupon when the member moves up to the better tier.

Learn more about tier upgrade triggers:

{% content-ref url="/pages/7t0H6log6wWLvnNCztux" %}
[Tier Upgrade or Downgrade](/integrations-and-data-exchange/expressions/sample-use-cases/tier-upgrade-or-downgrade.md)
{% endcontent-ref %}
{% endstep %}

{% step %}

### Add limits and launch controls

Set limits before launch.

Recommended options:

* reward the coupon only once per member
* set the campaign start date before the promotion period
* keep the campaign active only for the seasonal window

This prevents duplicate coupon issuance.
{% endstep %}

{% step %}

### Test the full flow

Run one full test before launch.

1. Create or use a test member.
2. Keep the member below the `€100` threshold.
3. Register May transactions until the member reaches `€100` total spend.
4. Confirm the member moves to the better tier.
5. Confirm the coupon reward is issued.
6. Add another transaction.
7. Confirm the coupon is not issued again if you set a one-time limit.

Also verify that the tier benefits are available after the upgrade.
{% endstep %}
{% endstepper %}

### Example configuration

Here is a simple version of this use case:

* **Promotion month:** May
* **Threshold:** `€100` total spending
* **Higher tier:** `May Silver`
* **Coupon reward:** `€10 off next purchase`
* **Campaign trigger:** Member Tier Updated
* **Campaign condition:** `event.body.tierMoveUp == true`

### Expected result

After launch, the flow looks like this:

1. A member spends in May.
2. The member reaches `€100` total spend.
3. Open Loyalty recalculates the tier.
4. The member moves to the better tier.
5. The campaign issues the discount coupon.
6. The member also gets the better tier perks.

### Troubleshooting

#### The member did not move to the better tier

Check these points:

* the tier set uses **Total spending**
* the threshold is set to `€100`
* the qualifying transactions were registered correctly
* the tier recalculation timing matches your setup

#### The tier changed, but the coupon was not issued

Check these points:

* the campaign trigger is **Member Tier Updated**
* the rule contains `event.body.tierMoveUp == true`
* the coupon reward is active
* the campaign is active during the promotion period

#### The coupon was issued more than once

Check these points:

* the campaign limitation is set per member
* test runs are not reusing the same member state
* the member is not moving between tiers multiple times in the same flow

### Best practices

* Use a dedicated seasonal tier set.
* Keep the coupon as a one-time reward.
* Make the promotion window explicit.
* Test tier recalculation before launch.

### Related articles

* [Creating Campaigns](/campaigns/campaigns/campaigns-and-referral-campaigns/creating-campaigns.md)
* [Adding Tiers](/gamification/tiers/adding-tiers.md)
* [Tiers Configuration](/gamification/tiers/tiers-configuration.md)
* [Tier Benefits](/gamification/tiers/tier-benefits.md)
* [Creating Reward](/rewards-redemption/rewards/reward-list/creating-reward.md)
* [Tier Upgrade or Downgrade](/integrations-and-data-exchange/expressions/sample-use-cases/tier-upgrade-or-downgrade.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 dynamically by asking a question.

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

```
GET https://help.openloyalty.io/sample-setups/sample-campaigns/11-spend-eur100-in-may-to-unlock-a-discount-coupon-and-a-tier-with-better-perks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
