Which feature do you need?
Three subscription-adjacent post-purchase features, three different jobs. Use this flow to pick the right one.What is a Replacement Upsell?
When a customer accepts a Replacement Upsell:- The original one-time line item is refunded in Shopify.
- The replacement line item is added to the same order, either as a one-time purchase or a subscription (depending on what you configured).
- The customer pays for the replacement on the same order.
- Their statement shows two transactions: the refund of the original, and the charge for the replacement. The displayed Accept Offer button reflects the net difference between the two prices.
- For a one-time replacement (different variant, quantity, or product), Aftersell sends an
add_variantchangeset. - For a subscription replacement, Aftersell sends an
add_subscriptionchangeset. - The original line item is removed via Shopify’s refund API.
What Replacement Upsell can do
Replacement Upsell supports four scenarios. In each case, the original line item must be a one-time purchase. The replacement can be either one-time or subscription.- One-time to one-time, same product, different variant. For example, swap the Twin size for the Queen size.
- One-time to one-time, same product, different quantity. For example, swap a single bottle for a 3-pack of the same item. Enable Override quantity on the replacement to set the quantity that ships.
- One-time to one-time, completely different product. For example, swap a starter bottle for a full-size version of a different SKU.
- One-time to subscription. For example, swap the one-time bottle for a monthly subscription of the same bottle, or for a subscription version of a different product. This is the most common use case.
What Replacement Upsell cannot do
These scenarios are blocked by Aftersell at offer-display time. The offer will silently skip if the customer’s order matches any of them.- Subscription to one-time. Removing the subscription line item does not cancel the subscription contract in Recharge, Skio, or Loop. The customer would still be billed and also receive the replacement.
- Subscription to a different subscription. Same root cause as above, plus Shopify’s “one subscription per order” rule blocks adding a new subscription to an order that already contains one.
- Subscription to subscription variant or frequency swap. Same root cause.
What the customer sees
Understanding the customer’s view prevents the most common support ticket: “Why was I double-charged?”In the post-purchase offer
The Accept Offer button shows the net difference between the original and the replacement. For example, if the customer bought a 45 3-pack, the Accept button reads “Add $15.00 to your order.” If the replacement is cheaper than the original, the button reads as a credit. The offer card shows the replacement product’s image, title, and price. The offer card uses the variant-specific image when one is tagged on the variant in Shopify. If the variant has no image tagged, the offer card falls back to the parent product’s first image. This means swapping between two variants of the same product may or may not change the image, depending on whether each variant has its own image set up in Shopify.On the Shopify order after acceptance
The order ends up showing both:- The original line item with a refund applied to it.
- The new line item for the replacement, charged at full price.
- Include a line in the offer copy that explicitly describes the refund-and-replace mechanic. For example: “When you accept, we will refund the original item and charge for the replacement. You will see two line entries on your statement, the net is the upgrade price shown on this button.”
- Enable Aftersell’s automatic refund-notification email for replacement upsells, which sends the customer a confirmation explaining the refund.
In the subscription provider portal (when replacement is a subscription)
If the replacement is a subscription, the customer will see the new subscription in your subscription provider’s customer portal (Recharge, Skio, Loop, Appstle, Smartrr, Stay.ai). The portal is owned by your subscription provider, not by Aftersell. Make sure your subscription provider’s welcome email is configured to send within minutes of acceptance.Compatible subscription platforms
When the replacement is a subscription, Replacement Upsell works with any subscription app that uses Shopify’s native Subscription API. Aftersell does not call provider APIs directly for this flow, the subscription is created by Shopify and your subscription app picks it up via its own Shopify integration. Compatible providers include Recharge, Skio, Loop, Stay.ai, Appstle, Smartrr, Bold Subscriptions (when running on Shopify’s native subscriptions API), and Shopify’s native selling plans. If your replacement target has a prepaid subscription plan configured (for example, every 3 months charged upfront), confirm with your subscription provider that prepaid is supported as a replacement destination. Some providers, notably Loop, have limited prepaid handling.Payment method requirements
Aftersell explicitly blocks Replacement Upsell on some payment gateways because they cannot reliably support the refund-and-recharge pattern in the post-purchase window:- Authorize.net (
authorize_net). Authorize.net requires transactions to settle before refunds can be issued, and settlement has a delay, so Aftersell cannot reliably refund the original and add the replacement on the same Shopify order. If Authorize.net is your payment processor, route those customers to Thank-You-page offers instead. - Manual payment gateways (
manual). This covers cash on delivery, custom payment methods, draft-order checkouts, and any other manual payment processor that does not capture a vaulted authorization. Replacement Upsell needs an active vaulted payment to issue a follow-up charge, which manual gateways do not provide.
Creating a Replacement Upsell offer

- In your Aftersell dashboard, go to Post-purchase Upsells.
- Open an existing funnel or click Add Funnel.
- Add an upsell offer and configure it.
- Funnel trigger. Set at the funnel level. Determines which orders see the offer.
- Upsell product. Set in the offer’s Upsell Products section. The product that gets added to the order when the customer accepts.
- Product to replace. Set inside the Replace item in original order with upsell section, by clicking the Edit product to replace button. The exact product and variant in the customer’s cart that will be refunded and removed.
Step 1: Configure the funnel trigger
The trigger determines which orders see the offer:- Product trigger. Set to the one-time product you want to replace. Without this, the offer can fire on unrelated orders.
- Subscription trigger. Set to do not include a subscription. This ensures the offer only shows to customers whose orders do not already contain a subscription (which would block the replacement).
Step 2: Pick the upsell product
In the offer editor:- Click Add Upsell and search for the product the customer should receive instead.
- If the replacement is a subscription, select Subscription only as the purchase option and pick the selling plan.
- If the replacement is a one-time purchase, select One-time purchase only.
- If you are doing a variant or quantity swap of the same product, pick the same product and adjust the variant or quantity controls.
Step 3: Enable Replacement Upsell
In the offer’s advanced settings, enable Replace item in original order with upsell. This is the toggle that turns a standard upsell into a Replacement Upsell.
- Allow replacement when target has a discount. When off (default), Replacement Upsell will skip orders where the trigger line carries an order-level discount. When on, the replacement still fires, but the discount on the original line is refunded with the original (it does not carry to the replacement). See Discount handling.
- Override quantity. Set a specific quantity for the replacement line item. Useful when swapping a single unit for a multi-pack.
Step 4: Set the product to replace
Click Edit product to replace and pick the exact product and variant that should be removed from the customer’s order when the offer is accepted. This must match what the customer actually has in their cart. For variant swaps of the same product (Small → Large), the Product to replace must point to the Small variant specifically. If you point it to Large or to any variant the customer did not buy, the offer will skip with no error.Step 5: Add optional discount
If the replacement is a subscription, you can apply a first-cycle discount to make the offer more attractive. The discount applies to the first billing cycle of the new subscription, future renewals charge at the regular subscription price. For one-time replacements, the discount applies to the one-time charge on this order.Step 6: Customize the offer copy
Make the refund-and-replace mechanic explicit in the offer copy. Recommended elements:- Title: clearly describes the swap (for example, “Upgrade to the 3-pack and save”).
- Description: explain that the original is refunded and the replacement is charged.
- Accept button: defaults to showing the net price, customize to “Switch to subscription” or “Upgrade my order” if you want a verb-based CTA.
Discount handling
Replacement Upsell has specific behaviour around discounts that catches partners off guard.Discounts on the original line do not carry to the replacement
When Aftersell refunds the original line item, any discount that was applied to it goes with it. The replacement line is charged at the full price (or at your replacement-offer discount, if you configured one), but the customer’s original discount does not transfer. If you want the customer to keep an equivalent discount, configure it on the replacement offer directly.Allow replacement when target has a discount
By default, Replacement Upsell skips the offer if the trigger line carries an order-level discount. This is a protective default to avoid refund-amount mismatches. To allow the offer to fire even when the trigger has a discount, enable the Allow replacement when target has a discount toggle in the offer’s advanced settings. When enabled, the refund covers the discounted price (not the full price), and the replacement is charged according to your offer configuration.First-cycle discount on subscription replacements
When the replacement is a subscription, the discount you configure on the offer applies to the first billing cycle only. Future recurring orders charge at the regular subscription price. The customer sees the recurring price under Recurring subtotal in the offer.Analytics and reporting
Refunds generated by a Replacement Upsell carry the note “Aftersell Post-Purchase Replacement Upsell” in Shopify, which makes replacement-related refunds easy to identify. Aftersell analytics do not subtract the refunded amount from the upsell value. Replacing a 200 product is reported as a 100 net.Worked examples
Three common Replacement Upsell scenarios, with the exact configuration and what the customer experiences.Scenario 1: One-time bottle to monthly subscription of the same product
Setup. Your customer bought a one-time bottle of supplement at 36 per month, with a 15% first-cycle discount. What you set in the offer:- Funnel trigger: Product is the one-time bottle.
- Upsell product: the same bottle, monthly selling plan.
- Purchase option: Subscription only.
- First-cycle discount: 15%.
- Product to replace: the one-time bottle (same variant the customer purchased).
- Accept Offer button: “Add 40 one-time and 36).
- Recurring subtotal: $36.00 every 30 days.
- Original $40 one-time bottle is refunded.
- A new subscription line is added at $30.60 for the first cycle.
- A monthly subscription is created in your subscription app at $36 base price.
- The next charge happens in 30 days at $36.
Scenario 2: Single bottle to 3-pack of the same product
Setup. Your customer bought one 75 (vs $90 if bought individually). What you set in the offer:- Funnel trigger: Product is the single bottle.
- Upsell product: same product.
- Override quantity: 3.
- Purchase option: One-time purchase only.
- Product to replace: the single bottle (same variant).
- Accept Offer button: “Add 30 and $75).
- Original $30 bottle is refunded.
- 3 bottles are added at $75 total.
- Customer pays the net $45 on this Shopify order.
Scenario 3: One-time product to a different subscription product
Setup. Your customer bought a one-time 50 per month. What you set in the offer:- Funnel trigger: Product is the starter kit.
- Upsell product: the premium product.
- Purchase option: Subscription only.
- Selling plan: Monthly, $50.
- Product to replace: the starter kit (same variant).
- Accept Offer button: “Add 25 and $50).
- Recurring subtotal: $50.00 every 30 days.
- Original $25 starter kit is refunded.
- New subscription line is added at $50.
- Monthly subscription created in your subscription app at $50.
- Customer pays $25 net on this Shopify order.
Per-variant funnels
A single Replacement Upsell offer targets one specific product and variant on each side. If your subscription plans differ per variant (different sizes, flavours, or prices), you cannot configure one offer that says “swap whichever variant the customer bought to its matching subscription variant.” Each variant pairing needs its own funnel. For example, if you sell a serum in three sizes (Small / Medium / Large) and want each one to swap to its subscription counterpart, you would build three funnels:- Funnel 1: trigger = Small one-time, replacement = Small subscription.
- Funnel 2: trigger = Medium one-time, replacement = Medium subscription.
- Funnel 3: trigger = Large one-time, replacement = Large subscription.
Testing a Replacement Upsell
Before going live:Place a real test order in Shopify
Accept the upsell on the post-purchase page
Check Shopify
Check the customer's statement
Check your subscription provider (if replacement is a subscription)
Beta failsafe
While Replacement Upsell is in Beta, Aftersell tracks errors on each offer and stops showing the offer to new customers once the error count crosses a threshold. This protects you from a widespread misconfiguration silently impacting many customers.
Configuring the failsafe threshold
The failsafe threshold is configurable in Settings → Replacement Upsells. You can pick from:- 1 error (most protective). The offer stops as soon as the first replacement fails.
- 3 errors (default).
- 5 errors.
- 7 errors (most permissive).
What trips the failsafe
Any exception in the replacement flow counts as an error. The most common causes:- Shopify rejects the changeset because the checkout has already completed.
- The replacement product was deleted or unpublished between offer setup and the customer accepting.
- The selling plan on a subscription replacement was deactivated.
- A transient Shopify API or subscription-provider outage.
When the failsafe trips
When the error count reaches the threshold, the offer stops being shown to new customers. There is currently no admin-side notification, banner, or status indicator on the funnel when this happens. To know whether the failsafe has tripped, you have to either monitor your replacement offer’s acceptance rate and notice a drop, or check with support.How to reset
Contact support via the in-app chat. Support will review the root cause of the error count and re-enable the offer after the underlying issue is fixed.Troubleshooting
The Replacement Upsell offer type does not appear in my funnel editor
The Replacement Upsell offer type does not appear in my funnel editor
The offer is not showing on test orders
The offer is not showing on test orders
- Funnel trigger mismatch. Confirm the trigger product is the same product that is in the test order’s cart.
- Order already contains a subscription. Replacement Upsell skips any order where the trigger line is a subscription. Use Subscription Upgrade instead in that case.
- Original line has a discount. By default, Replacement Upsell skips lines with an order-level discount. Enable Allow replacement when target has a discount in the offer’s advanced settings.
The offer shows but the replacement doesn't actually happen (or the customer received the original product)
The offer shows but the replacement doesn't actually happen (or the customer received the original product)
- Funnel trigger. Set at the funnel level. Determines which orders see the offer.
- Upsell product. Set in the offer’s Upsell Products section. The product that gets added to the order when the customer accepts.
- Edit product to replace. Set inside the Replace item in original order with upsell section, by clicking the Edit product to replace button. This is the exact product and variant in the customer’s cart that will be refunded and removed.
- Open the Replacement Upsell offer.
- Click Edit product to replace and confirm the selected product and variant exactly match the product+variant the customer should have purchased (per the funnel trigger).
- If you are swapping between variants of the same product (Small → Large), the “product to replace” must point to the Small variant specifically. If you point it to Large or to any variant the customer did not buy, the offer will skip.
- Save and test with a real low-price order that includes the exact variant you want to swap from.
My customer thinks they were double-charged
My customer thinks they were double-charged
- Add a sentence to the offer copy explaining the refund-and-replace mechanic.
- Enable Aftersell’s automatic refund-notification email for replacement upsells.
- Train your support team to explain the two-line-entry pattern when a customer reaches out.
I see "Partial refunds are not allowed until the transaction is settled"
I see "Partial refunds are not allowed until the transaction is settled"
The original order's discount disappeared after the replacement
The original order's discount disappeared after the replacement
Can Replacement Upsell swap a subscription for another subscription?
Can Replacement Upsell swap a subscription for another subscription?
My Replacement Upsell offer suddenly stopped firing
My Replacement Upsell offer suddenly stopped firing
The replacement product image is wrong or generic
The replacement product image is wrong or generic
I want to configure Replacement Upsell across many product variants
I want to configure Replacement Upsell across many product variants
The customer accepted but the new subscription is not in my subscription app
The customer accepted but the new subscription is not in my subscription app
I want to cancel the new subscription after the customer accepted
I want to cancel the new subscription after the customer accepted
My Authorize.net customers never see the Replacement Upsell offer
My Authorize.net customers never see the Replacement Upsell offer
My cash-on-delivery or draft-order customers don't see the offer
My cash-on-delivery or draft-order customers don't see the offer