Shopify's native discount system has a significant blind spot: discounts only appear at checkout. You can create automatic discounts, set up volume rules, and configure bundle pricing — but the product page shows full price. The customer doesn't know about the savings until they're already in the checkout flow.
This matters because the product page is where the buying decision happens. A customer who sees "$18 per unit" doesn't know that buying three would save them $8. A customer who sees a cleanser at $24 doesn't know there's a routine bundle for $60 (saving $12 on three products). The discount exists, but it's invisible at the moment it would influence behavior.
This is the most common reason Shopify stores install a bundle or discount app — not to create new discounts, but to make existing savings visible before checkout.
Why Checkout-Only Discounts Underperform
The Timing Problem
Shopify's discount architecture is cart-and-checkout-level. When you create an automatic discount, it applies to qualifying carts during checkout. The product page doesn't know about it. The product displays at full price, and the customer makes their decision based on that full price.
The savings only appear when the customer gets to checkout — after they've already decided what to buy and how much of it. By that point, the discount is a pleasant surprise but not a behavior changer. The customer who would have bought three units (if they knew about the volume discount) has already added one.
The Data
Product bundles with visible pricing on product pages improve conversion rates by 15-25%, with best-in-class implementations reaching 40%. That's the difference between visible and invisible pricing. The products are the same. The discounts are the same. The only difference is whether the customer sees the savings before or after their buying decision.
The real-world examples are consistent:
- Elizabeth Mott went from $19 to $44.56 AOV by displaying complete routine bundle pricing on product pages — a 134% increase from simply making the offer visible.
- HiSmile achieved 80% of orders as bundles with product page bundle offers, contributing to $300 million in annual revenue.
- Rhode Skin grew kit revenue from $948,000 to $2.53 million per month with visible kit pricing.
None of these brands invented a revolutionary discount. They made existing savings visible at the point of decision.
What to Display on the Product Page
Volume Discount Tables
For products customers buy in multiples — basics, consumables, supplements, pet food, skincare:
| Quantity | Price Each | Total | You Save |
|---|---|---|---|
| Buy 1 | $18.00 | $18.00 | — |
| Buy 2 | $16.20 (10% off) | $32.40 | $3.60 |
| Buy 3 | $15.30 (15% off) | $45.90 | $8.10 |
| Buy 4+ | $14.40 (20% off) | $57.60 | $14.40 |
The impact: A customer who came for one $18 item sees they can save $14.40 by buying four. The thought "I'll use them eventually" pushes AOV from $18 to $58.
The critical element: The pricing table must be visible on the product page — near the Add to Cart button, not buried below the fold. On mobile (53%+ of ecommerce traffic), the table must be fully visible and functional without horizontal scrolling.
Bundle Pricing Displays
For complementary products that form natural sets — skincare routines, recipe kits, outfit bundles:
Show the individual price of each product, the bundle price, and the explicit savings:
"Complete Your Routine"
- Cleanser: $24
- Toner: $18
- Moisturizer: $28
Individual total: $70- Bundle price: $59.50 (Save $10.50)
The three elements — individual prices (anchor), bundle price, and explicit savings — all need to be visible. Without the anchor ($70), the bundle ($59.50) is just a number. Without the savings ($10.50), the deal isn't obvious.
Automatic Discount Messaging
For store-wide or category-wide automatic discounts, display the savings on affected product pages:
"This product qualifies for our 10% automatic discount — you'll save $2.40 at checkout"
Or better: show the discounted price directly:
$24.00 $21.60 (automatic 10% off applied at checkout)
Free Shipping Progress
If you have a free shipping threshold, show how the current product fits:
"Add this to your cart and you're $8 away from free shipping!"
This bridges the product page to the cart-level incentive, making the threshold feel achievable while the customer is still deciding.
How to Implement This on Shopify
Option 1: Manual "Compare At" Prices
Shopify lets you set a "compare at" price on individual products, which displays as a strikethrough price on the product page. This is built into every theme.
Limitations:
- Static — doesn't respond to automatic discounts or quantity changes
- Must be updated manually for each product
- Can't display conditional pricing (volume tiers, bundle conditions)
- No pricing tables or bundle displays
- Doesn't sync with actual discount rules
This works for permanent markdowns but not for dynamic discount strategies.
Option 2: Custom Theme Code (Liquid)
You can write custom Liquid code in your theme to display conditional pricing. This requires a developer, needs updating when Shopify changes APIs, and can break during theme updates. For stores with developer resources and specific needs, this is an option — but for most stores, it's more maintenance than it's worth.
Option 3: Bundle/Discount App with Theme Extensions (Recommended)
This is how most stores solve it. A bundle app handles both the pricing logic and the product page display through Shopify's theme app extension system.
Buno renders bundle pricing, volume discount tables, and savings displays directly on your product pages through OS 2.0 app blocks. You add the block in the theme editor — drag and drop into position — and the pricing display renders as part of your theme.
Technical approach:
- Shopify Functions: Discount logic runs server-side inside Shopify's infrastructure. Fast, reliable, and doesn't inject JavaScript into your storefront.
- Theme app extensions: The pricing display renders as a native theme component. It looks like part of your theme because it is part of your theme — not an externally loaded widget.
What this means for page speed: Zero impact from injected scripts. The display is a theme component. The discount calculation is server-side. This is the modern approach that replaced older apps using client-side JavaScript.
What to Avoid
Apps that inject custom JavaScript: Older discount apps add script tags to your theme that load external JavaScript. This creates page speed issues (each script is a network request), can break during theme updates, and may conflict with other apps. Look for apps built on Shopify Functions and theme app extensions instead.
Multiple overlapping display apps: If you have two apps trying to show pricing on the same product page, they'll conflict visually and potentially show contradictory information. Use one app for discount display.
Implementation Checklist
-
Identify your highest-traffic product pages. These are where visible pricing has the most impact.
-
Decide what to display:
- Volume tiers (for products bought in multiples)
- Bundle pricing (for complementary products)
- Automatic discount messaging (for store-wide offers)
- Free shipping proximity (for threshold incentives)
-
Install a bundle app. Buno handles all four display types through theme app extensions.
-
Add the app block to your product page template. In the theme editor, position the pricing display near the Add to Cart button — this is where it has the most influence.
-
Customize appearance. Adjust colors, fonts, and layout to match your store's design. A pricing display that looks native to your site converts better than one that looks like a third-party plugin.
-
Test on mobile. Load your product page on a phone. Can you see the pricing table without scrolling? Is the "Add Bundle to Cart" button thumb-reachable? Over half your traffic is mobile — if the display doesn't work on a phone screen, you're missing most of the potential impact.
-
Verify discount accuracy. Add the bundle or volume quantity to cart, go through checkout (test mode or 100% discount code), and confirm the displayed savings match the actual checkout price.
Before and After
| Without Product Page Display | With Product Page Display |
|---|---|
| Customer sees $18 per unit | Customer sees "Buy 3 save 15% — $15.30 each" |
| Buys 1 unit ($18 order) | Buys 3 units ($45.90 order) |
| Doesn't know bundle exists | Sees "Complete Routine" bundle with savings |
| Checks out at full price | Checks out with visible 15% bundle discount |
| No anchor price, no reference point | Sees strikethrough price and explicit savings amount |
The products are the same. The discounts are the same. The only difference is visibility — and that visibility drives a 15-25% conversion rate improvement and a 20-35% AOV increase.
Don't create discounts that nobody sees until checkout. Show the savings where the buying decision happens: the product page.
