How MOD Bundles Works at Checkout
When a customer adds a bundle to their cart, MOD Bundles stores the bundle configuration as a cart line attribute called _component_selections. This attribute contains the details of every item the customer selected — product IDs, quantities, pricing info, and more.
At checkout, Shopify runs our Cart Transform function, which reads _component_selections to:
Expand the single bundle line into individual component items
Apply the correct bundle discount to each item
Transfer any custom properties to the expanded items
If _component_selections is removed or modified by another app, the Cart Transform has nothing to work with and the bundle will not function correctly.
Symptoms of a Third-Party App Conflict
You may be experiencing this issue if:
Bundle items don't expand at checkout (customer sees the parent product only)
Bundle discounts aren't applied
Checkout shows full price instead of bundle price
Bundles work on one store but not another (with different apps installed)
Bundles suddenly stopped working after installing a new app
What Causes This
Some apps modify the cart before checkout — for example, cart optimization apps, upsell apps, subscription apps, or custom cart drawer apps. These apps may:
Strip cart line attributes they don't recognize (including
_component_selections)Rebuild the cart with new line items, dropping attributes in the process
Override cart properties with their own data
Re-add items to cart programmatically without preserving the original attributes
Any of these actions can remove the data MOD Bundles needs.
Cart Line Attributes That Must Be Preserved
The following cart line attributes are essential and must not be removed or modified by other apps:
Attribute Key | Purpose |
| Required. Contains the full bundle configuration — component product IDs, quantities, pricing, and metadata. Without this, the bundle cannot be processed at checkout. |
| Optional but recommended. Identifies the type of bundle (Mix & Match, Pack Builder, or Collection Bundle). |
Note: Both attributes are prefixed with an underscore (_), which is Shopify's convention for hidden line item properties — they won't appear to customers in the cart or at checkout. Some apps may incorrectly strip all underscore-prefixed properties. This will break bundle functionality.
How to Diagnose the Issue
Step 1: Check if Attributes Are Present
Add a bundle to your cart
Open your browser's developer tools (right-click → Inspect → Console)
Run this in the console:
fetch('/cart.js') .then(r => r.json()) .then(cart => { cart.items.forEach(item => { console.log(item.title, item.properties); }); });Look for
_component_selectionsin the properties of the bundle line itemIf it's missing, something is stripping it
Step 2: Identify the Conflicting App
Temporarily disable other apps one at a time (especially cart-related apps)
After disabling each app, clear your cart and add a bundle fresh
Check if
_component_selectionsis now presentThe app that, when disabled, restores the attribute is the one causing the conflict
Step 3: Test in a Clean Environment
Open an incognito/private browser window
Disable any browser extensions
Add a bundle and check the cart attributes
This rules out browser-side interference
How to Fix It
Option 1: Configure the Other App
Most well-built apps have settings to control which cart properties they modify. Look for:
"Preserve cart attributes" or "Keep line item properties" settings
Allow-list or exclusion list where you can specify attributes to keep
Cart modification settings that can be turned off or scoped
Contact the other app's support team and ask them to preserve cart line attributes prefixed with an underscore (_), specifically _component_selections.
Option 2: Change the App Load Order
If both apps modify the cart, the order matters:
Go to Settings → Apps and sales channels in Shopify admin
Check the priority/order of cart-modifying apps
MOD Bundles' Cart Transform should run after any app that modifies cart items
Option 3: Use the App's API or Hooks
If the conflicting app provides JavaScript hooks or events for cart modifications, you may be able to intercept and preserve the attributes. This is an advanced solution — contact our support team for guidance specific to your setup.
Option 4: Remove or Replace the Conflicting App
If the other app cannot be configured to preserve cart attributes, you may need to consider an alternative app that doesn't interfere with cart line properties.
Information to Share with the Other App's Support Team
If you need to contact the other app's developer, here's what to tell them:
Our store uses MOD Bundles, which relies on a cart line attribute called _component_selections to process bundles at checkout via Shopify's Cart Transform API. Your app appears to be removing or overwriting this attribute when it modifies the cart. Could you ensure that existing cart line item properties (especially those prefixed with _) are preserved when your app makes changes to the cart?
Common Apps Known to Modify Cart Data
While we can't maintain a complete list, these categories of apps are most likely to cause conflicts:
Cart drawer / cart page replacement apps — Apps that rebuild the cart UI may re-add items without properties
Upsell and cross-sell apps — Some modify line items when adding upsells
Cart optimization / cart editor apps — Apps that let merchants modify cart contents
Subscription apps — Apps that convert one-time items to subscriptions
Discount and promotion apps — Apps that apply their own cart-level modifications
Translation apps — Some may alter cart data during translation
Still Having Issues?
If you've confirmed that _component_selections is being stripped and can't resolve it with the other app:
Contact our support with:
The name of the conflicting app Screenshots of your cart attributes (from the console check above) Whether the issue happens on all bundles or specific onesWe may be able to help by:
Providing a workaround specific to the conflicting app Adjusting how our app writes cart data for compatibility Working directly with the other app's developers
