# Mixed milestone

{% hint style="info" %}
This feature is available for **Advanced** and **Ultimate** plans
{% endhint %}

### What is "Mixed Milestone"?

Mixed Milestone lets you build a **sequential customer journey** where each step can have a different action type. Instead of a single repeated action (e.g., "place 5 orders"), you can design experiences like:

> "Place 3 orders → Write 2 reviews → Refer 1 friend"

Customers must complete each step **in order** before moving to the next. This creates a sense of progress, enforces healthy engagement habits, and drives behaviors that matter to your business.

### Why use Mixed Milestone?

| Problem with single-type milestones        | How Mixed Milestone solves it            |
| ------------------------------------------ | ---------------------------------------- |
| Customers can skip steps or game the order | Enforces sequential completion           |
| 3 separate programs feel disconnected      | One unified journey on the storefront    |
| No sense of "where am I in the journey?"   | Clear step-by-step progress indicator    |
| Difficult to guide post-purchase behavior  | Design: buy → review → refer → buy again |

### How to set up a Mixed Milestone

{% embed url="<https://youtu.be/-fCFzfL8gCI>" %}

{% stepper %}
{% step %}
**Go to Milestone**

From the Joy admin, choose **Reward programs** → **Milestones** → click **Add rule**
{% endstep %}

{% step %}
**Select "Mixed milestone" as the Type**

In the **Type** dropdown, select **Mixed milestone**.

You'll see a description: *"Create a journey with multiple action types. Customers complete each step sequentially to earn rewards."*
{% endstep %}

{% step %}
**Set up Rule Information**

Fill in:

* **Rule name** — e.g., "Loyalty Journey"
* **Start date / End date** — optional date range for the program
  {% endstep %}

{% step %}
**Add milestone steps**

Each step in a Mixed milestone has its own action type. Click **Add milestone** to add steps.

For each step, configure:

1. **Step type** — choose from:
   * Number of orders
   * Amount spent
   * Earned points
   * Number of reviews
   * Number of referrals
   * Subscription cycles
2. **Target value** — how many of the action is required (e.g., 3 orders)
3. **Step description** — shown to customers on the storefront (e.g., "Place your 3rd order")
4. **Reward** — what the customer earns when completing this step (points, discount, free gift, store credit, free shipping)
5. **Reward logic** — choose how rewards are given:
   * **Grant all rewards** — customer receives all rewards for this step automatically
   * **Customer picks** — customer chooses from the available rewards (set how many they can pick)

{% hint style="info" %}
You can **drag and drop** steps to reorder the journey. The order matters — customers must complete steps from top to bottom.
{% endhint %}
{% endstep %}

{% step %}
**Configure order requirements (if applicable)**

If any step uses **Number of orders** or **Amount spent**, you can set:

* **Minimum order requirement** — optional minimum spend or quantity per order
* **Anti-cheat** — prevent customers from gaming the system with quick refunds
  {% endstep %}

{% step %}
**Save and activate**

Click **Save** to apply your changes, then **Turn on** to activate the program.

Customers will see the journey on your storefront with their current progress highlighted.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**Restrict review steps to specific products or collections** — When a step uses **Number of reviews**, you can limit which products count toward the step (all products, selected products, selected collections, or all except certain collections). This mirrors the [Write review program scope](/reward-programs/earning-programs/write-review.md#review-program-scope).
{% endhint %}

### Mixed milestone step types

| Step type           | Example target    | Notes                                                                                                  |
| ------------------- | ----------------- | ------------------------------------------------------------------------------------------------------ |
| Number of orders    | 3rd order         | Requires minimum order settings if enabled                                                             |
| Amount spent        | $500 total        | Cumulative across orders                                                                               |
| Earned points       | 1,000 points      | Based on total earned points                                                                           |
| Number of reviews   | 2 reviews         | Product reviews submitted                                                                              |
| Number of referrals | 1 referral        | Successful referrals who make a purchase                                                               |
| Subscription cycles | 3rd billing cycle | Requires Shopify Flow connected. [Learn more →](/reward-programs/milestone/subscription-milestones.md) |

### Reward options per step

Each step can offer one or more rewards:

| Reward type             | Description                                 |
| ----------------------- | ------------------------------------------- |
| **Points**              | Bonus points added to customer balance      |
| **Store Credit**        | Cash credit applied to the customer account |
| **Discount Amount**     | Fixed dollar discount on next order         |
| **Discount Percentage** | Percentage off on next order                |
| **Free Shipping**       | Free shipping on next order                 |
| **Free Gift**           | A specific product added to the cart        |

{% hint style="info" %}
If you select **Store Credit** as a reward for any step, you'll be prompted to grant store credit access permissions. This is a one-time grant that applies across all programs.
{% endhint %}

### Tips for designing effective journeys

* **Start easy** — put lower-friction actions first (orders before reviews)
* **Increase value as steps progress** — bigger rewards for harder steps
* **Keep it short** — 3–5 steps is ideal; too many steps reduce completion
* **Use descriptions** — clear step descriptions help customers understand what to do next
* **Test from the customer's view** — use the Joy widget preview to see how the journey looks on your storefront

### Need help?

Contact us via the live chat widget in your Joy admin, or email us at <hi@joy.so>.


---

# 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://help.joy.so/reward-programs/milestone/mixed-milestone.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.
