How can I hide bundle contents on customer orders?
Important update: Shopify has deprecated Additional Scripts and the legacy checkout/order status pages. If your store hasn't already migrated, you'll need to upgrade to the new Thank You and Order Status pages, which are built on Shopify's Checkout Extensibility model. These new pages do not support scripts or any form of DOM manipulation, so the method described further down this article (Additional Scripts) will no longer work.
If you want to hide bundle components from customers, the recommended path today is Single-SKU bundles, not scripts. See Recommended approach: Single-SKU bundles below.
Why the old script-based method no longer works
Shopify's previous Additional Scripts feature allowed arbitrary JavaScript to run on the Thank You/Order Status page, which is what let the script below manipulate the page and hide bundle line items after purchase.
The new Checkout Extensibility model is sandboxed: it only exposes predefined extension points (like adding a banner or a survey), with no ability to touch or modify the core order summary UI. This is a Shopify platform constraint, not a Simple Bundles limitation; there is currently no API or extension point that allows suppressing or modifying line items in the customer-facing order summary on the new pages. This means there's no way to achieve the same "hide bundle contents" behavior via script or code on the new pages.
Recommended approach: Single-SKU bundles
Since scripts can no longer manipulate the new Thank You/Order Status pages, the reliable way to keep bundle components hidden from customers is to prevent them from ever being added to the order in the first place. This is exactly what Single-SKU bundles do:
- Only the parent bundle appears on customer-facing pages, at checkout, in the order confirmation, and on the Thank You/Order Status page.
- The individual components are never added as separate line items, so there's nothing for a script (or Shopify) to hide.
- Inventory for the components is still decremented correctly behind the scenes, so your stock tracking stays accurate.
To enable this, see: How to enable Single-SKU bundle content inventory sync without order edits.
If your fulfillment provider or 3PL needs to see each bundle's individual components for picking, packing, or itemized packing slips, Single-SKU bundles alone won't work for that. In Single-SKU mode, only the parent bundle line ever reaches Shopify's order and any connected fulfillment app; the child items are never sent through. If you need itemized child SKUs on your packing slips, see Single-SKU bundle: How to show itemized bundle contents on Shopify packing slips, but note that method only works on Simple Bundles 2.0. If you're still on 1.0, itemized bundle contents can't be shown on packing slips this way; migrating to 2.0 is the path to get this working.
If you're currently on Simple Bundles 1.0, migrating to 2.0 is also worth considering here, since 2.0's Cart Transform and Single-SKU options give you more flexibility for this kind of setup than 1.0's script-only approach. Happy to walk you through what that would look like for your store.
Note: Single-SKU also solves the previous "Bundle contents cannot be hidden in the Shop App" limitation from the old script method, since components are never added to the order at all, there is nothing to display in the Shop App either.
Legacy method (Additional Scripts)
This method only works if your store is still on Shopify's legacy checkout/order status pages and hasn't migrated to the new Thank You/Order Status pages. Once you migrate (or once Shopify requires migration on your store), this method will stop working entirely, and Single-SKU (above) is the only way to achieve the same result.
To follow this legacy guide, you'll need permission to add "additional scripts" under your Shopify checkout settings.
If your store already has scripts configured, you're still able to modify them until Shopify's cutoff date for your store. Otherwise, we recommend using Single-SKU bundles instead of relying on this method going forward.
Note: Bundle contents could not be hidden in the Shop App even when following this method; that was a functionality limitation on Shopify's end and could not be overridden.
If you would like to hide products that are part of a bundle using this legacy method:
1. Navigate to the Settings page.
2. Click on the Checkout section on the page.

3. Scroll down to the Order status page scripts section.

4. Add the following code to the Order status page scripts section:
<style>.notice.notice--info, .notice.notice--warning{display: none}</style><script>function removeBundleItems(){for(var e=document.querySelectorAll("[data-product-id]"),t=0;t<e.length;t++){var n=e[t];if(n.innerText.includes("SIMPLE BUNDLES:")){n.remove();for(var i=n.querySelector(".product__description__name").innerText,o=n.querySelector(".product__description__variant").innerText,r=document.querySelectorAll(".shipment-information__items .shipment-information__item"),m=0;m<r.length;m++){var l=r[m];l.innerText.includes(i)&&l.innerText.includes(o)&&l.remove()}}}var u=Shopify.checkout.line_items,c=document.querySelectorAll(".shipment-information__items .shipment-information__item");for(m=0;m<c.length;m++){for(var d=c[m],s=!0,a=0;a<u.length;a++){const e=u[a];d.innerText.includes(e.title)&&d.innerText.includes(e.variant_title)&&(s=!1)}s&&d.remove()}document.querySelector(".shipment-information--unfulfilled .shipment-information__items tr.shipment-information__item")||document.querySelector(".shipment-information--unfulfilled").closest(".content-box").remove()}document.addEventListener("DOMContentLoaded",function(){setTimeout(removeBundleItems,100)}),document.querySelector(".order-summary-toggle").addEventListener("click",function(){setTimeout(removeBundleItems,100)});</script>
Once added, your bundle items should be removed from the order status page that customers can view after the order is placed.
Before adding the additional scripts

After adding the additional script
