Your store
Export the order lines from your shop admin, keep only the order id and sku columns, and paste them. Quantity is ignored; an order either holds a product or not. Keep the orders oldest first so the hold-out check uses the newest. Lines starting with # are ignored. You can paste straight from a spreadsheet.
"Extra attach" is your guess: if 20% of one product's buyers also buy the other today, 40% extra means a 10% bundle discount lifts that to 28%. It grows with the square root of the discount. Unsure? Leave it, and read the break-even column instead.
Paste your products and orders, then click the button.
Result
Bundles, best first
| Bundle | Orders with both | Best discount | Bundle price | Break-even attach rise | Profit change (range) | Holds up? | Call |
|---|
How the discount changes the answer
| Bundle | 5% off | 10% off | 15% off | 20% off |
|---|
Each cell is the estimated profit change over the period of your order history, and the break-even attach rise in brackets: the rise in how often buyers add the second item that would make that discount exactly break even.
How it is calculated
Pairs: every two products that appear together in at least the minimum number of orders. Loss: each order that already holds both pays the discount on the pair's combined price, less the fee that revenue would have carried. Gain: a discount raises the share of one product's buyers who also add the other, by your "extra attach" fraction of the attach rate already observed (orders with both ÷ orders with that product), so a pair nobody buys together gains nothing. Every order that adds an item pays the bundle price for it, less fees, the item's unit cost and the handling cost. Best discount: the discount from 1% up to your limit with the highest estimated profit change, with extra attach growing as the square root of the discount. Break-even: the extra attach at which profit change is exactly zero at that discount; profit is linear in it. Holds up: your newest 30% of orders are held out; a pairing holds up if its share of paired orders there is at least half what it was in the older orders. Range: 300 seeded resamples of your orders (10th to 90th percentile). Call: "try" needs a positive estimate, a pairing that holds up, a positive low end, at least 10 orders with both items, and a break-even no more than half the assumed response; "thin" is a positive estimate on fewer than 10 orders; "skip" loses money at every discount.
Not modelled: shipping revenue, taxes, returns, stock limits, customers who would only buy at a discount, bundles of three or more, other discounts running at the same time, and seasonality. Unverified: the profit arithmetic is checked against hand calculations and the counting against brute force on invented data; the response to a discount is your assumption and has not been measured against any real store's bundle.
Common questions
Which products should I bundle together?
The ones your customers already buy in the same order. Paste your order history and the tool counts, for every pair of products, how many orders contain both, then prices each pairing: what the discount costs on the orders that already pair, what it earns if the discount makes more shoppers add the second item, and the discount where that trade is best. Pairings with only a handful of orders behind them are labelled thin rather than recommended.
How much discount should a bundle have?
Enough to move shoppers, no more. The cost of a bundle discount lands immediately on every order that already contains both items, and the benefit depends on how many more people add the second item. The tool searches discounts from 1% to 40% using the response you expect, and also shows the break-even: how much the discount must raise the share of buyers who add the second item before it stops losing money. If you cannot believe that rise, do not run the discount.
What is the break-even attach-rate rise?
The attach rate is how often a buyer of one item also buys the other. If today 20% of candle buyers add a wick trimmer, and a 5% bundle discount must lift that to 23% before it makes more profit than it gives away, the break-even rise is 15%. Small for pairs that already sell together and discounts that are thin on margin, large when the added item has little margin left after the discount, fees and handling.
Is the recommended discount a prediction?
No. The order history tells the tool which pairings exist; it cannot tell it how your shoppers respond to a discount, because your past orders contain no discounted bundle. That response is an assumption you set (40% more attach at a 10% discount by default, growing with the square root of the discount). The page shows profit at 5, 10, 15 and 20% and the break-even, so you can see how much of the answer rests on the assumption. Run the bundle for a few weeks and compare.
How does it check a pairing is real and not luck?
Two ways. It holds out your newest 30% of orders and checks the pairing still appears there at about the rate it did in the older orders, and it resamples your orders 300 times to show a range for the estimated profit change. Neither can make up for a few dozen orders; with fewer than 100 orders the page warns you, and a pairing seen in fewer than 10 orders is never recommended.
What does the tool assume about costs?
Each product's price and unit cost from your product list, a percentage fee on every dollar of revenue (2.9% by default, set your own for your payment processor or marketplace), and a handling cost for every extra item shipped. The fixed per-order fee does not change when an existing order adds an item. Shipping revenue, taxes, returns, stock limits and the products' own discounts are not modelled.
Is my sales data uploaded anywhere?
No. Order ids, products, prices and costs are read and analysed in this browser tab. Nothing is sent to a server, there are no accounts or cookies, and nothing is stored. It works offline once the page has loaded.