Launching product bundles to raise Average Order Value is a proven growth lever. Yet many Shopify merchants rely on guesswork or unvetted widgets. They often discount items that already sell together at full price. Or they pair bulky slow-movers that trigger postal rate jumps and destroy contribution profit.
To choose products to bundle on Shopify profitably, mine your historical order data. Extract line-item orders. Scrub out past promotional noise. Measure baseline co-purchase affinity. Then filter candidate pairs through our 5-criteria scorecard before offering any discount.
Our judgment is clear: high co-purchase frequency is not proof that you need a discount. When customers already buy two items together organically, a discount burns margin needlessly. An undiscounted kit or cross-sell captures full profit.
Why Intuition Fails: The Frequently Bought Together Trap
Most bundling strategies start with guesswork. Store owners look at bestsellers and pick items that seem related. Or they install automated widgets that display items frequently added to carts. Both approaches often fail financially.
The primary flaw in standard advice is treating correlation as an automatic mandate for discounting. Suppose historical checkout data shows that 20% of cookware buyers already buy a spatula at full retail price. Offering an uncalibrated 15% bundle discount risks subsidizing existing demand without generating incremental volume. Assuming customers already intend to buy the pair together at full price, an unnecessary discount surrenders Contribution Margin without winning extra volume.
The second trap is pairing popular items with slow-moving dead stock. Merchants do this to clear warehouse space. When secondary items are bulky or heavy, shipping costs spike. Extra package dimensions push the parcel into a higher courier bracket. The resulting postal step-cost quickly destroys the profit of the order. You must validate your transaction data before adjusting prices.
How to Extract and Scrub Shopify Historical Order Data
Do not rely on top-level revenue dashboards. You need raw transaction records to uncover true buying habits. While Shopify provides built-in analytics reports, reporting interfaces and available metrics often vary by plan and platform updates. To achieve consistent, plan-agnostic accuracy, exporting raw transaction records via line-item CSV is the universally reliable method to uncover genuine buying habits.
Exporting Line-Item Order CSV Data
A thorough analysis requires exporting 90 to 180 days of order history. Review the official instructions in the Shopify order export documentation.
Follow these admin steps:
- In your Shopify admin, go to Orders.
- Click Export in the top right corner.
- Select All orders or pick your specific date range (90–180 days recommended).
- Select CSV format.
- Click Export orders. For large order volumes, Shopify will process the file in the background and deliver the download link to your store email.
In this CSV file, multi-item orders appear across separate rows sharing the same order Name. Key columns for affinity analysis include:
- Name: The unique order number identifier.
- Lineitem name: The title of the purchased item.
- Lineitem sku: The specific product SKU code.
- Lineitem quantity: The count of units ordered.
- Lineitem price: The price charged per unit.
- Discount Code & Discount Amount: Identifiers for promotions and price concessions.
Scrubbing the Dataset for Observed Affinity
Raw order files contain promotional distortions. You must clean the spreadsheet before calculating affinity rates:
- Remove Promotional and Distorted Orders. Filter out orders where Discount Code is populated or Discount Amount is greater than zero. Promotional flash sales obscure baseline customer willingness to pay. Also remove canceled, refunded, or fraudulent orders.
- Normalize SKU Sets per Order. Group rows by order Name. Count distinct SKUs rather than unit quantities. Orders where a customer bought several units of the same SKU reflect replenishment volume, not cross-product bundling. Single-SKU volume breaks belong in dedicated tiered pricing.
- Retain the Full Valid Base for Denominators. Do not discard single-item orders when computing affinity rates. Your denominator must encompass all valid orders containing your anchor product (including single-item purchases). Use multi-line orders strictly to identify which companion items appear alongside it.
Calculating Baseline Co-Purchase Affinity
Calculate the observed co-purchase rate for each candidate pair using this formula:
Observed Co-Purchase Rate = Orders with Product A and B ÷ Total Valid Orders with Product A.
For example, suppose you review 100 valid orders containing Product A: 80 orders contain Product A alone, 10 contain Product A + B, and 10 contain Product A + C. The observed co-purchase rate for the A + B pair is 10 ÷ 100 = 10%. If you mistakenly pre-filtered your spreadsheet to only the 20 multi-item orders before calculating the rate, your calculation would artificially jump to 10 ÷ 20 = 50%, completely distorting your merchandising assessment.
Interpret your observed baseline results using our practical rule of thumb:
- High Observed Affinity (>15%). Shoppers frequently purchase both items together at full price without external prompting. Demand is already established. Do not discount this pair immediately; test it as an undiscounted kit or cross-sell to preserve full contribution margin.
- Moderate Affinity (3% to 10%). Shoppers recognize the product synergy, but may hesitate to complete the pairing. This range is the prime candidate for testing a modest 10% to 15% bundle discount incentive to drive incremental basket size.
- Low / Negligible Affinity (<2%). Customers rarely combine these items naturally. Bundling them without a compelling thematic story or clearance incentive is unlikely to convert.
The 5-Criteria Gated Product-Pair Scorecard
A strong affinity score is a starting point, but operational viability matters just as much. Before publishing an offer, test candidate pairs against our five gated criteria. A failure on any gate disqualifies the pairing.
Gate 1: Functional Complementarity
Does Product B directly support the use or care of Product A? High-performing bundles address one specific customer job. Pairing a French press with specialty coffee beans makes immediate sense. Pairing a French press with a random ceramic vase creates friction and lowers conversion.
Gate 2: Blended Contribution Margin Headroom
Does the combined pair leave enough margin after COGS, fulfillment fees, and credit card processing? If both items carry thin 40% gross margins, an aggressive 15% discount can easily erase operational profit once picking, packaging, and shipping step-costs are subtracted. Always calculate your net contribution headroom before committing to a discount depth.
Gate 3: Shipping Step-Cost Feasibility
Physical orders require packaging and freight. Carrier-calculated rates and weight-based rate tables operate on discrete weight brackets, as shown in the Shopify shipping rates documentation.
Suppose your hero item weighs 14 ounces in a small box. Adding a bulky accessory can push the parcel over 16 ounces. If shipping costs jump from $4.50 to $11.00, that $6.50 postal step-cost can easily wipe out the remaining margin of a $15 add-on. Keep combined dimensions within your existing carrier tier.
Gate 4: Inventory Velocity Balance
In Shopify, bundle stock availability is dictated by the component item with the lowest inventory count. This behavior is outlined in the Shopify bundle considerations guide. Inventory levels across components update in real time.
For native Shopify bundles, total bundle inventory equals the lowest available component stock divided by the quantity required per bundle: min(floor(Stock / Quantity)), assuming ‘Continue selling when out of stock’ is disabled. Product A may have 800 units in stock, but if Product B has only 20 units, your bundle stops selling after 20 orders (though remaining units of Product A can still sell independently). Secondary items must have reliable supplier lead times so they never bottleneck your bestselling hero product.
Gate 5: Incentive vs Full-Price Routing
Does this pair genuinely require a price discount to convert? When observed co-purchase frequency is high (>15%), prioritize protecting margin by testing an undiscounted upsell first. When affinity is moderate (3% to 10%), provide a modest 10% to 15% discount incentive to stimulate incremental basket additions.
The 4-Quadrant Product-Pair Action Matrix
Score your candidate pairs and assign them to an operational quadrant:
| Quadrant | Profile | Strategy | Format |
|---|---|---|---|
| Quadrant 1 | Moderate Affinity and Ample Margin | Offer a 10% to 15% discount bundle | Kaching Bundle Upsell deal |
| Quadrant 2 | High Observed Affinity (>15%) | Keep full retail price and avoid discounts | Undiscounted kit cross-sell |
| Quadrant 3 | Overstocked SKU and Low Unit COGS | Liquidate excess units as added value | Free Gift with Purchase offer |
| Quadrant 4 | Heavy Dimensions or Thin Margin | Keep products separate and do not bundle | Standalone product listings |
- Quadrant 1 (Fixed Discounted Bundle): Complementary items that convert better with a small price incentive. This setup fits Kaching Bundle Upsell widgets cleanly.
- Quadrant 2 (Full-Price Upsell): Products that shoppers frequently buy together anyway. Protect your margins by displaying the companion item at full price.
- Quadrant 3 (Free Gift with Purchase): Surplus stock with high perceived value but minimal unit cost. To compare free gifts with cash discounts, read Free Gift vs Discount on Shopify.
- Quadrant 4 (Do Not Bundle): Pairings that trigger steep courier weight jumps or thin margins. Sell these items separately.
Technical Setup with Kaching Bundles
After finding a qualified pair, you need an effective way to showcase the offer. While Shopify offers a free native Bundles app suitable for basic fixed multipacks, dedicated apps like Kaching Bundles are built to launch conversion-focused on-page upsell modules directly on product pages without Liquid theme edits.
The app holds the Built for Shopify badge on the Shopify App Store, confirming compliance with platform performance and UX standards. Kaching offers a 7-day free trial, with the Starter plan beginning at $14.99/month (covering up to $1,000 in additional bundle revenue). Merchants can use coupon code SSK20 for 20% OFF.
Understanding Kaching Bundle Deal Types
The app provides three core deal types. The Kaching bundle types guide covers each option:
- Quantity Break: Tiered volume pricing on a single SKU.
- BXGY Discount: Buy X Get Y deals with automated deal math.
- Bundle Upsell: Multi-product bundles grouping different complementary items or variants.
For cross-product pairings, choose Bundle Upsell. In Kaching Bundles, this deal type lets you hand-pick companion items and set custom discounts per product.
Step-by-Step Setup: Building a Bundle Upsell Offer
Set up your cross-product deal with these steps. They match the official upsell setup instructions:
- In your Shopify admin, open the Kaching Bundles dashboard.
- Click Add new deal to begin.
- Pick the Complete the bundle template.
- Adjust Visibility to display the offer on your anchor product page.
- Click Select a product to choose the complementary product you want to offer alongside the anchor product.
- Click Add product if you want to attach additional complementary items to the bundle.
- Set item discounts, choosing percent reductions or fixed dollar amounts.
- Match the layout styling and text colors to your brand theme.
- Save and publish your deal to launch it live on your store.
Modern Shopify Architecture: Functions and Theme Blocks
Earlier bundle tools relied on theme script modifications or draft order hacks. Those legacy workarounds broke easily during theme updates. They also caused sync issues with third-party logistics warehouses.
Modern bundle applications utilize native Shopify infrastructure:
- Theme App Extensions: Kaching Bundles renders widgets through Shopify theme app extensions. It injects dynamic blocks into product pages without editing Liquid template files.
- Shopify Functions: Modern apps leverage Shopify Functions (such as the Cart Transform and Discount APIs) to combine items and calculate discounts server-side, preventing cart desynchronization and 3PL fulfillment errors.
Checkout Combinations and Coupon Stacking
In Shopify, all deals built in Kaching Bundles execute as product discounts at checkout. This classification governs checkout rules. The Kaching discount combinations guide outlines each case:
- Order Discounts & Shipping: Bundle product discounts combine smoothly with order-level promotions and coupon codes. Note that automated free shipping thresholds set via store shipping profiles apply automatically based on the final order subtotal.
- Product Discounts: To let shoppers combine manual coupons with bundles, check the box for Product discounts inside the Combinations card in Shopify admin. Keep in mind that Shopify applies the highest eligible discount to an individual item rather than stacking multiple product-level discount codes on the same SKU.
- Protecting Margin: If you want to stop shoppers from stacking extra promo codes on bundles, leave discount combinations turned off. To manage coupon restrictions, see Exclude Shopify Bundles from Discount Codes.
Monitoring Daily Performance with CSV Exports
Track conversion rates and average order values after your bundle goes live. Kaching Bundles includes built-in analytics. It exports daily time-series records to CSV. Review details in the Kaching CSV export documentation.
The export tracks daily metrics per bundle deal identifier, including visitor counts, completed orders, and gross bundle revenue (orders containing deal items). Combine these records with your internal COGS, packaging, and shipping figures to verify that your bundle generates healthy net contribution dollars over time.
Unit Economic Modeling: Contribution Profit Breakdown
We review an illustrative merchant scenario across four distinct order configurations to show why careful product selection matters. (Illustrative Merchant Scenario)
Standard Financial Metric & Cost Scope
We measure profitability using Contribution Profit. Top-line sales figures create blind spots. They ignore fulfillment step-costs and processing fees:
Contribution Profit = Net Revenue − COGS − Pick/Pack/Packaging − Shipping Subsidy − Payment Processing Fees.
Payment Processing Fees = Net Revenue × 0.029 + $0.30.
This illustrative scenario assumes standard US Shopify Payments processing fees of 2.9% plus $0.30 per transaction (substitute your store’s actual gateway rate). Shipping subsidy represents the merchant-paid freight portion beyond customer-paid shipping. Pick, pack, and packaging covers warehouse materials and labor.
Illustrative Basket Contrast
This table contrasts four distinct order scenarios. (Hypothetical Example)
| Scenario ID | Configuration | Net Revenue | COGS | Pick / Pack | Shipping Subsidy | Processing Fees | Contribution Profit |
|---|---|---|---|---|---|---|---|
| MATH-001 | Standalone Hero Item A | $50.00 | $12.00 | $3.00 | $4.00 | $1.75 | $29.25 |
| MATH-002 | Full-Price Organic Cross-Sell (A + B) | $75.00 | $18.00 | $4.50 | $5.50 | $2.48 | $44.52 |
| MATH-003 | Discounted Bundle (A + B at 15% off) | $63.75 | $18.00 | $4.50 | $5.50 | $2.15 | $33.60 |
| MATH-004 | Dead-Stock Bundle (A + C at 25% off) | $60.00 | $22.00 | $6.00 | $11.00 | $2.04 | $18.96 |
Analysis of the Financial Findings
These figures highlight two vital lessons. They show how bundling affects profit:
- The Dead-Stock Shipping Trap (MATH-004). Pairing Hero Item A with Bulky Slow-Mover C at a 25% discount brings in $60.00. However, Product C requires a larger box. This raises pick and pack to $6.00. Worse, the bulky parcel triggers a dimensional weight jump. The shipping subsidy rises to $11.00. Processing fees take $2.04. The resulting Contribution Profit is $18.96. The merchant earns $10.29 less profit than selling the hero item alone ($29.25). Nominal sales rose, but cash profit fell.
- The Organic Discount Penalty (MATH-002 vs MATH-003). Selling an organic pair at full price (MATH-002) delivers $44.52 in Contribution Profit. Applying an unneeded 15% discount (MATH-003) drops Contribution Profit to $33.60. Assuming the customer would have bought the pair at full retail price, this represents a $10.92 loss in profit per transaction for no additional volume. Save discounts for product pairs that need an incentive to convert.
To calculate your safe discount ceiling, read Quantity Break Discount Depth Ceiling. For sales volume targets, check the Shopify Discount Break-Even Calculator.
Pre-Launch Operational Checklist & Platform Limits
Verify these operational checks before pushing your bundle live. Do not skip any item:
- Verify Shopify Native Component Limits. Standard Shopify native bundles allow up to 30 component products, a maximum of 100 variants, and 3 options per bundle. Native bundles do not support subscriptions, pre-orders, or legacy checkout.liquid edits.
- Audit Inventory Balances. Native bundle inventory availability equals the lowest component stock divided by units required: min(floor(Stock / Quantity)) (provided ‘Continue selling when out of stock’ is off). Make sure secondary items have ample stock runway.
- Check Shipping Box Sizes. Pack test items together. Confirm that the parcel weight and size stay below carrier rate thresholds.
- Test Discount Rules at Checkout. Run a test order. Verify that your bundle discount applies correctly. Confirm that unintended coupons cannot be stacked on top.
- Confirm Mobile Layout. Make sure the bundle block renders cleanly above the mobile fold. It must never block primary variant selectors.
Related Merchandising & Discount Guides
Choosing bundle products via order data is one part of your merchandising plan. Explore our related implementation guides:
- Collection-Wide Volume Pricing: Shopify Quantity Discounts on Multiple Products
- Single-SKU Tiered Breaks: Profitable Shopify Quantity Breaks
- Mechanism Selection: Quantity Breaks vs BOGO vs Bundle Upsell
- Free Gifts vs Direct Discounts: Free Gift vs Discount on Shopify
- Discount Ceiling Formulas: Quantity Break Discount Depth Ceiling
- Break-Even Sales Volume: Shopify Discount Break-Even Calculator
- Pricing Formatting & Framing: Shopify Bundle Percentage vs Fixed Discount
- Checkout Coupon Restrictions: Exclude Shopify Bundles from Discount Codes
- Mix-and-Match Custom Bundles: Fixed vs Mix and Match Shopify Bundles
- Mixed-Margin Catalog Pricing: How to Price Shopify Bundles with Mixed Margins
Frequently Asked Questions
How do I choose products to bundle on Shopify using order data?
Export your line-item order history to a CSV file from Shopify admin. Filter out promotional orders and normalize multi-unit orders. Then calculate the observed co-purchase rate against all valid orders containing your hero product. Candidate pairs with moderate affinity (3% to 10%) are ideal for testing a 10% to 15% bundle discount incentive, while high-affinity pairs (>15%) should be tested as undiscounted kits to protect Contribution Margin.
Can I see product co-purchases directly inside Shopify analytics?
While Shopify provides standard analytics and reporting features, reporting views can vary across plan tiers and interface updates. To ensure accurate, plan-agnostic analysis with complete line-item visibility, exporting 90 to 180 days of order history via CSV remains the most reliable method for scrubbing promotional noise and computing affinity.
What are the main platform limits for Shopify native bundles?
Shopify native bundles support up to 30 component products. They allow a maximum of 100 variants and up to 3 options per bundle. In addition, native bundles do not work with subscriptions, pre-orders, try-before-you-buy programs, or legacy checkout.liquid edits.
How does Shopify determine inventory availability for product bundles?
For native bundles, Shopify calculates stock based on the component item with the lowest available inventory divided by the quantity required per bundle: min(floor(component stock / bundle quantity)). Inventory levels across all component variants update across your catalog in real time.
Why does bundling bulky items often reduce contribution profit?
Carrier-calculated and weight-based shipping rates in Shopify operate on discrete weight brackets. Adding a bulky secondary item pushes the package into a heavier postal bracket. These extra shipping step-costs easily wipe out the item margin.
How do deals created in Kaching Bundles interact with Shopify discount codes?
Deals in Kaching Bundles execute as product discounts at checkout. They combine smoothly with order-level promotions and automated free shipping rules. To allow combinations with additional product discount codes, check the Product discounts box under Combinations in your Shopify discount settings (note that Shopify applies the best discount to each individual line item).
Final Merchandising Takeaway
Profitable bundling relies on clean data, careful margin analysis, and parcel weight checks. When you build bundles from scrubbed transaction records, you safeguard your contribution profit. You also provide shoppers with logical product pairings that improve their experience.
Start by exporting your line-item order CSV. Scrub out past promotional noise. Calculate co-purchase affinity rates. Run candidate pairs through our 5-criteria scorecard. Once verified, build your offer in Kaching Bundles to launch high-converting Bundle Upsells directly on your product pages.



