Skip to content

Systems Stack

Merchandising: native bundles, apps, or theme code.

Bundles, upsells, cross-sells, frequently bought together. Native Shopify, apps, or custom theme code. When to install, when to skip, and when the app is slowing the page.

Last updated: September 10, 2026

Merchandising and AOV stack recommendations by revenue band
Band Install / use Skip Replace with
$50K/year Native bundles + theme FBT PickyStory, Zipify, ReConvert Manual metafield picks
$250K/year PickyStory/Bundler; test post-purchase Apps that add 400ms+ Theme code for tiers (native is B2B-only)
$1M/year Build in theme Heavy bundle/upsell JS apps Cart-drawer upsells + metafields

Merchandising stack at $50K/year

Install: Nothing. Use native bundles (free) if you need fixed bundles. Shopify's native bundles (launched July 2023, available on all plans) work for "buy these 3 products together for $X" or "bundle A + B + C = discount." They're free, server-rendered (fast), and don't require an app. If your bundles are fixed (same products every time), use native. Native doesn't do auto-updating bundle pricing, mix-and-match, or bundles that include a subscription, that's what pushes you to an app at higher bands. (For the subscription side specifically, Subscriptions covers native vs ReCharge vs Bold.)

Add: Theme code for "Frequently Bought Together." If you sell complementary products (phone case + screen protector, shampoo + conditioner), add a "Frequently Bought Together" section to the product page template. Manual product picks in the theme (via metafields or hardcoded). No app, no JavaScript. If this section converts at 5–10%, it pays for itself vs an app.

Skip: PickyStory, Zipify OCU, Upsell.com (formerly ReConvert), UpCart. Bundler's free plan covers basic bundles if native's limits become a problem before you're ready to pay for anything, worth trying before an app with a monthly fee. Beyond that, at $50K/year you're not paying for upsell apps that might drive 1–2 extra orders per month. Test product recommendations in the theme first. If they don't convert, an app won't fix it.

Kill signal: You're paying $50/month for an upsell app that added $80 in AOV last month. If the app cost exceeds the marginal revenue, kill it. Most upsell apps at this band cost more than they generate.

Merchandising stack at $250K/year

Install: PickyStory ($29.50–$49.50/month) or Bundler (free, or paid for more flexibility), or custom theme code. If you need dynamic bundles (customer picks 3 of 10 products, or "build your own bundle"), native bundles don't work. PickyStory's tiers are capped by attributed extra revenue ($1,000/month on the $29.50 tier, $2,000/month on the $49.50 tier), so outgrowing the cap is a real upgrade trigger, not a feature gap. Bundler is cheaper and has a free tier. Or build custom in the theme if you have dev resources (1–2 weeks dev time).

Add: Quantity breaks (volume discounts), with a catch. Shopify's native volume pricing rules live inside B2B catalogs, they don't render a "buy 2, save 10%" table on a normal retail product page. For a standard DTC store, quantity breaks still need an app (PickyStory, Bundler) or theme code, not just a native toggle.

Consider: Post-purchase upsells (Zipify OCU from $35/month plus 1% of upsell revenue, Upsell.com, formerly ReConvert, from $4.99–$14.99/month by order volume). Shows an upsell on the thank-you page (one-click add-on). Works if your AOV is $50–$100 and you're upselling a $10–$20 product (socks, travel-size, sample). Don't upsell a $200 product to someone who just spent $200. Test for 30 days: if it adds $100–$200/month in AOV, keep it. If not, kill it.

Kill signal: Product page JavaScript cost over 400ms. Run Lighthouse on the product page. If a bundle or upsell app is adding 400ms+ of JavaScript execution time, it's slowing conversions. Either replace with theme code or kill it. A 400ms delay can cost 1–2% conversion rate (worth more than the upsell revenue at this band).

Merchandising stack at $1M/year

Install: Nothing. Build in theme. Most bundle apps are slow (400–800ms JavaScript on the product page). At $1M/year, a 500ms delay on the product page costs you more than $100/month in lost conversions. Build bundles, quantity breaks, and "Frequently Bought Together" in the theme. Store bundle logic in product metafields (which products bundle, discount amount, rules), render in Liquid. No JavaScript bloat.

Replace with theme code: In-cart upsells. Show upsells in the cart drawer (Liquid + Shopify Cart API), not post-purchase. Most customers don't go back to the thank-you page to buy more. In-cart upsells convert 2–5x better than post-purchase. Build custom: "You might also like" or "Complete the set" in the cart drawer. No app needed. Dev time: 1–2 weeks.

Replace with theme code + discount codes: Quantity breaks. If you're using an app just to apply "buy 3, save 15%" discounts on the regular product page, that's not native for retail (native volume pricing is B2B-catalog only). Build the tiered-price display in the theme and apply the discount via Shopify's native discount codes or Flow. No app needed for the discount logic itself.

Kill signal: Bundle app JavaScript is 600ms+ on product page. If Lighthouse shows 600ms+ JavaScript execution time from a bundle or upsell app, kill it. A 600ms delay at this volume adds up in lost conversions over a year, and it's rarely worth it for what a $100/month app is doing. Replace with theme code.

Skip: Over-engineering recommendations. Don't build a recommendation engine unless you have 500+ SKUs and actual purchase data to train it. Most stores do fine with "Frequently Bought Together" (manual product picks in metafields) and upsells in the cart drawer (theme code). Rebuy and AfterSell offer AI-personalized upsells at this band, but for most stores under ~$2M/year they're hard to justify against cheaper, simpler options. Test before you commit to the subscription.

Native first

Install/skip: Prefer Shopify's native Bundles before PickyStory-class apps for fixed bundles. Combined Listings is a different, Plus-only feature that groups near-identical product variants (same item, different color or size) into one page, it's not a bundle and can't be used as one. App is justified when bundle rules are dynamic and merchandisers change them weekly.

Kill signal: Upsell app costs more per month than the uplift it attributes, or PDP script cost is obvious in a speed pass. Move static "frequently bought together" into the theme; keep the app only for rules you can't maintain in Liquid.

When to call us

We build custom bundles, quantity breaks, and upsell sections in the theme. We also audit your merchandising stack and replace slow apps with native code. Storefront, business automations, and email. A project or a retainer. Speed covers the broader problem.

Straight answers.

Native bundles (launched 2023) work for fixed bundles (3 products, one price). For dynamic upsells, quantity breaks, or BOGO, you need an app or custom theme code.

Next step

Contact us.

A short note about the store is enough.