Your customers are already telling you what to sell them next. The signal is sitting in your order data — you just need to know how to read it.
Basket analysis is the practice of examining which products customers buy together in a single transaction. It reveals co-purchase patterns that most merchants either ignore or guess at based on intuition. The difference between a store that cross-sells effectively and one that doesn't is usually not strategy — it's data.
What basket analysis actually measures
At its core, basket analysis answers a simple question: when a customer buys Product A, what else do they buy?
This goes beyond "frequently bought together" widgets. Proper basket analysis measures three things:
Support — How often does a product combination appear across all orders? If you have 10,000 orders and 800 of them contain both a phone case and a screen protector, the support for that pair is 8%. This tells you how common the combination is.
Confidence — Of all orders containing Product A, what percentage also contain Product B? If 2,000 orders include a phone case, and 800 of those also include a screen protector, the confidence is 40%. This tells you how predictable the relationship is.
Lift — Does Product A actually increase the likelihood of buying Product B beyond what you'd expect by chance? A lift above 1.0 means the products genuinely drive each other's sales. Below 1.0, and the "pattern" is actually weaker than random.
Most merchants skip straight to confidence and ignore lift. That's a mistake. Two products might appear together frequently simply because they're both popular, not because customers associate them. Lift separates real product affinity from coincidence.
What co-purchase patterns reveal
When you run basket analysis on real order data, certain patterns emerge consistently.
The obvious pairs you already know
These are the combinations that feel intuitive: shampoo and conditioner, left shoe and right shoe, printer and ink. They validate your existing product strategy but don't tell you much new. Their value is in quantifying the relationship — if 70% of shampoo buyers also grab conditioner, you can plan inventory ratios accordingly.
The surprising pairs you didn't expect
This is where real value lives. A skincare store might discover that 35% of customers who buy a vitamin C serum also buy a particular SPF moisturizer — not the one they've been promoting, but a specific mid-priced option they barely feature. A hardware store might find that buyers of a certain drill bit set have a 28% co-purchase rate with a specific set of safety goggles that sits three aisles away.
These unexpected affinities represent missed revenue. The products sell together naturally, without any merchandising support. Imagine what happens when you actually promote the combination.
The one-directional relationships
Sometimes Product A drives Product B, but not the other way around. Customers who buy a coffee maker often buy a particular grinder (high confidence from A to B). But grinder buyers don't necessarily buy that coffee maker (low confidence from B to A). This asymmetry matters for how you position the cross-sell — you promote the grinder on the coffee maker page, not the reverse.
The gateway products
Certain products act as entry points that predict larger baskets. A customer who adds a specific item to their cart tends to keep shopping, adding two or three more items. These gateway products deserve premium visibility — not because of their individual margin, but because of the total basket value they initiate.
How to act on basket analysis data
Data without action is just trivia. Here's how to turn co-purchase patterns into revenue.
Product bundling
If 40% of customers who buy Product X also buy Product Y, you have a natural bundle candidate. Price the bundle at a slight discount to buying separately — enough to feel like a deal, not enough to erode margin. The incremental revenue from increased bundle adoption more than compensates for the discount.
A practical approach: start with your top five product pairs by confidence (above 25%) and lift (above 1.5). Create bundles for those first. Measure the change in average order value over 30 days. Expand from there.
Product placement and store layout
For physical retail, co-purchase data should directly inform store layout. Products that sell together should be near each other, or at minimum, clearly cross-referenced with signage. For online stores, this means "frequently bought together" sections that are driven by actual basket data, not generic recommendation algorithms.
Recommendation timing
When to show a cross-sell matters as much as what to show. The three high-impact moments are:
- Add-to-cart — "Customers who bought this also bought..." immediately after an item is added.
- Cart review — Before checkout, surface the top co-purchase item for whatever is already in the cart.
- Post-purchase — Follow-up emails featuring the complementary product, especially for one-directional relationships where the customer bought the "trigger" product.
Testing across hundreds of stores suggests that add-to-cart is the highest-converting moment, followed by post-purchase email. Cart review can actually hurt conversion if it feels like an obstacle to checkout, so use it sparingly.
Inventory co-planning
If two products sell together 40% of the time, running out of one directly impacts sales of the other. Your reorder points and safety stock calculations should account for this dependency. When you reorder Product X, check the stock level of Product Y at the same time.
Running basket analysis in practice
You can run basket analysis manually by exporting order line items and building a co-occurrence matrix in a spreadsheet. For a store with fewer than 1,000 SKUs and relatively stable inventory, this works. Export orders, pivot by order ID, count pairwise product combinations, and calculate support, confidence, and lift.
For anything larger, you need tooling. Spark by MishiPay runs basket analysis automatically across your connected stores — Shopify, WooCommerce, Square, or any supported platform. It identifies statistically significant product pairs, filters out noise (pairs that appear together by popularity alone), and surfaces the combinations with genuine affinity. The output is actionable: specific product pairs, their co-purchase rates, and the direction of the relationship.
The advantage of automated analysis is that it updates as your data changes. A co-purchase pattern that was strong last quarter might weaken as customer preferences shift. New patterns emerge when you add products. Static, one-time analysis misses these shifts.
Common mistakes to avoid
Ignoring sample size. A pair of products that appeared together in 3 out of 4 orders has 75% confidence — and is completely meaningless with that sample size. Set a minimum support threshold (at least 30-50 co-occurrences) before drawing conclusions.
Treating all pairs equally. A high-confidence pair of $5 products generates far less incremental revenue than a moderate-confidence pair where one product is $80. Weight your cross-sell strategy by potential dollar impact, not just statistical strength.
Over-promoting cross-sells. If every product page screams "You also need THIS," customers tune it out or feel pressured. Pick one or two cross-sell suggestions per context, not five. Quality over quantity.
Never refreshing the analysis. Product affinities shift with seasons, new arrivals, and customer demographics. Run basket analysis monthly at minimum. Quarterly is too slow for most retail businesses.
Start with what you have
You don't need a data science team to start. Export your last 90 days of orders, identify your top 10 products, and manually check what appears in the same baskets. Even this simple exercise will reveal at least one or two cross-sell opportunities you're currently missing.
The stores that consistently grow average order value aren't doing it through aggressive upselling. They're doing it by understanding what their customers already want to buy together — and making it easy.
See what your customers buy together
Spark runs basket analysis across your store data and surfaces the product pairs that drive real revenue.