Skip to main content
Replacement Upsell lets you swap a one-time product in the customer’s order for a different product on the post-purchase page. The replacement can be a subscription version of the same product, a different variant or quantity, or a completely different product. The customer accepts in one click, the original line item is refunded, and the replacement line item is added to the order.
Replacement Upsell is currently a Beta feature. To use it on your store, message support via the in-app chat and we will enable it on your account. The Replace item in original order with upsell toggle will not appear in the offer editor until it has been enabled.
Replacement Upsell only works when the original line item is a one-time purchase. If the customer’s order already contains a subscription, the offer is silently skipped. To modify an existing subscription (change frequency, swap product, or both), use Subscription Upgrade instead.
When a customer accepts a Replacement Upsell, Aftersell charges the full replacement product price and refunds the original. The customer’s bank statement will show two transactions, even though the net amount matches the displayed Accept Offer button. Plan your offer copy and post-purchase confirmation email so customers do not think they were double-charged.

Which feature do you need?

Three subscription-adjacent post-purchase features, three different jobs. Use this flow to pick the right one.
Does the customer’s order already contain a subscription?Yes → Use Subscription Upgrade. It modifies the customer’s existing subscription contract in Recharge, Skio, or Loop (change frequency, swap product, or both).No → continue below.Do you want the customer to keep what they bought AND get a recurring subscription, or replace what they bought entirely?Keep what they bought + add a new subscription on top → Use Subscription Upsell.Replace what they bought with something else (subscription version, different product, different variant or quantity) → Use Replacement Upsell (this guide).

What is a Replacement Upsell?

When a customer accepts a Replacement Upsell:
  1. The original one-time line item is refunded in Shopify.
  2. The replacement line item is added to the same order, either as a one-time purchase or a subscription (depending on what you configured).
  3. The customer pays for the replacement on the same order.
  4. 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.
This is implemented using Shopify’s post-purchase API:
  • For a one-time replacement (different variant, quantity, or product), Aftersell sends an add_variant changeset.
  • For a subscription replacement, Aftersell sends an add_subscription changeset.
  • The original line item is removed via Shopify’s refund API.
Aftersell does not call your subscription app’s API directly for subscription replacements, the subscription is created by Shopify’s native Subscription API and your subscription app picks it up via its own Shopify integration.

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.
If you need to change a customer’s existing subscription, use Subscription Upgrade instead. Subscription Upgrade modifies the existing contract in Recharge, Skio, or Loop directly, without trying to remove and re-add the subscription line.
Whenever a Replacement Upsell is skipped (a blocked scenario above, an unsupported payment gateway, or a discounted trigger line), Aftersell automatically tries to show the downsell offer in the same funnel instead. Set up a downsell as a fallback whenever you use Replacement Upsell so the shopper still sees an offer.

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 30bottleandyouoffera30 bottle and you offer 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.
The order total reflects the net result, but the customer’s bank statement will show two transactions, one charge for the replacement and one refund for the original. This is how Aftersell processes Replacement Upsell acceptances at the payment level. The net amount matches the displayed Accept Offer button. To reduce confusion:
  • 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.
When the order’s payment gateway is one of these, Replacement Upsell silently skips the offer. The skip reason surfaces in the Aftersell order browser as “Payment gateway does not support replacement upsells.” For the broader list of payment methods that affect all Aftersell post-purchase offers (not just Replacement Upsell), see Payment Methods.

Creating a Replacement Upsell offer

Setting up a Replacement Upsell in the offer editor
To create a Replacement Upsell:
  1. In your Aftersell dashboard, go to Post-purchase Upsells.
  2. Open an existing funnel or click Add Funnel.
  3. Add an upsell offer and configure it.
The configuration lives inside a standard post-purchase offer, with Replacement Upsell controls surfacing when you enable them. A Replacement Upsell offer has three separate product selections, and they need to be configured consistently for the replacement to fire:
  • 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.
If the Product to replace does not match the variant the customer actually purchased, Aftersell cannot find a matching line item to remove, and the replacement silently does not fire.

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).
All enabled triggers use AND logic. Every condition must be met.

Step 2: Pick the upsell product

In the offer editor:
  1. Click Add Upsell and search for the product the customer should receive instead.
  2. If the replacement is a subscription, select Subscription only as the purchase option and pick the selling plan.
  3. If the replacement is a one-time purchase, select One-time purchase only.
  4. 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.
Replacement Upsell settings and toggles in the offer editor
When this is enabled, you can also configure:
  • 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 100productwitha100 product with a 200 product is reported as a 200upsell,nota200 upsell, not 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 40.Youwanttoofferthemamonthlysubscriptionofthesamebottleat40. You want to offer them a monthly subscription of the same bottle 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).
What the customer sees in the offer:
  • Accept Offer button: “Add 0.60toyourorder"(netdifferencebetween0.60 to your order" (net difference between 40 one-time and 30.60firstcyclesubscriptionafter1530.60 first-cycle subscription after 15% off 36).
  • Recurring subtotal: $36.00 every 30 days.
On accept:
  • 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.
Customer statement: one 40refund,one40 refund, one 30.60 charge. Net: customer paid 30.60forthisdelivery,willpay30.60 for this delivery, will pay 36 every 30 days going forward.

Scenario 2: Single bottle to 3-pack of the same product

Setup. Your customer bought one 30bottle.Youwanttoofferthema3packat30 bottle. You want to offer them a 3-pack at 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).
What the customer sees in the offer:
  • Accept Offer button: “Add 45.00toyourorder"(netdifferencebetween45.00 to your order" (net difference between 30 and $75).
On accept:
  • 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 25starterkit.Youwanttoofferthemamonthlysubscriptiontoyourpremiumproductlineat25 starter kit. You want to offer them a monthly subscription to your premium product line at 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).
What the customer sees in the offer:
  • Accept Offer button: “Add 25.00toyourorder"(netdifferencebetween25.00 to your order" (net difference between 25 and $50).
  • Recurring subtotal: $50.00 every 30 days.
On accept:
  • 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.
Aftersell does not currently include a built-in variant pairing feature, so each variant pair needs its own funnel.

Testing a Replacement Upsell

Before going live:
1

Place a real test order in Shopify

Place a real low-price test order with the one-time product as the trigger. Do not rely on Preview Mode for this step. Preview Mode renders the funnel visually and lets you click through Accept and Decline, but it is sandboxed: no order is created, no refund is applied, no subscription is created, 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 Replacement Upsell to trigger the real changeset.
3

Check Shopify

In Shopify Admin → Orders, find the test order. You should see the original line item with a refund applied, and the replacement line item added.
4

Check the customer's statement

On a real card, verify that both transactions (the refund of the original and the charge for the replacement) post correctly. The net should match the displayed Accept Offer button.
5

Check your subscription provider (if replacement is a subscription)

Find the customer’s new subscription in your provider’s dashboard. Confirm the cadence, the next charge date, and the product. There is no automatic retry on Aftersell’s side if enrollment fails, contact your subscription provider’s support if the subscription is missing.

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.
Replacement Upsell Beta failsafe in the Order Browser

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).
Pick a higher threshold if you are confident in the offer’s configuration and want to absorb a few transient Shopify or subscription-provider errors without disabling the offer. Pick a lower threshold if customer-facing failures are high-cost for your store.

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

Replacement Upsell is a Beta feature that requires manual enablement by Aftersell support. Contact support via the in-app chat to request access. Once enabled, the Replace item in original order with upsell toggle will appear in the offer’s advanced settings.
Three causes:
  • 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.
A Replacement Upsell offer has three separate product selections in the editor, and they need to be configured consistently for the replacement to fire:
  1. Funnel trigger. Set at the funnel level. Determines which orders see the offer.
  2. Upsell product. Set in the offer’s Upsell Products section. The product that gets added to the order when the customer accepts.
  3. 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.
The most common configuration mistake: the product to replace does not match the variant that is actually in the customer’s cart. When that happens, Aftersell cannot find a matching line item to remove, and the replacement silently does not fire.To fix:
  • 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.
This is the expected behaviour. The original line is refunded and the replacement is charged, so the customer’s bank statement shows two transactions even though the net amount is the displayed offer price. To reduce confusion:
  • 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.
Some payment gateways (including Authorize.net and others that batch-settle transactions on a delay) do not permit refunds until the original transaction has settled. Because a Replacement Upsell charges the replacement and refunds the original immediately after checkout, the refund step can fail with the error “Partial refunds are not allowed until the transaction is settled. Please try again later.” Aftersell does not automatically retry the refund after settlement, so you will need to issue the refund manually from the Shopify order once the original transaction settles (typically within 24 hours, depending on your gateway’s settlement schedule). To avoid this scenario, Replacement Upsell is skipped entirely for known unsupported gateways. If you keep seeing it on a supported gateway, contact support so we can investigate.
When Aftersell refunds the original line item, any discount applied to it goes with the refund. The replacement line is charged separately. If you want the customer to retain the discount, configure it on the replacement offer directly using the offer’s discount field.
No. If the original line item in the order is already a subscription, Replacement Upsell will not fire. This is because removing the subscription line item does not cancel the subscription contract in your subscription app, the customer would still be billed and also receive the replacement. To modify an existing subscription (change frequency, swap product, or both), use Subscription Upgrade instead.
Replacement Upsell tracks errors per offer and stops showing the offer once the error count crosses your configured threshold in Settings → Replacement Upsells (default: 3 errors). The failsafe does not currently surface a banner or notification in admin. To investigate, contact support via the in-app chat. Support will review the root cause and re-enable the offer after the underlying issue is fixed.
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. If you are swapping between variants of the same product and the image is not changing, confirm that each variant has its own image set up in Shopify.
Build one funnel per variant. Each funnel has a product+variant trigger and a corresponding replacement product+variant. Aftersell does not currently include a built-in variant pairing feature.
Same failure mode as Subscription Upsell: most often a selling plan was deactivated between the offer rendering and the customer accepting. Shopify accepts the changeset but no subscription is enrolled downstream. Confirm the selling plan is still active in Shopify and assigned to the replacement product. Check your subscription app’s order import or webhook logs for the affected order. If the subscription is missing, your subscription app’s support team can usually manually enroll the customer.
Aftersell does not manage subscription cancellation. Cancellation of future cycles happens in your subscription provider’s customer portal or by the customer themselves. The Shopify refund mechanism for the first cycle works the same as any other line item.
This is expected. Authorize.net is explicitly blocked from Replacement Upsell in Aftersell’s code because it requires transactions to settle before refunds can be issued, and settlement has a delay that breaks the refund-and-recharge pattern Replacement Upsell relies on. Run Thank-You-page offers for Authorize.net customers as an alternative. You can confirm this is the cause by opening the order in the Aftersell order browser, the skip reason will read “Payment gateway does not support replacement upsells.”
Manual payment gateways (cash on delivery, custom payment methods, draft-order checkouts) are explicitly blocked from Replacement Upsell because they do not vault a card for follow-up charges. The order browser will show “Payment gateway does not support replacement upsells” as the skip reason. For broader payment-method limitations on post-purchase offers, see Payment Methods.