Market basket analysis
Which products sell together, and what are they worth?
Market basket analysis of an online coffee shop’s orders: which products sell together more often than chance, whether each pair holds in later months, and what offering it is worth.
What sells together, and what offering it is worth
Offers worth a month
€3,495
Extra margin from one offer per product, each picked for margin among the 38 offers that held in the test months. Picked for lift instead: €2,619.
Strongest pair
12.1 times
An order with an espresso machine holds a milk jug 12.1 times as often as the average order: 903 of the 109,172 orders of October 2025 to June 2026.
Pairs above chance
102 of 190
Pairs of the 20 products in at least 546 orders that share an order more often than chance.
Offers that held
38 of 204
Offers whose buyers went on to buy the second product in July to September 2026 more often than other customers, by more than chance explains.
The strongest pairs, and what offering them is worth a month
Slice it, filter it, drill into any pair
Margin a sale, as a share of the price: coffee 45%, brewing 40%, espresso 30%, tea 55%, cups and care 50%.
- Orders
- 109,172
- Pairs that pass
- 102 of 190
- Offers that held
- 38 of 204
- Offers worth a month
- €3,495
How the products connect
Lift for every pair
What sells with a pour-over dripper
Strongest partner
Paper filters (pack of 100)
Lift 4.2, €71 a month
Most margin a month
Gooseneck kettle
€339 a month, lift 3.9
Take-up of each partner, the 6 strongest
Pour-over dripper → Paper filters (pack of 100)
- Orders together
- 4,476 of 109,172
- Support
- 4.1%
- Take-up
- 53.3% of the orders holding a pour-over dripper
- Take-up the other way
- 32.6% of the orders holding paper filters
- Lift
- 4.2: 53.3% ÷ 12.6%
- New and returning
- 1,339 + 3,137 = 4,476
- Mined and test months
- 4,476 and 1,523
Same order, test months. In the test months, July to September 2026, 1,523 orders hold both, where chance predicts 343: a lift of 4.4, 68.0 standard deviations above chance. The pair holds.
Bought later. Of the customers who ordered in both periods without paper filters by June, those who had bought a pour-over dripper went on to buy paper filters at 25.6%, against 17.5% of all of them: 7.3 standard deviations above what chance predicts. The offer holds.
Worth. 436 orders a month hold a pour-over dripper without paper filters. Take-up is 53.3% against 12.6% of all orders, 40.7 points above chance; at 20% of that, 8.1% take a shown offer, at €2.00 margin each: €16 per 100 offers, €71 a month.
| Order | Month | Customer | Basket | Total |
|---|---|---|---|---|
| 2510-13335 | Oct 2025 | New, first order | Pour-over dripper €22, Paper filters (pack of 100) €5 | €27 |
| 2512-50906 | Dec 2025 | New, first order | Espresso beans, 1 kg €24, Pour-over dripper €22, Paper filters (pack of 100) €5, French press €29 | €80 |
| 2512-69419 | Dec 2025 | New, first order | Pour-over dripper €22, Paper filters (pack of 100) €5 | €27 |
| 2602-39862 | Feb 2026 | Returning | Pour-over dripper €22, Paper filters (pack of 100) €5 | €27 |
| 2606-55966 | Jun 2026 | Returning | Pour-over dripper €22, Paper filters (pack of 100) €5 | €27 |
| 2606-27312 | Jun 2026 | Returning | Pour-over dripper €22, Paper filters (pack of 100) €5, Cleaning brushes €7 | €34 |
Every rule that passes the filters
| Espresso machine | 903 | 0.8% | 34.3% | 12.1 | €26 | Holds | |
| Milk jug | 903 | 0.8% | 29.2% | 12.1 | €561 | Holds | |
| Espresso machine | 730 | 0.7% | 27.7% | 11.3 | €14 | Holds | |
| Descaling tablets | 730 | 0.7% | 27.3% | 11.3 | €520 | Does not hold | |
| Teapot | 1,583 | 1.5% | 41.9% | 10.1 | €25 | Holds | |
| Tea infuser | 1,583 | 1.5% | 34.9% | 10.1 | €118 | Holds | |
| Pour-over dripper | 4,476 | 4.1% | 53.3% | 4.2 | €16 | Holds | |
| Paper filters (pack of 100) | 4,476 | 4.1% | 32.6% | 4.2 | €44 | Does not hold | |
| Gooseneck kettle | 1,360 | 1.2% | 30.0% | 3.9 | €39 | Holds | |
| Pour-over dripper | 1,360 | 1.2% | 16.2% | 3.9 | €43 | Holds | |
| Gooseneck kettle | 1,195 | 1.1% | 26.4% | 2.1 | €6 | Holds | |
| Paper filters (pack of 100) | 1,195 | 1.1% | 8.7% | 2.1 | €16 | Does not hold | |
| Descaling tablets | 1,068 | 1.0% | 39.9% | 1.6 | €31 | Holds | |
| Espresso beans, 1 kg | 1,068 | 1.0% | 3.9% | 1.6 | €1 | Holds | |
| Coffee scale | 724 | 0.7% | 18.8% | 1.5 | €2 | Holds | |
| Paper filters (pack of 100) | 724 | 0.7% | 5.3% | 1.5 | €4 | Holds | |
| Milk jug | 1,109 | 1.0% | 35.9% | 1.4 | €23 | Holds | |
| Espresso beans, 1 kg | 1,109 | 1.0% | 4.0% | 1.4 | €1 | Holds | |
| Teapot | 990 | 0.9% | 26.2% | 1.4 | €7 | Does not hold | |
| Green tea, 100 g | 990 | 0.9% | 4.9% | 1.4 | €5 | Holds | |
| Travel mug | 639 | 0.6% | 10.8% | 1.4 | €6 | Does not hold | |
| Pour-over dripper | 639 | 0.6% | 7.6% | 1.4 | €4 | Does not hold | |
| Teapot | 973 | 0.9% | 25.8% | 1.4 | €6 | Does not hold | |
| Black tea, 100 g | 973 | 0.9% | 4.8% | 1.4 | €5 | Holds | |
| Tea infuser | 1,148 | 1.1% | 25.3% | 1.4 | €5 | Holds |
What the offers are worth a month
Each offer picked for margin
€3,495
A month, from one offer per product.
Each offer picked for lift
€2,619
A month, from the same offers that held.
Offers priced
38 of 204
Rules that pass the filters and held in the test months.
| Product in the order | Offer, most margin | Lift | Offers a month | Take-up of a shown offer | Margin a sale | A month | Offer, highest lift | A month |
|---|---|---|---|---|---|---|---|---|
| Espresso beans, 1 kg | Espresso machine | 1.3 | 2,973 | 0.2% | €104.70 | €522 | Descaling tablets | €22 |
| Filter beans, 500 g | Gooseneck kettle | 1.2 | 3,480 | 0.2% | €18.00 | €110 | Paper filters (pack of 100) | €46 |
| Ground coffee, 500 g | None held | €0 | None held | €0 | ||||
| Decaf beans, 250 g | Cleaning brushes | 1.4 | 1,180 | 0.4% | €3.50 | €17 | Cleaning brushes | €17 |
| Pour-over dripper | Gooseneck kettle | 3.9 | 783 | 2.4% | €18.00 | €339 | Paper filters (pack of 100) | €71 |
| Paper filters (pack of 100) | Filter beans, 500 g | 1.3 | 926 | 1.8% | €5.85 | €98 | Coffee scale | €63 |
| Gooseneck kettle | Pour-over dripper | 3.9 | 352 | 4.5% | €8.80 | €138 | Pour-over dripper | €138 |
| Burr grinder | Filter beans, 500 g | 1.3 | 297 | 2.0% | €5.85 | €35 | Filter beans, 500 g | €35 |
| French press | Pour-over dripper | 1.2 | 738 | 0.4% | €8.80 | €24 | Pour-over dripper | €24 |
| Espresso machine | Milk jug | 12.1 | 192 | 6.3% | €4.20 | €51 | Milk jug | €51 |
| Milk jug | Espresso machine | 12.1 | 243 | 5.4% | €104.70 | €1,365 | Espresso machine | €1,365 |
| Descaling tablets | Espresso beans, 1 kg | 1.6 | 179 | 2.9% | €10.80 | €56 | Espresso beans, 1 kg | €56 |
| Green tea, 100 g | Teapot | 1.4 | 2,143 | 0.3% | €18.70 | €114 | Teapot | €114 |
| Black tea, 100 g | Teapot | 1.4 | 2,131 | 0.3% | €18.70 | €109 | Teapot | €109 |
| Tea infuser | Teapot | 10.1 | 328 | 6.3% | €18.70 | €386 | Teapot | €386 |
| Teapot | Tea infuser | 10.1 | 243 | 7.6% | €3.30 | €61 | Tea infuser | €61 |
| Mugs, set of two | Decaf beans, 250 g | 1.2 | 563 | 0.4% | €3.60 | €8 | Decaf beans, 250 g | €8 |
| Travel mug | Espresso beans, 1 kg | 1.1 | 465 | 0.7% | €10.80 | €37 | Espresso beans, 1 kg | €37 |
| Coffee scale | Paper filters (pack of 100) | 1.5 | 349 | 1.2% | €2.00 | €9 | Paper filters (pack of 100) | €9 |
| Cleaning brushes | Black tea, 100 g | 1.2 | 542 | 0.7% | €3.85 | €16 | Paper filters (pack of 100) | €7 |
| Total | €3,495 | €2,619 |
What the analysis found
- Three kits make the five strongest pairs: an espresso machine with a milk jug and with descaling tablets, a teapot with a tea infuser, and a pour-over dripper with paper filters and with a gooseneck kettle.
- The money is in a few offers. Three bring 65% of the €3,495 a month: an espresso machine offered with a milk jug, €1,365; an espresso machine offered with espresso beans, €522; a teapot offered with a tea infuser, €386.
- Selling together is not the same as buying next. Paper filters and a dripper share an order 4.2 times as often as chance, yet customers who had bought filters went on to buy a dripper less often than other customers, 11.1% against 15.4%: most already own one. An offer goes to orders without the second product, so only offers that held this test are priced.
- New customers buy the kit. In a new customer’s first order a dripper and paper filters go together at a lift of 5.2, against 4.1 in returning customers’ orders.
How it works
01
Orders
109,172 orders, October 2025 to June 2026. Each is a customer, a month and the products in it.
02
Baskets
Each order becomes the set of products in it. Quantities and prices drop out.
03
Pair counts
Count the orders holding each product and each pair: 4,476 of the 8,403 orders holding a dripper hold filters.
04
Support, take-up, lift
- Support: share of all orders holding both
- 4,476 ÷ 109,172 = 4.1%
- Take-up: share of dripper orders holding filters
- 4,476 ÷ 8,403 = 53.3%
- Lift: take-up over filters’ share of all orders
- 53.3% ÷ 12.6% = 4.2
Above 1, the pair shares an order more often than chance. The filters drop pairs in too few orders, taken up too rarely, or too weak.
05
The test months
Rules mined on October 2025 to June 2026 are tested on July to September 2026: customers who had bought a dripper went on to buy filters more often, by 7.3 standard deviations. The rule holds.
The slices. The shop’s 45,607 customers place about 12,100 orders a month, at an average of €39.99. The rules are mined on the nine months from October 2025 to June 2026; the test months, July to September 2026, are held out. A new customer’s first order is the order in the month they first ordered; every other order is a returning customer’s, and the two add up to all orders. A category keeps the rules whose first product is in it.
Two tests on the months held out. The same-order test asks whether the pair still shares an order more often than chance in July to September 2026, by at least two standard deviations. The later test, the example analysis’s, asks whether customers who had bought the first product by June went on to buy the second more often than all customers who ordered in both periods and had not bought it yet. An offer “holds” when it passes the later test, because an offer goes to a customer who does not have the second product.
How the money is worked out. An offer goes to the orders that hold the first product and not the second: 783 orders a month hold a pour-over dripper without a gooseneck kettle. 16.2% of the orders holding a dripper hold a kettle, against 4.2% of all orders: 12.0 points above chance. The shop made no offers, so how many customers take one is an assumption, set with the slider: here 20% of those points, 2.4% of the orders shown it. At €18.00 margin a sale, that is €339 a month. Paper filters, the dripper’s strongest partner, earn €71: lift picks what belongs with a dripper, margin picks what pays beside it.
What this does not show. Which offers cause a sale. Every purchase in these orders was unprompted, so a customer who buys filters with a dripper does so without an offer, and a discount to them gives margin away. We recommend testing the priced offers with a random half of their customers left without them; the example analysis sizes that test. The prices and margins are the year’s; a new range or a price change calls for mining the rules again.
The full analysis, with the next offer for each of the shop’s main products and the test that would measure what an offer adds: which product to offer next, a market basket analysis.
Start here
Want to know what sells together in your own orders?
Up to thirty minutes on your question and your order data, then a fixed proposal.