makseong
Bundle Ledger9 października 20263 min czytaniaAutor Maksym Burkhan

Your bundle price ignores component sales: what Shopify's percentage discount is really based on

Ten tekst nie powstał jeszcze w twoim języku, więc czytasz wersję angielską.

You discount one product that is also part of a bundle. The product drops, the bundle stays where it was, and now buying the items separately can be cheaper than the bundle. We measured what Shopify's bundle discount is calculated from, and the answer explains this and a worse problem with mix-and-match bundles.

The percentage is taken from the bundle product, not the parts

A Shopify bundle is a product of its own with components attached. When a bundle app applies a percentage off through Shopify's cart function, that percentage is applied to the bundle product's price. We tested it: a bundle priced 77.00 with 20% off came to 61.60 in the cart. Then we changed one component's price from 10.00 to 6.00. The cart still showed 61.60.

  • The bundle price does not follow component prices on its own.
  • A sale on a component leaves the bundle on the old maths.
  • If the bundle price was set as "the sum minus a bit", after a component sale it can cost more than the parts.

Mix-and-match bundles: every selection costs the same

It gets worse when the customer chooses the contents. A mix-and-match bundle has one bundle product for every possible selection, so a percentage of its price is the same whatever the customer picks. We built two selections whose components added up to 25.50 and 30.00. Both cost 20.40 in the cart. One customer gets a bigger discount than you planned, and on cheaper selections you may be giving away less than the offer promised, or charging more than the parts are worth.

Doing the maths from the components

The fix is to calculate the discount yourself from the actual selection: add up the components the customer chose, take the percentage in whole cents, and set a fixed price on each component so the total lands exactly on that number. Then the price depends on the selection by construction, and a component sale flows into the bundle.

Two details matter:

  • Convert currency before calculating the discount, not after. If you convert already split prices, the "never more than the advertised total" rule holds in your shop currency but not in the currency the customer pays in.
  • Work in whole cents. Shopify sets a price per unit, so with quantities above one the lines cannot always hit the total to the cent. When they cannot, round in the customer's favour: the customer should never pay more than the advertised bundle price.

How fast a price change reaches the bundle

Shopify's bundle function cannot see component prices in the cart, so the bundle has to be kept in sync from outside: when a product price changes, the app rewrites the prices stored with the bundle. We timed that path six times, from the moment a price change was saved to the moment the bundle data was correct: 2.7 to 3.5 seconds, median 2.96. Short, but not zero, so a sale that starts at a set time is reflected within a few seconds, not instantly.

What to check after you put something on sale

  • Open each bundle that contains the product and compare its price with the new sum of the parts.
  • For mix-and-match bundles, add two different selections to the cart and compare totals. If they are equal, the discount is being taken from the bundle product.
  • Test in a second currency if you sell in more than one.

How Bundle Ledger handles it

Bundle Ledger calculates the bundle price from the selected components in whole cents, converts currency first, and updates the stored prices when a component price changes, typically about 3 seconds later. The price in the picker and the price in the cart come from the same calculation.

Autor Maksym Burkhan · Założyciel makseong

Maksym prowadzi makseong, studio programistyczne dla e-commerce i systemów webowych, i pisze o Google Merchant Center, feedach produktowych i problemach ze zgodnością, na które trafiają sprzedawcy.

Podobne poradniki

Sprawdź to na swoim sklepie

Zobacz Bundle Ledger