Skip to main content
Bundles are available on request. Contact support from the app to have them turned on for your store.
A bundle is a parent product made up of component products that customers rent together, such as a suit made of a jacket, trousers, and a waistcoat. Each component keeps its own methods, options, and inventory. Supercycle records the grouping on the parent product, and your theme builds the storefront flow on the Storefront API, because bundles don’t render in the Methods app block.

How it works

When a customer rents a bundle:
  • Each component is added to the cart as its own line item with the attributes Supercycle needs.
  • Availability is checked across every component for the selected dates.
  • The customer picks an option, such as a rental period, for each component.

Set up a bundle

1

Open Bundles

On Products, select Bundles.
2

Create the bundle

Select Create bundle and enter a name.
3

Add component products

Add each product that makes up the bundle. Turn on the methods each component needs before you add it, because the methods on each component decide which options are available when you create intents at checkout.
4

Save the bundle

Select Save. Supercycle tags the parent product Supercycle bundle product, tags each component Bundle component: <parent-product-handle>, and writes the supercycle.bundle metafield on the parent.

Bundle metafields

The parent product carries the tag Supercycle bundle product and a supercycle.bundle metafield listing its components:
supercycle.bundle
Component products carry the tag Bundle component: <parent-product-handle>. You can reach each component’s full Shopify product object in Liquid:
Look up a component
Each component has a configuration metafield for every method turned on for it: Iterate over the components to read each one’s configuration:
Read each component's calendar configuration
Each configuration metafield holds an options array with a global_id per option. For example, a calendar configuration:
calendar_configuration
See Metafields for the full schema of each configuration metafield.

Build the storefront flow

Each component goes into the cart as its own line item with the right Supercycle attributes. The steps below check availability, create an intent per component, and add every component to the cart in one request.
1

Check availability

Use the Product availability endpoint to confirm every component is available for the selected dates. Collect the component IDs from the bundle metafield in Liquid, then post them:
Collect component IDs
Check availability
2

Create an intent for each component

Each component needs an intent from the Intent endpoint. The intent returns an attributes object with everything Supercycle needs to process the line item as a cycle, including _cycle, _validations, and selling_plan.Build a UI that lets the customer pick an option for each component, for example a dropdown of rental periods per item. Each option has a global_id in the component’s configuration metafield, which is what you pass to the endpoint:
Create an intent
Call it for every component before adding to the cart:
Call it per component
3

Add the components to the cart

With an intent for each component, add every variant to the cart in a single request using Shopify’s multiple items cart API. Set every key of intent.attributes directly, because each key is already the form field name Shopify expects.