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

# Why isn't my checkout upsell displaying?

> A complete breakdown of every reason your checkout upsell may not be showing, including setup, placement, trigger, and product/offer issues.

Checkout upsells can fail to display for several different reasons. Work through the steps below in order to identify the cause.

<Note>
  Checkout upsells are only available to Shopify Plus merchants, because Shopify's Checkout Extensibility API is Plus-only. If you are not on Shopify Plus, checkout upsells will not appear regardless of your configuration. See [Why can't I see the checkout tab?](/aftersell/why_cant_i_see_the_checkout_tab)
</Note>

<Tip>
  If an upsell doesn't display, the customer's checkout experience is unaffected — nothing breaks on the customer's side.
</Tip>

***

## Where to start

Most display problems come down to one of four things: the widget isn't enabled, the app block isn't added/saved in Shopify, the placement doesn't match, or the trigger conditions aren't met. Confirm the basics first:

* You are on a **Shopify Plus** plan
* The widget is **enabled** in the Aftersell Checkout editor (the **Enable** toggle in the top right of the widget settings is on)
* The app block has been **added and saved** in the Shopify Checkout Editor
* The placement selected in Shopify **matches** the placement set in Aftersell

If those all check out and the upsell still isn't showing, work through the detailed causes below.

* [Widget is not enabled or not added to checkout](#widget-is-not-enabled-or-not-added-to-checkout)
* [Placement mismatch between Aftersell and Shopify](#placement-mismatch-between-aftersell-and-shopify)
* [Trigger conditions are not being met](#trigger-conditions-are-not-being-met)
* [There is a product or offer issue](#there-is-a-product-or-offer-issue)
* [Shop Pay widgets not showing](#shop-pay-widgets-not-showing)
* [Testing in the Shopify preview](#testing-in-the-shopify-preview)
* [Nothing above applies](#nothing-above-applies)

***

## Widget is not enabled or not added to checkout

For a checkout upsell to display, two things must be true at the same time:

1. The widget must be **enabled** in the Aftersell Checkout editor
2. The app block must be **added and saved** in the Shopify Checkout Editor

If either is missing, the widget will not appear.

**To enable the widget in Aftersell:**

1. Go to **Apps → Rokt Aftersell → Checkout**
2. Open the upsell widget you want to display
3. Confirm the **Enable** toggle in the top right corner is turned on

**To add the app block in Shopify:**

1. Go to **Settings → Checkout** in your Shopify Admin
2. Click **Customize** next to your checkout profile
3. Click **Add app block** and select the Aftersell upsell widget
4. Position it where you want it to appear
5. Click **Save** — changes are not applied until saved

***

## Placement mismatch between Aftersell and Shopify

A placement mismatch is one of the most common reasons a checkout upsell fails to display.

Aftersell supports multiple placements (**Default placement**, **Additional placement 1**, **Additional placement 2**) so you can run more than one widget of the same type on the same checkout page. Each placement in Aftersell corresponds to a **separate app block** in the Shopify Checkout Editor. The placement selected in Shopify must match the placement configured in Aftersell.

If the placements do not match, the widget will not appear or may display in the wrong location.

**To fix a placement mismatch:**

1. In the Aftersell Checkout editor, open the upsell widget and note which placement is selected (for example, **Additional placement 1**)
2. In the Shopify Checkout Editor, remove the existing app block for this widget
3. Click **Add app block**, select the Aftersell upsell widget, and choose the **same placement** as configured in Aftersell
4. Save your changes

[Learn more about matching placements →](/aftersell/how_to_configure_checkout_widgets#matching-placements-in-the-shopify-checkout-editor)

***

## Trigger conditions are not being met

If your upsell widget has triggers configured, it will only display when those conditions are met by the cart. If the cart does not satisfy the trigger conditions, the widget will not appear — this is expected behavior.

Available trigger types include:

* **Specific products / collections:** a chosen product, variant, or collection is (or is not) in the cart
* **Quantity of a specific product:** e.g. 2 or more of a product
* **Product tag / product type / variant name:** any cart item matches a Shopify tag, product type, or variant title (case-insensitive)
* **Product metafield / variant metafield:** a cart product or variant has a metafield value that matches
* **Cart subtotal:** the subtotal meets a threshold (see the note below on how the subtotal is calculated)
* **Cart quantity:** total number of items in the cart
* **Subscription in cart:** whether any cart item is a subscription
* **Cart attribute:** a cart-level attribute key/value matches (useful for data set by other apps)
* **Applied discount / discount value:** a specific discount code is applied, or total discount meets a threshold
* **Shipping country:** the customer's shipping country (and optionally province) matches
* **Customer language:** the checkout's language matches (for example, show French content only to French checkouts)
* **Customer tags:** the logged-in customer has the required tags
* **Device type:** the customer is on the configured device (desktop or mobile)

<Note>
  The **cart subtotal** used for trigger evaluation excludes any line items already added by accepted upsells (those tagged with the `__as_offer_id` cart attribute). So accepting one upsell will not, by itself, push the subtotal over a threshold that gates another widget.
</Note>

**Combining conditions:** when a widget has multiple conditions, they are joined with either **AND** or **OR** (your choice), and conditions can be nested into groups for more complex logic. Under an **AND** join, every condition must be met — a single unmatched condition silently blocks the widget. Under an **OR** join, any one match is enough. Review each condition individually against your test cart.

**To troubleshoot triggers:**

1. Open the widget in the Aftersell Checkout editor and review its trigger conditions
2. Temporarily set the trigger to **Show for all customers** to confirm the widget itself is working, then re-enable your specific triggers
3. Make sure at least one widget uses a **Show for all customers** trigger at the lowest priority as a catch-all, so some offer always displays even when no targeted widget matches

[Learn more about checkout triggers →](/aftersell/checkout_triggers)

***

## There is a product or offer issue

Even when the widget is enabled, correctly placed, and its triggers match, the offer itself may be filtered out before it displays.

<AccordionGroup>
  <Accordion title="The upsell product is out of stock">
    If the product's inventory is tracked and no variant is available for sale, the offer will not display. Make sure at least one variant of the upsell product has available inventory, or use a product that doesn't track inventory.
  </Accordion>

  <Accordion title="The upsell product is in Draft or Archived status">
    The upsell product must be a live, sellable product. Products in **Draft** or **Archived** status in Shopify are filtered out and will not appear as offers. Open the product in Shopify Admin and confirm its status is **Active**.
  </Accordion>

  <Accordion title="The upsell product is already in the cart and 'hide if already in cart' is enabled">
    The **Hide offer if product already in cart** setting hides the offer when that product is already in the customer's cart. It is on by default for standard product offers. If you want the upsell to show regardless, disable this setting in the offer configuration.
  </Accordion>

  <Accordion title="The upsell product is a subscription but has no selling plans">
    If the offer's purchase option is set to **Subscription** but the product has no selling plans configured in Shopify, the offer is filtered out. Confirm the product has at least one active selling plan, or change the purchase option to **One-time purchase**.
  </Accordion>

  <Accordion title="The replacement upsell target product is not in the cart">
    If the offer is configured as a replacement upsell, it only displays when the product it is meant to replace is present in the cart. If that target product isn't in the cart, the offer won't show. Confirm the correct target product is selected in the replacement upsell configuration.
  </Accordion>

  <Accordion title="The maximum number of accepted offers has been reached">
    If **Maximum accepted offers** is set on the widget, the upsell stops displaying once the customer has accepted that many offers from the widget in the current checkout. This is intentional — once the limit is reached, the widget hides itself.
  </Accordion>

  <Accordion title="The offer was already added to the cart by this widget">
    For **single** and **multi-product** upsells, once the customer adds the offer product to their cart, the offer is hidden (the product is already in the cart). **Checkmark** upsells behave differently — they stay visible with the checkbox checked after being accepted.
  </Accordion>
</AccordionGroup>

***

## Shop Pay widgets not showing

Checkout widgets do not display in Shop Pay by default. To show your upsell in Shop Pay, you must explicitly enable it:

1. Open the Aftersell upsell app block in the Shopify Checkout Editor
2. In the block settings, find the **Checkout behaviour** section
3. Check the **Include app block in Shop Pay** option
4. Save your changes

[Learn more about Shop Pay widgets →](/aftersell/show_checkout_widgets_in_shop_pay)

***

## Testing in the Shopify preview

The Shopify Checkout Editor preview does not reliably render widgets. A widget can be configured correctly and still not appear in the editor preview, because the preview can't simulate page tagging and trigger conditions. Don't rely on the editor preview to confirm whether a widget is working.

**To test your upsell accurately:**

1. Temporarily set the widget trigger to **Show for all customers**
2. Place a real test order using Shopify's test payment gateway (or a discount code that makes the order free)
3. Confirm the widget appears during the actual checkout flow
4. Reset your triggers after testing

***

## Nothing above applies

If you've worked through everything above and the upsell still isn't displaying, confirm the following:

* The widget is **enabled** in Aftersell and the app block is **added and saved** in the Shopify Checkout Editor
* The **placement** in Aftersell matches the placement selected in Shopify
* The trigger conditions match your test cart — remember that under an **AND** join, every condition must be met
* There is at least one widget with a **Show for all customers** trigger at the lowest priority as a catch-all
* The upsell product is **Active**, in stock, and (for subscription offers) has active selling plans
* You are testing with a **real checkout flow**, not the Shopify editor preview
* Try clearing your browser cache or testing in an incognito window — changes can take a few minutes to propagate

Still not resolved? Reach out via chat or email us at [support@aftersell.app](mailto:support@aftersell.app) and include a description of your widget setup and the test order details.
