Bundles
OVERVIEW
Loop supports two types of bundles: Loop-configured bundles, which you build manually or via CSV upload directly in Loop, and Shopify Native Bundles, which you build and manage in Shopify and Loop automatically recognizes. This article covers how to set up Loop-configured bundles, how Shopify Native Bundles work with returns and bundle exchange, and how bundled SKUs appear in the Loop admin.
Use the menu on the left to quickly navigate this article.
Why it matters
Bundles are a common way to sell two or more SKUs together at a discount to increase average order value. Whether a bundle is configured in Loop or built as a Shopify Native Bundle, Loop's Bundles feature helps you:
Give customers a streamlined way to return or exchange individual products within a bundle, or the full bundle
Avoid changing how bundles are structured in Shopify to make them return-eligible
Reduce failed exchange orders and support escalations caused by unsupported bundle handling
Which type of bundle do you have?
Before setting up, confirm which type of bundle applies to you:
Loop-configured bundles — You (or your team) manually define the bundle and its components inside Loop, either one at a time or via CSV upload. Use this if your bundles were not built using Shopify's native bundle product type.
Shopify Native Bundles — Your bundle is built using Shopify's own bundle product type, and the bundle structure lives in Shopify. Loop automatically detects the bundle relationship — no separate setup is required for the default experience.
Note: These are two independent systems. If a Loop-configured bundle exists for a product, Loop uses that configuration first, even if the same product is also a Shopify Native Bundle. Shopify Native Bundle handling only applies when there's no matching Loop-configured bundle.
Shopify Native Bundles
How it works
Shopify Native Bundles support allows Loop to recognize a Shopify bundle relationship (Shopify's lineItemGroup data) during order sync and handle returns and exchanges without submitting the bundle parent variant directly to Shopify — which Shopify rejects because that variant has components.
When a customer returns or exchanges a Shopify Native Bundle:
The bundle appears in the customer portal as a single selectable unit, using the bundle's product context so sibling bundle variants (for example, exchanging a Medium kit for a Large kit) are shown — not the individual component products.
Behind the scenes, Loop creates one exchange group with a component exchange row for each item in the bundle, and submits the individual component line items to Shopify (rather than the bundle parent variant) when creating the exchange order.
Important: Merchants continue to manage Shopify Native Bundles entirely in Shopify. You do not need to recreate a Shopify Native Bundle inside Loop's Bundles settings for the default (whole-bundle) return and exchange experience to work.
Partial returns for Shopify Native Bundles
By default, shoppers must return or exchange a Shopify Native Bundle as a whole. If you want shoppers to be able to return individual components of a Shopify Native Bundle instead of the entire bundle, this is controlled by a shop-level setting rather than a per-bundle setting.
Loop resolves partial-return behavior for a Shopify Native Bundle in this order:
Loop-configured bundle setting, if one exists for that product — this always takes priority.
Shop-level Shopify Native Bundle setting — applies only when there's no matching Loop-configured bundle. This is one setting for the whole shop, not per bundle.
Default: the whole bundle must be returned together.
To turn on partial returns at the shop level:
Navigate to Returns management > Policy settings > Bundles in the Loop admin and select or create a bundle.
Toggle on Allow partial returns for Shopify native bundles.
Note: This toggle applies to all Shopify Native Bundles on your account that don't already have a Loop-configured bundle setup. It does not let you set partial-return behavior per individual bundle — for per-bundle control, set up that product as a Loop-configured bundle instead (see below).
FAQ: Shopify Native Bundles
Do I need to set up my Shopify Native Bundles in Loop? No, not for the default whole-bundle return and exchange experience. Loop automatically detects the bundle relationship from Shopify. The only exception is partial-return behavior, which is a shop-level setting (see above).
My exchange order failed with an error about a "variant with components" — what does this mean? This means Shopify rejected an exchange order because Loop attempted to submit the bundle's parent variant, which Shopify doesn't accept as a line item. Shopify Native Bundles support resolves this by sending Shopify the individual component line items instead. Adding SKUs to the bundle variant does not fix this error — it isn't caused by a missing SKU.
Does this replace Loop-configured bundles? No. If you already have a bundle set up manually or via CSV in Loop's Bundles settings, that configuration continues to take priority over the Shopify Native Bundle default.
Loop-configured bundles
Requirements
Before setting up a Loop-configured bundle, keep in mind:
Each bundle has its own SKU in Shopify. The bundle is created as a standalone product, and each bundle combination should have its own unique SKU.
The bundle SKU maps to a predefined set of component SKUs. A given bundle SKU should consistently represent the same set of products rather than being dynamically generated.
Each item within the bundle exists as its own product with its own SKU in Shopify. The individual components must be separate products/variants with unique SKUs so they can be identified in the return flow.
Setup
To start, go to Returns management > Policy settings > Bundles in the Loop admin. All bundles configured to be returned in Loop will be listed here.
There are two options to add bundles, manually and through a CSV upload.
Note: For both methods, the product SKU added to the bundles should always be the variant SKU. If your bundle has size variants, you should create separate bundles for each size; for example: one small bundle, one medium bundle, etc.
Manually add a bundle
Click Create Bundle in the upper right-hand corner.
Name your bundle and add its SKU as it appears in Shopify.
Click Add products +, then check the box for each product you want included.
Note: Clicking a product automatically selects all of its variants. Click the caret to view all variants and unselect any that don't apply.
Toggle on Partial returns if customers should be able to return bundle products individually.
If Partial returns is on:
Select either Proportional prices or Even prices.
Check Don't allow exchanges on bundle SKU if you don't want to allow a return on the entire bundle SKU — this requires each product to be returned individually.
Check Limit returns if you want to limit bundle products to exchanges only.
Click Save.
Repeat for each bundle you want to add.
CSV upload
Bundle CSVs must be 2,000 lines or fewer. If you want to overwrite existing bundles but exceed the size limit, split the CSV: overwrite with the first file, then append the rest so you don't overwrite each import.
Click Export CSV to download a template with the required fields.
Complete the template:
Enter Yes or No for Allow Partial Returns, Disallow Bundle Exchange, and Exchange Only — these three fields must match for every product in the same bundle.
Enter Proportional or Even for Discount Method — this must match for every product in the same bundle.
Enter the quantity of each product included in the bundle.
Click Import CSV > Choose File and select your completed file.
Click Append to add new items to your bundle list, or Overwrite to replace all existing bundles.
Note: If there is an import error, an inactive tag will appear next to the bundle. Click on the bundle to review the error detail.
Returns Detail
Returns show a blue Bundled tag when the returned product was part of a bundle. The return detail also shows the product SKU, bundle SKU, and the original product price crossed out next to the bundled product price.
Note: Loop can't restock a product from a partial bundle return. If the entire bundle is returned, it can be restocked, since the bundle SKU was the only SKU linked to the order.
FAQ
What if one of the items in my bundle is tagged as exchange only/final sale or blocklisted? For Loop-configured bundles, that tag or blocklist still applies to that specific item as long as Don't allow exchanges on bundle SKU is turned on. If that setting is off, the full bundle will be returnable and Loop won't enforce the tag or blocklist on the individual product.
I uploaded my bundle, but a customer isn't seeing the new bundle functionality. If a customer accessed their return in the portal before the bundle was created in Loop, the old (non-bundle) functionality will still display for that return.
What if my bundles were created using an app from the Shopify App Store? If your bundle uses Shopify's native bundle product type, Loop automatically supports it — see the Shopify Native Bundles section above. If you're using a different third-party bundle app that isn't built on Shopify's native bundle framework, Loop is not compatible with it at this time. Your Onboarding Specialist or Merchant Success Manager can help confirm which type of bundle you have.
Are bundle SKUs case sensitive? Yes. SKUs are case sensitive and need to match exactly how they appear in Shopify.
Is the Bundles feature included in my Loop plan? To check if this feature is included in your plan, please review the Pricing page on Loop's website. If you want to add this feature, please contact your Merchant Success Manager to amend your account.
Please reach out to support@loopreturns.com with any additional questions.






