You have an order export. You know your bestsellers. What you probably do not know is which products customers frequently buy together in ways that matter for bundles, cross sell placements and retention campaigns. The built in frequently bought together block on your Shopify store, or the related items from a discovery app, often pull from tags and collections rather than from your actual purchase data. This article walks you through finding real pairs in your own orders, testing whether they hold up, and putting them to work.
Key takeaways
-
Frequently bought together analysis scans your store's actual orders to find product pairs customers buy together, instead of relying on a Shopify theme default or a discovery app that guesses from tags and collections.
-
You can build a rough frequently bought together list from a single order export in a spreadsheet: count how many orders contain each product pair, compare that count with what you would expect if the two products were unrelated, and ignore pairs without enough data to trust.
-
Not every "bought together" pair is real. Two bestsellers overlap in baskets by sheer popularity. A pair only means something when the observed overlap is clearly higher than random chance, measured by lift.
-
Strong pairs feed bundles, product page cross selling and follow-up campaigns. Weak or substitute pairs waste those placements.
-
Shoppers who act on product recommendations tend to end with a higher average order value, but only when the recommendations reflect real baskets, which makes getting the right pairs in front of them worth the effort.
What is frequently bought together analysis?
Frequently bought together analysis looks at all your past orders to see which products customers actually buy in the same basket, instead of relying on whatever your theme or app shows in a frequently bought together section. It is a form of market basket analysis: scanning baskets to identify patterns where product pairs and sets appear more often than random chance.
This is the same idea behind Amazon's frequently bought together module. Amazon's algorithm reads an enormous number of shopping carts for patterns and surfaces them as recommendations shaped by purchase history, and recommendation engines are a large part of how Amazon sells. You are not Amazon, but association rule mining, the method underneath, works the same way on your store's data. E-commerce businesses of every size use frequently bought together insights to improve product recommendations, because purchase patterns show which products customers frequently buy together regardless of catalog size.
The difference from generic related items or a product recommendation widget is important. A built in frequently bought together block or discovery app often matches products by tags, collections or description similarity. That is a guess. Your purchase history is not a guess. For merchants selling replenishable products like coffee, skincare or supplements, the products that are bought together in the first order often decide whether the second order happens at all. The limits of the standard widget are covered separately; this article is about the analysis behind it.
How do I find which products are frequently bought together in my store?
Export your orders with one row per line item, list every unique product pair that appears in the same order, count how many orders each pair appears in, then compare that count with how often each item sells overall.
Columns you need: Order ID, Product ID or SKU, Product Name, Order Date. Order exports from a Shopify store or WooCommerce usually contain these fields by default.
The spreadsheet recipe:
-
Filter to completed orders only. Remove canceled, refunded or test orders.
-
Group rows by Order ID. For an order with products A, B and C, you should see three rows.
-
Generate every unique product pair inside each order: A+B, A+C, B+C.
-
Count distinct Order IDs per pair. This is your "baskets together" count.
-
Separately, count how many orders each individual product appears in, so you can later calculate whether a pair is special or just two bestsellers colliding.
From these counts you can compute three measures. Support measures how often products are purchased together across transactions (baskets together divided by total orders). Confidence is the probability of purchasing product B when product A is bought (baskets together divided by orders with A). Lift shows how much more likely products are bought together compared with random chance (observed baskets divided by expected baskets). Regular analysis of transaction data is what turns a guess about pairs into a decision, and this table is where it starts.
How many baskets does a pair need before it means anything?
Ignore pairs that appear together in only a handful of orders. Focus on pairs with a sensible minimum basket count and a stronger-than-random relationship.
A sensible floor for a mid-size store is a few dozen orders with the pair together. This is not a universal rule. A store with a few hundred total orders has a very different baseline from one with tens of thousands, so set the floor against your own order count and raise it as the store grows.
Raw counts alone are misleading. If coffee beans and paper filters are both among your bestsellers, they will land in the same basket often even if there is no special link between them. Expected baskets together equals the chance of product A being in an order, multiplied by the chance of product B, multiplied by total orders. Lift is observed baskets together divided by expected baskets. A lift above 1 means the pair is bought together more often than random. The higher it is, the more meaningful the cross selling opportunity.
What is the difference between bought together in one order and bought in a later order?
"Bought together" in the same order shows what belongs on a product page or in a cart frequently bought together block. "Bought in a later order" shows what should go into a replenishment or cross sell email after the first purchase.
Same-order pairs are about building a larger first basket and lifting average order value with accessories. Pairs bought by the same customer across separate orders show which product earns the second order and keeps the customer coming back. Order history reveals this kind of customer behavior, including when a reorder is due, and customer retention improves when you time the follow-up to purchase frequency rather than to a calendar.
Concrete example: customers buy coffee beans and filters together in the first order. But they might buy coffee beans first and a grinder in a second order three weeks later. That second case is invisible in a standard frequently bought together widget, because the widget only sees one basket at a time. To find it, you need the Customer ID column as well as the Order ID, and you count pairs per customer instead of per order. RFM customer segmentation and cohort retention analysis add context here: they tell you which customer groups come back at all, so you know whose later orders are worth reading.
Worked example: three frequently bought together pairs and what they mean
Illustration with round numbers, not a benchmark. Assume 10,000 completed orders in a calendar year.
Pair 1: Coffee beans and paper filters (strong complement)
Coffee beans appear in 2,000 orders. Paper filters appear in 1,500 orders. Observed orders containing both: 500. Expected if unrelated: (2,000/10,000) x (1,500/10,000) x 10,000 = 300. Lift = 500/300 = 1.67. This pair appears together far more often than chance. It is a strong cross selling candidate and a natural product bundle.
Pair 2: Multivitamins and collagen powder (bestseller trap)
Multivitamins appear in 3,500 orders. Collagen powder in 3,200. Observed together: 1,100. Expected: (3,500/10,000) x (3,200/10,000) x 10,000 = 1,120. Lift = 1,100/1,120 = 0.98. Nearly random overlap. Customers buy both simply because both are popular. High support, but these are not complementary products worth bundling together.
Pair 3: Dog food and travel water bottle (too rare to trust)
Dog food appears in 400 orders. Travel water bottle in 150. Observed together: 12. Expected: 6. Lift = 2.0, which looks high. But 12 baskets is not enough data. One promotion or seasonal shift could make this pattern vanish. Flag it as interesting, revisit it in a quarter, but do not build a frequently bought together block around it yet.
A frequently bought together section typically displays two or three items. Sessions that include product recommendations tend to end with a higher average order value, but only when the recommendations reflect real purchase behavior, not random bestseller overlap.
What do I do with the pairs?
Take the strongest pairs, verify they are truly complementary products, then act on them through bundles, product page cross sell and follow-up campaigns.
Specific actions:
-
Create product bundles that reflect real baskets. A "Morning Coffee Kit" with beans and filters, for example, where the combined price offers a small discount over buying separately.
-
Set up a frequently bought together block on individual product pages showing two or three items near the cart button. A combined price and a one-click button make the add easy. Think of the phone case and screen protector pairing: the main product plus the primary product's most common companion.
-
Update cart drawer suggestions and checkout upsell placements with your most reliable pairs.
-
For pairs bought in a later order, schedule the cross sell email and SMS campaigns around the likely reorder window. If shampoo is often followed by conditioner after a month, send that campaign a few days before the month is up.
A frequently bought together widget built from real pairs converts better than one built from tags, and dynamic product bundling that follows actual purchasing patterns is what lifts average order value rather than just cart size. The same pairs sharpen targeted marketing campaigns: a cross sell email that names the companion product customers actually buy reads as helpful, not as advertising. Amazon sellers know this well, because targeted ads on a companion product feed the frequently bought together recommendations on Amazon itself. Product images, volume discounts, a small gift and social proof all strengthen these placements, and cart upsells with the total price clearly shown help shoppers see the value without friction on mobile or desktop. The feature works best when the algorithm works from real data, not guesses.
Watch out for substitutes hiding inside frequently bought together recommendations
Not every frequently bought pair is a complementary product. Some products substitute for each other and should never be bundled or suggested side by side.
Examples: two different bag sizes of the same dog food flavor, two coffee bean roasts where customers normally choose one, or similar shampoos from the same brand line. How many products in your catalog are really "either/or" choices?
To check for substitution in the data, look for specific products that rarely appear together in the same order but frequently appear in separate orders from the same customers. Market basket analysis can also sort products into roles, such as openers that start a customer relationship and retainers that keep it going, and knowing which pairs are substitutes rather than complements helps with inventory as much as with merchandising. Affinsy's market basket analysis lists substitute pairs next to the complementary ones, so product bundles and cross selling do not prompt shoppers to switch instead of adding. When in doubt, review the product detail pages and ask: would a normal shopper ever want both of these at once, or are they choosing between them? Product cannibalization is the longer version of that question.
Doing the check yourself: from order export to a first draft frequently bought together list
You can get a rough frequently bought together list from a weekend's work in a spreadsheet, using only your existing order export.
File structure: one CSV with columns for Order ID, Customer ID (if available), Order Date, Product ID or SKU, Product Name, Quantity and Revenue per line. Nothing to install and nothing to connect. Just your store's order data.
The operations:
-
Remove canceled or refunded orders.
-
Create a grouped table of product counts by Order ID.
-
Generate pair combinations for each order.
-
Build a second pivot listing each product pair with the number of unique orders containing it.
-
Add helper columns: total number of orders, orders per product, expected baskets for each pair under randomness, then lift as observed divided by expected, and a filter for the minimum pair count you settled on earlier.
New stores that do not yet have enough data for statistical signals can pair products by hand from common sense, then replace that judgment with the data-informed rules as orders accumulate. Seasonal purchasing patterns matter too: a pair that only shows up in December is a gift bundle, not a year-round placement, so note the season of each pair as the catalog evolves. One report is not enough if you only run it once. This manual list is a good starting point, but running the same logic across many months, for later-order pairs and for RFM segments, is where a tool saves time and reveals retention patterns that are hard to see in a spreadsheet.

Next steps
You start with a one-time frequently bought together check. Then you turn the most reliable pairs into product page cross selling, cart offers and campaigns. Finally you build a habit of revisiting these pairs as the catalog and seasons change.
Review frequently bought together patterns quarterly, or whenever a new hero product launches. Update bundled products, Shopify theme settings, discovery app rules and frequently bought together recommendations accordingly. Agencies should build a "bought together review" into client reporting: show the top pairs, what changed since last period, which pairs now drive second orders, and which cross sell tests they plan next. That report becomes the deliverable, not a dashboard.
Affinsy reads a store's order history by CSV, webhook or API, runs market basket analysis and RFM segmentation together, and turns strong rules and replenishment timings into customer lists you export by hand for targeted campaigns.
Pull an export this week. Build your first frequently bought together table. Then decide whether to keep iterating in spreadsheets or move that work into a dedicated analysis workflow. The bundles and campaigns come from the data, not from guessing. If you would rather have the bought-together pairs, the substitute pairs and the reorder windows worked out from your own orders, the 7-day trial of Affinsy delivers them.
FAQ
How small can my store be for frequently bought together analysis to be useful?
Even stores with only a few hundred orders can learn something, but be strict about minimum basket counts and avoid overreacting to pairs that appear together in fewer than a couple of dozen orders. New online store operators might start by pairing products manually based on common sense, such as a phone case with a screen protector, then gradually replace that judgment with data-informed rules as more orders accumulate. For very low volume, it is often better to focus on obvious product combinations and improving merchandising before relying on statistical signals alone. No app can help you if the data is not there yet.
Should I include discounted or promotion-driven orders in my bought together analysis?
Include them. Discounted orders reflect how customers behave when you actually run promotions, which is exactly the behavior your cross selling should support. Run a quick comparison: one analysis with all orders and another excluding a heavy promotion period, to see whether any frequently bought together pairs only appear during a short-lived campaign at one price point. If a pair only surfaces during a single deep-discount event and disappears afterward, it might still work as a promo combo but is not a reliable everyday frequently bought together recommendation or a reason to sell bundled products year-round.
How often should I refresh my frequently bought together list?
A practical rhythm is every three to six months, with extra runs after big launches, catalog changes or seasonal peaks like Black Friday. Product roles shift: a new hero product can become the main opener, and its complementary product mix may change what belongs in your frequently bought together block. An ongoing schedule prevents the store from promoting outdated or low-stock pairs that no longer reflect how customers actually buy. This kind of deep dive into your data pays for itself in better customer engagement and more accurate bundling.
What if a frequently bought together pair hurts my margin?
A strong frequently bought together signal does not automatically mean the pair is good for profit. Review combined margin, shipping cost, and whether featuring it as a bundle with a small discount still leaves healthy revenue. Look for alternative complementary products around the same primary product that keep the frequently bought pattern but improve profitability, for example a higher-margin accessory instead of a heavy, low-margin add-on. The goal is to grow healthy revenue, not just cart size at any cost. Check your report before committing shelf space or ad spend.
How do bundles in my catalog affect frequently bought together patterns?
If you sell fixed bundles as single SKUs, their internal components will not appear as separate lines in the order export. That hides genuine complementary relationships at the component level. Where possible, report bundle contents as individual line items or run a separate analysis on bundle definitions so relationships like coffee plus mug or shampoo plus conditioner remain visible. A tool that sorts substitute and complementary roles at the product level helps distinguish real bought together behavior from artificial pairs created only by forced bundles. Place a test order with a bundle in your admin and check how the line items export before running your analysis.