Skip to main content
This guide is the complete walkthrough for Subscription Upsell: offering a customer a brand-new recurring subscription right after they complete checkout on a one-time order. It covers the full setup flow, the Shopify platform limitations every post-purchase app inherits, what the customer sees, fulfillment, testing, and troubleshooting.
Working with subscriptions in post-purchase? Aftersell has three subscription-adjacent features, and the right one depends on whether the customer’s order already contains a subscription:
  • Subscription Upsell (this guide). Add a new subscription line item to a one-time order. The customer keeps their one-time purchase and gets a new recurring subscription on top.
  • Subscription Upgrade. Modify a customer’s existing subscription after checkout (change frequency, swap product, or both).
  • Replacement Upsell. Swap a one-time product in the order for another product. The replacement can be a subscription version of the same product, a different one-time product, or a different variant or quantity. Replacement Upsell cannot operate on a subscription line, if the order already contains a subscription, use Subscription Upgrade instead.
Subscription Upsell is the right choice when the customer has not yet bought a subscription in this order. If they already have one, you cannot add another, see Shopify platform limitations.
One subscription per order. Shopify does not allow a post-purchase upsell to add a subscription to an order that already contains one. This is a Shopify rule that applies to every post-purchase app, and it is the single biggest gotcha when building subscription funnels. If your funnel has more than one subscription offer, only the first accepted one will land, the rest will silently skip. See Shopify platform limitations for the full set of rules and recommended trigger setup.

What is a Subscription Upsell?

Subscription Upsell uses Shopify’s native Subscription API to add a new recurring subscription to the customer’s order on the post-purchase page. The customer accepts in one click without re-entering payment or shipping. Their one-time purchase stays in the order as is, and the new subscription line item is added alongside it. The customer journey is four short steps:
  1. Customer completes checkout on a one-time product.
  2. Sees the Subscription Upsell offer on the post-purchase page.
  3. One-click accepts without re-entering payment or shipping details.
  4. Their first subscription order ships, and future renewals are billed by your subscription provider on the cadence you configured.
Under the hood, Aftersell uses Shopify’s native add_subscription post-purchase changeset. Aftersell does not call your subscription app’s API directly for this flow, the subscription is created by Shopify and your subscription app picks it up via its own Shopify integration. This is why Subscription Upsell works with any subscription app that uses Shopify’s native Subscription API. The first cycle of the subscription is fulfilled from the original Shopify order as a normal line item. Subsequent renewals are managed by your subscription provider, the same as any subscription created during regular checkout.

When to use a Subscription Upsell

Subscription Upsell works best when:
  • Your one-time product is a consumable or replenishment (skincare, supplements, pet food, coffee, household goods). Customers already need it again, so the recurring offer feels natural.
  • The customer just demonstrated purchase intent by completing checkout, which makes them more receptive to a related subscription than they would be on a cold landing page.
  • You can offer a clear value exchange, typically a first-cycle discount, free shipping on subscription orders, or a small free gift on the first delivery.
Avoid using Subscription Upsell for products with irregular usage patterns, very high price points where commitment friction outweighs the discount, or products that customers typically buy as one-off gifts.

Compatible subscription platforms

Subscription Upsell is fully provider-agnostic on the Aftersell side. Aftersell adds the subscription via Shopify’s native add_subscription post-purchase changeset, and Shopify routes the enrollment to whichever subscription app you have installed on the Shopify Subscription API. This means any subscription app that uses Shopify’s native Subscription API will work without additional setup, including Recharge, Skio, Loop, Stay.ai, Appstle, Smartrr, Bold Subscriptions (when running on Shopify’s native subscriptions API), and Shopify’s native selling plans. Selling plans you create in your subscription app are pulled into Aftersell automatically. For Subscription Upgrade compatibility, which is different and provider-specific, see Subscription Upgrades.

Creating a Subscription Upsell offer

To create a Subscription Upsell, build a standard post-purchase offer and select a product that has selling plans enabled in Shopify. There is no separate template, the offer adapts to the product you pick. To open the offer editor:
  1. In your Aftersell dashboard, go to Post-Purchase Upsells.
  2. Open an existing funnel or click Add Funnel to create a new one.
  3. Click Add Upsell and select the product you want to offer.
If the product has selling plans configured in Shopify, the offer editor automatically shows subscription-related controls.

Offering subscription products after checkout

If a product has selling plans enabled in Shopify, you can offer it in one of three ways. Choose the right mode for each offer.

1. One-time purchase only

The product is offered as a one-time purchase. No subscription option is shown, even though the product has selling plans in Shopify. The experience feels like a typical post-purchase offer. Pick this when you want to feature a subscription-enabled product but not commit the offer to recurring revenue (for example, a sampler or trial size).

2. Subscription only

The product must be purchased as a subscription. Customers cannot choose a one-time purchase. The available subscription options come directly from Shopify. Pick this when you want to fully commit the offer to recurring revenue.

3. One-time purchase and subscription

Customers can choose between a one-time purchase or a subscription. The pricing and delivery frequency come from Shopify. This is the most flexible option and the easiest place to lean on a subscription default and a first-cycle discount to nudge customers toward the recurring choice.

Choosing a default option

If you offer both one-time and subscription options, you can decide which one is preselected when the offer loads. This default selection:
  • Guides customer behaviour. Pre-selecting the subscription leans on default-bias and lifts subscription acceptance.
  • Highlights your preferred option (such as the subscription).
  • Still allows customers to switch before accepting.
Industry data consistently shows that defaulting to subscription lifts subscription acceptance by 10 to 15 percent versus defaulting to one-time. Acceptance rates for well-matched post-purchase subscription offers typically fall in the 15 to 30 percent range when paired with a first-cycle incentive.
If your goal is recurring revenue, set the default to subscription. If your goal is one-time-purchase optimization with subscription as an option for power users, set the default to one-time.

Subscription plan locking

When offering subscription products with multiple subscription plans, you can lock the offer to a specific plan. This prevents customers from changing the subscription plan during the post-purchase experience.

How subscription plan locking works

When you lock a subscription plan:
  • Customers see the plan name displayed as static text.
  • The plan selector dropdown is hidden.
  • Customers cannot change the subscription plan.
  • They receive the exact subscription option you have configured.

Configuring subscription plan locking

To lock a subscription plan:
  1. Open your post-purchase offer in the editor.
  2. Navigate to the Variant & Plan Options section.
  3. In the Lock subscription plan dropdown, select a specific plan.
  4. Save your offer. The plan is now locked for this offer.

Fallback behaviour

If the locked plan is no longer available in Shopify (for example, if it has been removed or disabled), the offer gracefully falls back to showing all available plans. This ensures customers can still complete the purchase.

Automatic reset

The locked plan setting automatically resets if you change the product’s purchase option to one-time purchase only. This prevents configuration errors when subscription options are removed.
Subscription plan locking is useful when you want to promote a specific subscription frequency or pricing tier (for example, the 30-day plan with the deepest discount) without giving customers the option to switch to a less profitable tier during the post-purchase flow.

Which selling plan is shown by default

When you do not lock a specific plan, the post-purchase offer shows the first selling plan configured on the product in Shopify. Customers do not see a frequency picker in the offer itself by default. To control which plan customers see:
  • Lock a specific plan (recommended). Use the Lock subscription plan dropdown to pick exactly one. Customers see only that plan.
  • Reorder selling plans in Shopify. The order of selling plans on the product determines which one is shown first.
  • Remove unused selling plans from the product. If you have multiple frequencies and only want one to surface, the simplest path is to keep only the relevant selling plan attached to the product.
A customer-facing frequency picker is not currently exposed on the post-purchase offer surface. If you need customers to choose a cadence, your two options are to (a) build multiple offers, one per cadence, with different triggers, or (b) keep the cadence locked and let customers change it in your subscription provider’s portal after acceptance. The most important factor for retention is matching the cadence to actual product usage. A 30-day shampoo subscription where the bottle lasts 60 days will get cancelled. A 60-day subscription where the bottle lasts 30 days will get skipped. Look at your one-time reorder data to find the natural cadence per product. If you offer multiple cadences, three or four well-chosen frequencies typically outperform a single locked cadence.

Subscription discounts

When you apply a discount to a Subscription Upsell offer, the discount applies to the first billing cycle only. Future recurring orders are charged at the regular subscription price. Customers can see this in the offer experience under the Recurring subtotal, which shows what future renewals will cost. This is different from the recurring discount used by Subscription Upgrade. For Subscription Upgrade discount behaviour, see Subscription Upgrades.

What price the customer actually sees

Where the price appears in the offer matters for how the customer reads it. The post-purchase offer shows two distinct prices:
  • The Accept Offer button and the line-item subtotal reflect the first-cycle price, including any first-cycle discount you have configured.
  • The Recurring subtotal field shows what the customer will be charged on subsequent renewals at the regular subscription price.
This works cleanly for typical first-cycle discounts (10 to 25 percent off the first delivery). It can read confusingly if you configure an extreme first-cycle discount such as 100% off the first delivery, because the recurring price (not the $0 first-cycle price) is the more visible number on the offer. If you intend a free first delivery, be explicit in the offer copy (“First box free, then $59.99 every 30 days”) so customers understand the recurring price they see is the ongoing rate.

Discount types

You can configure discounts in two ways:
  • Percentage discount. Reduces the subscription price by a percentage (for example, 15% off).
  • Fixed amount discount. Reduces the subscription price by a specific dollar amount (for example, $5 off).
The discount is applied directly to the subscription in your subscription app and only affects the subscription created by the post-purchase offer.

How much to discount

Common discount ranges for post-purchase subscription offers:
  • 10 to 15 percent first-cycle discount is the most common range and produces solid acceptance lift without significant margin loss.
  • 20 to 25 percent first-cycle discount is the upper bound, used to push acceptance higher on competitive products or when the recurring cadence is short (weekly, biweekly).
  • Free gift on first delivery is an alternative that some merchants find lifts acceptance further than a price discount, because it changes the conversation from “save money” to “get something extra”.
Stick to first-cycle discount in most cases. Customers expect it, and your subscription provider supports it without custom work. Step-down discounts (30% first, 20% second, 10% ongoing) are rarely worth the complexity because they are hard to communicate clearly. Whatever level you pick, make the discount visible in both the offer button and the line-item summary, and make it clear that it applies to the first cycle only.

Worked examples

Four common Subscription Upsell scenarios, with the exact configuration and what the customer experiences.

Scenario 1: Standard one-time + subscription with first-cycle discount

Setup. Your customer bought a one-time bottle of moisturizer at $30. You want to offer them a monthly subscription of the same product at $25 per month, with a 20% first-cycle discount as an acceptance incentive. What you set in the offer:
  • Purchase option: One-time purchase and subscription.
  • Default option: Subscription.
  • Selling plan: Monthly, $25.
  • First-cycle discount: 20% off.
What the customer sees in the offer:
  • The subscription option is preselected.
  • Accept Offer button: $20.00 (first cycle, 20% off $25).
  • Recurring subtotal: $25.00 every 30 days.
On accept:
  • Shopify charges them an additional $20 on this order.
  • A monthly subscription is created in your subscription app at $25.
  • The next charge happens in 30 days at $25.
On the order:
  • Original bottle (one-time): $30.
  • Subscription bottle (first cycle): $20.
  • Order total: $50.

Scenario 2: Free first delivery (100% off first cycle)

Setup. Your customer bought a one-time skincare kit. You want to offer them a monthly serum refill with a free first delivery to incentivize trial. What you set in the offer:
  • Purchase option: Subscription only.
  • Selling plan: Monthly serum, $40.
  • First-cycle discount: 100% off.
What the customer sees in the offer:
  • Accept Offer button: $0.00.
  • Recurring subtotal: $40.00 every 30 days.
  • Offer copy (recommended): “First month free, then $40 every 30 days. Pause or cancel anytime.”
On accept:
  • Shopify charges $0 for the subscription line on this order.
  • A monthly subscription is created in your subscription app at $40.
  • The next charge happens in 30 days at $40.
Watch-out. Because the button reads $0, customers can misread this as a free-forever offer. Always include the recurring price and the cancellation policy in the offer copy.

Scenario 3: Locked selling plan (you control the cadence)

Setup. You sell coffee that has three selling plans configured in Shopify: weekly, biweekly, and monthly. For your post-purchase offer, you only want to surface the monthly plan because it gives the best margin. What you set in the offer:
  • Purchase option: Subscription only.
  • Lock subscription plan: Monthly.
What the customer sees in the offer:
  • Plan name shown as static text (“Monthly”).
  • No plan selector dropdown.
  • Accept Offer button: monthly price.
On accept:
  • A monthly subscription is created.
  • The customer can change the cadence after acceptance in your subscription app’s customer portal.
When to use: anytime you want to standardize on a specific cadence for post-purchase acquisition, even if your product page exposes more options.

Scenario 4: Customer already has a subscription in their cart

Setup. A customer is buying both a one-time face wash AND a subscription serum in the same order. After checkout, your post-purchase funnel has a Subscription Upsell offering a vitamin subscription. What happens at runtime:
  • Aftersell detects the existing subscription line in the order.
  • If the offer is configured as subscription only, the offer is dropped from the funnel for this customer. They never see it.
  • If the offer is configured as one-time and subscription, the offer is auto-downgraded to one-time only. The customer sees the vitamin product available as a one-time purchase, with no subscription option.
Why this happens. Shopify allows only one subscription per order. Aftersell handles this gracefully at runtime, but you can avoid showing the offer entirely by setting a Subscription trigger to “do not include a subscription” on the funnel. Best practice: if your funnel has multiple subscription offers and you want only the first one to fire, set the Subscription trigger on every offer after the first to exclude orders that already contain a subscription. See Trigger configuration for subscription upsells.

What the customer sees

When a customer accepts a Subscription Upsell, three things happen across two systems.

On the Shopify order

The customer’s Shopify order confirmation will include both:
  • The original one-time line item they bought at checkout.
  • The new subscription line item added by the upsell, billed at the discounted first-cycle price.
The customer pays for both lines on the original order. The first subscription fulfillment ships from this order as a normal line item.

In their email confirmations

Shopify sends the standard order confirmation email with both line items. Your subscription provider typically sends its own subscription welcome email that explains the recurring schedule and how to manage the subscription. If you offer a subscription, make sure your subscription provider’s welcome email is configured to send within minutes of acceptance with:
  • The customer’s name and the product they subscribed to.
  • The cadence (every 30 days, every 60 days, etc.).
  • The next charge date.
  • A direct link to the customer portal where they can pause, skip, or cancel.

In the subscription provider portal

After accepting, the customer can manage the new subscription in your subscription provider’s customer portal. They can typically:
  • Pause or skip a delivery.
  • Change the cadence.
  • Swap products.
  • Cancel the subscription.
The portal experience is owned by your subscription provider, not by Aftersell. Make sure the portal is accessible from your store’s account area or via the welcome email, otherwise customers will reach support to cancel.

Subscription fulfillment

How the first cycle ships depends on your store setup.
  • First cycle. The first subscription order is part of the original Shopify order, so it flows through whatever fulfillment process you use for one-time orders (3PL, in-house, dropship). The subscription line item ships alongside the original one-time purchase.
  • Subsequent renewals. Future cycles are created by your subscription provider on the renewal cadence. Each renewal becomes a new Shopify order, fulfilled the same way as any other order in your store.
If your 3PL integrates directly with your subscription provider, the renewals usually flow through automatically. If your 3PL syncs only from Shopify orders, no extra setup is needed because each renewal creates a Shopify order.

Converting a one-time purchase into a subscription

You can also replace a one-time purchase with a subscription version of the same product after checkout. This is functionally a Replacement Upsell, not a Subscription Upsell, because the original one-time line is removed (refunded) and replaced with the subscription. The customer ends up with only the subscription, not both. This is the right choice when the customer’s order should ultimately be a recurring purchase rather than a one-off, and you do not want them to receive two separate shipments of the same product. For the full setup walkthrough, see How to Set Up a Replacement Upsell for Subscriptions.

Subscription Upgrades

Subscription Upgrade is the feature that modifies a customer’s existing subscription after checkout. Use it to change the delivery frequency, swap to a different subscription product, or both at the same time. The change is applied directly in Recharge, Skio, or Loop. It is a separate feature from Subscription Upsell because Shopify blocks adding a new subscription to an order that already contains one. For the full setup guide, see Subscription Upgrades.

Trigger configuration for subscription upsells

Triggers control when your subscription upsell offer fires. The two most relevant for Subscription Upsell are:
  • Product trigger. Set this to the original one-time product the customer should have bought for the subscription upsell to make sense. Without a product trigger, the offer can fire on unrelated orders.
  • Subscription trigger. Set this to do not include a subscription so the offer only shows to customers whose orders do not already contain a subscription. This avoids the Shopify “one subscription per order” rule kicking the offer out at runtime.
All enabled triggers use AND logic. Every condition must be met for the funnel to show.
If Show to all customers is enabled, it overrides all other triggers and the offer fires for every checkout. This is rarely the right setting for a Subscription Upsell, because it will fire on orders that already contain a subscription and silently skip.

Shopify platform limitations

A few Shopify platform rules apply to subscription-related post-purchase offers regardless of which Aftersell feature you use.

One subscription per order

Shopify does not allow a post-purchase upsell to add a subscription to an order that already contains a subscription. This restriction is set by Shopify and applies to all post-purchase apps. If the original order already includes a subscription, you cannot add another subscription post-purchase. Subscription Upsell is only available when the original order contains no subscription items. For orders that already contain a subscription, use Subscription Upgrade instead, which modifies the existing subscription rather than adding a new one. Aftersell handles the “subscription already in cart” case automatically in two ways:
  • Subscription-only products in an offer are dropped from the funnel for that customer.
  • Dual-mode products (configured as one-time + subscription) are auto-downgraded to one-time-only, so the offer still shows but without the subscription option.
This means you can leave a Subscription Upsell offer in your funnel without worrying that it will fire incorrectly on subscription-already-present orders, the offer adapts at runtime.

Subscription-only products

If a product in your offer is configured to sell only as a subscription (no one-time purchase option), the offer will be skipped whenever the customer’s order already contains a subscription product. When this happens, the funnel editor shows a Subscription limitations warning banner listing the affected products. The banner includes a tip: set the Subscription trigger to do not include a subscription so the offer only shows to customers whose orders do not already have a subscription.

Multiple subscription offers in the same funnel

If more than one offer in your funnel contains a subscription product, only the first accepted subscription is added to the order. Subsequent subscription offers are skipped. The funnel editor warns you when this conflict is detected, listing the other offers in the funnel that also contain subscription products. To avoid skipped offers, limit your funnel to one subscription offer, or use the Subscription trigger to exclude orders that already contain a subscription.

Testing a Subscription Upsell

Before going live with a new Subscription Upsell offer:
1

Place a real test order in Shopify

Place a real low-price test order on your store, do not rely on Preview Mode for this step. Preview Mode renders the funnel visually and lets you click through Accept and Decline to walk through the customer experience, but it is sandboxed: no order is created, no subscription is created in your subscription provider, no charges happen, and no emails or webhooks fire. Use Preview Mode for layout and copy review, and a real test order for end-to-end verification.
2

Accept the upsell on the post-purchase page

After checkout, the post-purchase offer will appear. Accept the subscription upsell to trigger the real changeset.
3

Check Shopify

In Shopify Admin -> Orders, find the test order. You should see both line items: the original one-time product and the new subscription product, with any first-cycle discount applied.
4

Check your subscription provider

Find the customer’s new subscription in your provider’s dashboard. Confirm the cadence, the next charge date, and the product.
5

Trigger a renewal in your sandbox

If your subscription provider supports test renewals, advance the next-charge date and confirm the renewal creates a new Shopify order at the regular (non-discounted) price.
If something looks wrong, see Troubleshooting below.

Troubleshooting

For subscription controls to appear in the offer editor, the product you selected must have at least one active selling plan in Shopify. Check that your subscription app has created selling plans for this product, and that the selling plans are active and assigned to the product.
By default, the post-purchase offer shows the first selling plan configured on the product in Shopify. There is no in-offer frequency picker by default. To control which plan customers see, lock a specific plan using the Lock subscription plan dropdown, reorder selling plans on the product in Shopify so the desired one is first, or remove unused selling plans from the product entirely. If you need to give customers a choice of cadence, build multiple offers (one per cadence) with separate triggers.
Not by default. The post-purchase offer surface does not expose a customer-facing frequency picker. Customers can change cadence after acceptance in your subscription provider’s customer portal. If you want them to pick at offer time, build a separate offer per cadence and use triggers to surface the right one.
Use the One-time purchase only mode in the offer’s purchase-option setting. Aftersell has three modes for subscription-enabled products: One-time purchase only, Subscription only, and One-time purchase and subscription. Selecting One-time purchase only hides the subscription option entirely, even when the product has active selling plans. See Offering subscription products after checkout for details on all three modes.
This is one of the most disruptive failure modes for Subscription Upsell because the customer was charged but the subscription was never created in your subscription provider. The most common root cause, by a wide margin, is a selling plan that was deactivated between the offer rendering and the customer accepting. Shopify accepts the changeset because it has a valid selling plan ID at offer render time, but if the plan is deactivated before the customer accepts, no subscription is enrolled downstream and no error is surfaced.Other common causes:
  • Subscription app webhook is failing. Any subscription app that picks up new subscriptions from Shopify relies on Shopify webhooks. Check webhook delivery health in your subscription app’s logs.
  • Selling plan was unlinked from the product but still has an active ID. Shopify accepts the changeset and the line item lands, but the subscription provider has no record to act on.
Important: there is no automatic retry or repair flow on the Aftersell side for post-purchase subscription enrollment. If this happens to a customer:
  1. Confirm the selling plan is still active in Shopify and assigned to the product.
  2. Check your subscription app’s order import / webhook logs for the affected order.
  3. If the subscription is truly missing, your subscription app’s support team can usually manually enroll the customer from the order ID.
If multiple customers are affected, contact Aftersell support with the order IDs and your subscription provider, but expect the fix to happen on the subscription provider side, not in Aftersell.
This usually surfaces when the first-cycle discount is extreme (for example 100% off the first cycle). The Accept button reflects the first-cycle price, but if that price reads identically to the recurring price (because of edge cases or formatting), it can look like the discount is not applied. Confirm in the offer preview that the discount is configured correctly, and rely on the offer copy (“First box free, then $X every Y days”) to make the terms unambiguous to customers.
Discounts apply to the first billing cycle only by default. If your customer is asking why their second or third order does not have the discount, that is the expected behaviour. Recurring orders charge at the regular subscription price, which the customer saw as the Recurring subtotal in the offer.
Shopify blocks adding a second subscription to an order that already contains one, so the offer will silently skip at runtime. To stop the offer from showing to those customers in the first place, set the Subscription trigger to do not include a subscription.
Shopify allows only one subscription per order. If you have multiple subscription offers in the same funnel, the first accepted one wins and the rest are skipped. Either limit your funnel to one subscription offer, or use the Subscription trigger to exclude orders that already have a subscription.
The new subscription is managed in your subscription provider’s customer portal, not directly in Shopify. Make sure the portal is linked from your store’s account area, and confirm your subscription provider’s welcome email is configured to send immediately after acceptance.
The first cycle was paid for as part of the Shopify order, so refunds work the same as any other line item. Cancellation of future cycles happens in your subscription provider, not in Aftersell. Refunding the line in Shopify does not automatically cancel the subscription, you have to cancel it in the provider portal as well.