Tierwise
Quantity breaks and bundles, priced by Shopify at checkout.
Buy-more-save-more tiers and fixed product bundles, applied by a Shopify discount function at checkout, shown on the product page by a theme block, and measured order by order.

- Status
- In development
- Category
- Conversion
- Built with
- Shopify Functions · Theme app extension · Webhooks
What it does
- Quantity breaks: up to 10 tiers per offer, a percentage or a fixed amount off each unit, on chosen products or collections
- Bundles: two to five products, discounted on every complete set in the cart
- Optional start and end dates, read in the store's own time zone
- One automatic discount per store carries every offer, recreated on the next save if it is deleted
- A "Quantity breaks" product-page block that shows each tier's price before the shopper adds to cart
- Revenue, orders, units and discount given per offer, recorded from each new order
On this page
Tierwise lets a merchant say "buy two, save 10%; buy four, save 15%" or "these three together, cheaper" — and has Shopify itself apply the price at checkout through a discount function, rather than a script editing the cart. A product-page block shows the tiers before the shopper commits, and every order that used an offer is recorded so the dashboard can say what the offers actually sold. It is in development and not yet on the App Store.
Volume pricing is one of the oldest ideas in retail and one of the most fragile things to build on a storefront. “Buy more, pay less per unit” is easy to say. Making the number on the product page, the number in the cart and the number at checkout agree, for every combination of variants a shopper can assemble, is where most implementations come apart.
The problem this solves
The older way to do quantity discounts on Shopify was to let a script rewrite the cart: add hidden discount lines, swap in cheaper duplicate variants, or apply a code on the shopper’s behalf. Each of those works on the happy path and leaks at the edges. Duplicate variants pollute inventory and reports. Codes collide with the code the shopper brought from an email. Cart rewrites break when the theme changes.
Shopify now offers a cleaner seam: a discount function, a small piece of logic that Shopify itself runs at checkout to decide which lines get which discount. The price is computed where the order is computed. Tierwise is built on that seam.
What the first release does
A merchant creates offers of two kinds.
Quantity breaks apply to chosen products, chosen collections, or both. An offer has up to ten tiers. Each tier sets a minimum quantity — two or more — and a discount: a percentage, or a fixed amount off each unit. The cart gets the highest tier it reaches. Units are counted per product, across its variants, so two mediums and a large of the same shirt count as three.
Bundles name two to five distinct products. The discount applies to every unit of each complete set in the cart. Two complete sets get the discount twice; a third, incomplete set does not.
Either kind can be switched off, and either can carry a start and end date. Both dates are inclusive and read in the store’s own time zone, so an offer that ends on Sunday ends at the store’s midnight, not the server’s.
One discount per store
When an offer is saved, the app pushes the store’s whole set of offers to Shopify as configuration on a single automatic app discount, titled “Bundles & quantity breaks”. There is one such discount per store, however many offers exist.
That design choice is the answer to most of the questions a merchant will eventually ask. There is exactly one thing to look for in the Shopify discounts list. Turning an offer off is a change to data, not a discount to hunt down. And if the discount is deleted by hand in the Shopify admin, the dashboard warns that offers are not running, and the next save recreates it.
The discount combines with order discounts and shipping discounts. It does not combine with other product discounts — which is the safe default for a discount that already changes the price of the same lines.
How the function decides
At checkout, Shopify runs the function against the cart. It skips any offer that is switched off, outside its dates, or malformed. Then it evaluates bundles first: each bundle claims only the units that make up its complete sets. Whatever units are left on a line can still reach a quantity tier.
Each unit receives at most one offer. A shopper can never stack a bundle discount and a quantity discount on the same unit. Fixed amounts are set in the store’s currency and converted at the checkout’s presentment rate, so a shopper paying in another currency sees the same discount in their own.
What the shopper sees
The “Quantity breaks” block goes on the product template. It lists the tiers that apply to the product, each with the original price struck through and the discounted total beside it, and offers an “Add bundle” button for any bundle that contains the product. The block computes its prices with the same code the checkout function uses, and it talks only to the store’s own cart. It never calls the app’s server, so a slow app cannot slow a product page.
Measuring what the offers sold
When an order arrives, a background job reads its discount allocations and records, per offer, the units, the revenue and the discount given. When two offers touched the same line, units and revenue are credited once, to the offer that discounted the line most, while each offer keeps its own discount figure. A webhook delivered twice is recorded once.
The dashboard shows revenue, orders, units sold in offers and discounts given, with a revenue figure for each offer.
What it does not do yet
- If two quantity offers cover the same product, the first one that reaches a tier wins, and the product-page block shows that offer.
- The product-page price can differ from the checkout price by a cent in some currencies, because of rounding.
- The dashboard shows one currency. A store selling in several sees the totals summed without conversion.
- Attributed revenue counts the whole cart line, which can overstate it when a bundle covers only part of a line. Test and refunded orders are included.
- No bulk import of offers and no checkout upsell.
- It has been built and tested against a simulated Shopify, not yet against a live store, and it is not listed on the App Store.
How to judge a quantity-break app
Five questions worth asking:
- Does Shopify compute the discount at checkout, or does a script rewrite the cart? Only one of those survives a theme change.
- Do the product page and the checkout use the same arithmetic?
- What happens when a bundle and a tier both apply to the same unit? There should be a rule, and it should be stated.
- Does it create duplicate variants or hidden products? If it does, inventory and reports pay for it.
- How does it decide what an offer sold? Ask what happens when two offers touch one line.
Support and privacy
How to get help with Tierwise, and what it stores about your store and your customers.
Keep exploring
The catalogue in order — one step back, one step forward.
Tierwise isn't installable yet. Its progress lands in the changelog.