Best Upsell App for Shopify When Your Storefront Is Framer
The best upsell app for Shopify on a Framer storefront is one that runs at checkout or after the order is placed, because Shopify owns those pages and renders them itself. Anything that works by injecting a widget into a Liquid theme template — most product-page upsells, most cart-drawer cross-sells, most "frequently bought together" blocks — will not appear on a Framer product page, because there is no Liquid theme for it to inject into. The pre-checkout half of your offer stack has to be built in Framer instead.
That distinction is the whole article, and it is the thing merchants discover after installing. The app installs fine. The dashboard shows an active offer. Nothing shows up on the storefront.
What is a theme-injected upsell, and why does it vanish?
A theme-injected upsell is one delivered through a theme app extension — an app block the merchant drops into a section of their Liquid theme from the Shopify theme editor. Shopify raised the app block limit for theme app extensions to 30 per extension in February 2026, up from 25, which tells you how central that mechanism has become to the app ecosystem.
It also tells you exactly what breaks. A Framer storefront is not a Liquid theme. It pulls products through Shopify's APIs and renders its own pages, so there is no theme editor, no section, and no slot for an app block. The app's offer logic is intact; its only delivery mechanism is gone.
Where can each Shopify upsell actually render?
Here is the full map. Read it as a build plan: anything marked theme-injected is work you own in Framer, and anything Shopify-hosted is work an app can still do for you.
| Offer type | Delivered by | Renders on a Framer storefront? | Framer-side build needed |
|---|---|---|---|
| Product-page upsell / frequently bought together | Theme app extension (Liquid) | No | Component on the product page, variants added via cart API |
| Cart-drawer cross-sell | Theme app extension (Liquid) | No | Custom cart drawer with recommendation slots |
| In-checkout upsell | Checkout UI extension, Shopify-hosted | Yes — Plus only on the information, shipping and payment steps | None |
| Thank-you / order-status offer | Checkout UI extension, Shopify-hosted | Yes — all plans except Starter | None |
| Post-purchase offer | Post-purchase extension, Shopify-hosted | Yes — all plans except Starter, access request required | None |
| Native Shopify Bundles | Real bundle products via the bundles API | Yes — the product data syncs | Bundle option selector on the product page |
Four of those six survive. Two do not, and they happen to be the two most app roundups lead with.
Can you run a cart upsell app on a Framer storefront?
No, not with an app alone. Every cart upsell app and cart-drawer app for Shopify works by replacing or decorating the theme's cart drawer, which means it needs a theme. On a Framer storefront the cart lives in your own Framer components and in Shopify's Cart API, so a cart cross-sell is a component you build: read the cart lines, call Shopify's product recommendations, render the suggestion, add the variant on click.
The practical consequence is that cart upsell is the one placement where a Framer build genuinely costs more than a Liquid build. It is also the one where you get full design control over the moment with the highest intent in the funnel. Our product page template for Framer stores covers the component pattern this reuses.
Do post-purchase upsell apps work without a Liquid theme?
Yes, and this is the strongest placement available to a Framer store. Post-purchase and order-status offers render on Shopify's own pages after the customer pays, so your frontend is not involved at all. Shopify's documentation confirms post-purchase extensions are available on all plans except Shopify Starter, with two caveats worth planning around: the surface is still in beta, and a live store has to request access before an app can use it.
In-checkout upsells are narrower than the roundups suggest.
Checkout UI extensions for the information, shipping, and payment steps are available only to stores on a Shopify Plus plan. — Shopify checkout UI extensions documentation
Thank-you and order-status extensions are the exception and run on every plan except Starter. So a non-Plus Framer store has a real post-payment offer stack and no mid-checkout one — which is the same constraint a non-Plus Liquid store has. Framer changes nothing here. See Shopify checkout customization when your storefront is Framer for the full checkout-side picture.
What about Shopify bundle apps and native bundles?
A Shopify bundle app splits cleanly along the same line. If the app creates a real Shopify product bundle through the bundles API, the bundle is product data, and product data syncs into Framer like any other product. If the app only renders a volume-discount widget on the product page — the pattern Kaching Bundles and most "shopify product bundle" apps use — the widget is theme-injected and will not render.
Shopify's own free Bundles app is the safe default, with limits worth knowing before you design around it. A fixed bundle can contain up to 30 components, with a maximum of three options and 100 variants per bundle, and dynamic bundles stretch to 150 components. It also does not support mix-and-match bundles, nested bundles, custom products, or subscription purchase options, and it requires an upgraded checkout — stores still running checkout.liquid customizations are incompatible.
Within those limits, native bundles are the most Framer-friendly offer type there is: you design the selector, Shopify handles inventory and pricing.
How to pick the best upsell app for Shopify, in one pass
Work backwards from placement rather than from a top-ten list.
- Post-purchase and thank-you offers: install an app. This is free margin and your frontend is irrelevant.
- In-checkout offers: install an app if you are on Plus. If not, skip the placement entirely rather than paying for an app whose main surface you cannot reach.
- Product-page and cart offers: do not install an app. Build the component in Framer and drive it with Shopify's recommendation and cart APIs.
- Bundles: use native Shopify Bundles, or an app that writes real bundle products. Check for the bundles API in the listing before you install.
That ordering also fixes the billing problem. A single all-in-one Shopify upsell and cross-sell app typically charges for a stack of placements, and on a Framer storefront you can only use the Shopify-hosted part of it. Two narrow apps plus two Framer components usually costs less and renders more.
If you are syncing your catalog into Framer, FramerLink keeps the product, variant and bundle data current so the offers you build in Framer point at real inventory. The same logic applies to reviews, which have an almost identical theme-injected problem.
The short version: on a Framer storefront, an upsell app is a checkout and post-purchase tool. Everything before the checkout button is yours to design.
Frequently asked questions
What is the best bundle app for Shopify?
It depends on where the bundle must appear. If your storefront is Framer, pick a bundle app that builds real bundle products through Shopify's bundles API, because those carry into cart and checkout. Apps that only render a theme widget on the product page will not appear on a Framer page at all.
Can I bundle products on Shopify?
Yes. Shopify's free Bundles app creates fixed and multipack bundles on every plan. A fixed bundle can hold up to 30 components, and each bundle supports a maximum of three options and 100 variants. It does not support mix-and-match bundles, nested bundles, or subscription purchase options.
Can I bundle products in Shopify without using an app?
Not as a true bundle. Without a bundles app, the closest options are a product with variants that represent each pack size, or an automatic discount that fires when matching items are in the cart. Neither creates a single bundle product with its own inventory behaviour.
Sources
- Shopify Bundles app — Shopify Help Center
- Bundles eligibility and considerations — Shopify Help Center
- Technologies for customizing Shopify checkout — Shopify Developer Documentation
- Checkout UI extensions — Shopify Developer Documentation
- Increasing the app block limit to 30 for theme app extensions — Shopify Developer Changelog