> ## Documentation Index
> Fetch the complete documentation index at: https://juo.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Upsells for subscriptions

> Decide what to offer subscribers and where, then set up upsells in the Customer Portal, Klaviyo emails and SMS that add a product to the next order in one click.

| | |
| - | - |
| **Who it's for** | Subscription brands with more than one product subscribers could use |
| **Goal** | Raise average order value by adding products to orders subscribers already receive |
| **Primary metric** | Upsell attach rate: the share of renewal orders with an added product |
| **Supporting metrics** | Average order value, share of add-ons that become recurring, retention of subscribers who add products |

## Why it matters

Every renewal is a purchase from a customer you already know, with no acquisition cost and the shipping already paid for. Adding one product to that order is often the cheapest revenue a subscription brand can earn.

Upsells also help retention. A subscriber who tries more of your range has more reasons to stay, and an order that fits their needs better is less likely to be skipped.

## Plan the offer

### Where to offer

Use the same offer in two places. Subscribers who open the portal see it there, and everyone else sees it in the message before their renewal.

| Channel | When subscribers see it | How they add the product |
| - | - | - |
| **Customer Portal** | Whenever they manage their subscription | One click on the offer, no checkout |
| **Renewal reminder email**, for example in Klaviyo | A few days before each renewal | One click in the email, no login |
| **SMS or messaging apps** | Same moment as the email | A direct link for one product |

The renewal reminder reaches every subscriber, including those who never open the portal, so it usually brings most of the added products. The portal catches subscribers who are already changing their order.

### One-time add-on or recurring item

| | One-time add-on | Recurring item |
| - | - | - |
| **What it is** | Added to the next order only | Becomes part of every order |
| **Best for** | Trying new products, seasonal items, gifts, treats | Products used up at the same pace as the subscription |
| **Effect** | Lifts the next order | Raises the value of every future order |

Start with one-time add-ons. They're an easy yes, because the subscriber isn't committing to anything. When a subscriber adds the same product more than once, invite them to make it part of their regular order.

### What to offer

* **Complementary products** that are used together with what they already receive.
* **Consumables** that run out, such as refills or accessories.
* **New launches and samples**, so subscribers discover the rest of your range.
* **Seasonal or limited items**, where scarcity gives a reason to add now.

Offer a price subscribers can't get elsewhere. The offer should feel like a perk of subscribing, not like an ad.

## Set it up in Juo

One [upsell campaign](https://juo.io/docs/upsells.md) feeds every channel. You choose the products, price, dates and who sees it once. Juo shows it in the Customer Portal and sends it with your email events.

Before you start:

* Your [Customer Portal](https://juo.io/docs/customer-portal.md) is live and linked from your store.
* For emails, the [Klaviyo integration](https://juo.io/docs/klaviyo-integration.md) is connected.

### Create the upsell campaign

1. Go to **Experiences → Upsells → Add Upsell**.
2. Enter a **Campaign name**.
3. Set the **Schedule**: always available, or between a start and end date.
4. Optionally set a **Discount**. Only customers who add the product through the upsell get it.
5. Optionally set a **Usage limit** and limit **Customer eligibility** to specific segments or to customers subscribed to a specific product.
6. Select **Save**, then add the **Products** you want to offer.
7. Turn on **Active**.

You can run several upsell campaigns with different settings at the same time. See [Upsells](https://juo.io/docs/upsells.md).

### Show it in the Customer Portal

Active upsells appear in the Customer Portal automatically, following their schedule. Subscribers who add a product are charged for it with their next renewal and receive it in the same delivery.

If you use the block-based Customer Portal, open the [Editor](https://juo.io/docs/editor.md) to choose where the **Upsell** block sits. Near the top, just after the renewal summary, works best. Use **Preview customer** to check the offer with a real subscriber.

To test it, log in to the portal as a test subscriber, add the product and check that it appears in the upcoming order.

### Add it to your Klaviyo emails

The **Add Product** quick action lets subscribers add an upsell product to their next renewal from an email, without logging in.

#### Set up the flow

1. In Klaviyo, create a flow (or open your existing renewal reminder flow) triggered by **Upcoming Renewal Subscription**. Juo sends this event 3 days before each renewal.
2. Add an email with no time delay before it. Quick action links expire after 72 hours, so send the email as soon as the event arrives.
3. Add an **HTML** block and paste the template below.
4. Preview the email with a profile that has a recent Upcoming Renewal Subscription event, then turn the flow on.

#### The products in the event

Juo sends the upsell products with these Klaviyo events, among others:

* **Upcoming Renewal Subscription**, the best moment for an add-on
* **Billed Subscription**
* **Started Subscription**

The products are in the `event.QuickActions.Products` array. Each product has `Title`, `ImageUrl`, `CurrentPrice`, `BasePrice`, `AddProductUrl`, `VariantId` and `AvailableForSale`.

Paste this template into an HTML block in the email for your upcoming renewal flow. It lists every in-stock upsell product with its image and price, shows the original price crossed out when there's a discount, and adds the product in one click.

```html theme={"system"}
{% if event.QuickActions.Products|length > 0 %}
<table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="font-family: Arial, sans-serif; color: #1a1a1a;">
  <tr>
    <td style="padding: 24px; text-align: center;">
      <h2 style="margin: 0 0 8px; font-size: 22px;">Add something to your next delivery</h2>
      <p style="margin: 0; font-size: 15px; color: #555;">Subscriber prices, shipped with your next order.</p>
    </td>
  </tr>
  {% for product in event.QuickActions.Products %}
  {% if product.AvailableForSale %}
  <tr>
    <td style="padding: 8px 24px;">
      <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%" style="border: 1px solid #eee; border-radius: 8px;">
        <tr>
          <td style="width: 96px; padding: 12px;">
            <img src="{{ product.ImageUrl|default:'' }}" alt="{{ product.Title|default:'Product' }}" width="96" style="display: block; border-radius: 6px;">
          </td>
          <td style="padding: 12px; vertical-align: top;">
            <p style="margin: 0; font-weight: bold; font-size: 16px;">{{ product.Title }}</p>
            {% if product.CurrentPrice < product.BasePrice %}
            <p style="margin: 6px 0 0;">
              <span style="color: #999; text-decoration: line-through;">{{ product.BasePrice }}</span>
              <span style="font-weight: bold;">{{ product.CurrentPrice }}</span>
            </p>
            {% else %}
            <p style="margin: 6px 0 0; font-weight: bold;">{{ product.CurrentPrice }}</p>
            {% endif %}
            <a href="{{ product.AddProductUrl }}" style="display: inline-block; margin-top: 10px; padding: 10px 16px; background-color: #3727F4; color: #ffffff; text-decoration: none; border-radius: 6px; font-weight: bold;">Add to next delivery</a>
          </td>
        </tr>
      </table>
    </td>
  </tr>
  {% endif %}
  {% endfor %}
</table>
{% endif %}
```

If there are no upsell products for a subscriber, the block doesn't show. Preview the email with a real subscriber profile in Klaviyo before you send it.

### Other email platforms

With Customer.io, link to the portal's add products page with the `AddProducts` [quick link](https://juo.io/docs/quick-actions-cio.md). Subscribers see your upsell offers there and add them in one click.

### Add it to SMS or messaging apps

The add product link is a plain URL, so you can use it in any channel that receives Juo events, such as Klaviyo SMS. Keep the message to one product:

```text theme={"system"}
Your next delivery ships soon. Add {{ event.QuickActions.Products.0.Title }} at your subscriber price: {{ event.QuickActions.Products.0.AddProductUrl }}
```

> [!NOTE]
>
> Quick links and actions expire after 72 hours. Send them in messages that go out shortly before the subscriber is likely to act, such as the renewal reminder.

## Guardrails

* **Keep it short.** Two or three well-chosen products convert better than a full catalog.
* **Limit how often a subscriber sees the same offer**, and how many times they can claim a special price.
* **Check stock** before you promote an item to every subscriber.
* **Make it easy to remove.** A subscriber who added something by mistake should be able to take it out before the order is charged.

## How to measure it

* **Attach rate** per offer and per channel: portal, email, messaging.
* **Average order value** of renewal orders before and after you start offering add-ons.
* **Repeat adds and conversions to recurring items.** They show which products belong in the regular order.
* **Retention** of subscribers who add products compared with those who don't.

> [!TIP]
>
> An upsell can also be a gift: a free or heavily discounted product subscribers claim themselves. See [Gifts for subscribers](https://juo.io/docs/gifts.md).

## Related

* [Gifts for subscribers](https://juo.io/docs/gifts.md)
* [Sales and seasonal campaigns](https://juo.io/docs/seasonal-campaigns.md)
* [VIP rewards](https://juo.io/docs/vip-rewards.md)
* [Upsells](https://juo.io/docs/upsells.md) and [Quick actions](https://juo.io/docs/quick-actions.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.