"Buy Again" for Build-Your-Own Bundles on Shopify

TLDR

  • Shopify's "Buy Again" button adds a bundle's parent product back to the cart, but not the components the customer picked, so a build-your-own bundle comes back empty
  • With "Buy Again" enabled on a flex bundle, Flex Bundles saves each customer's last selection and rebuilds the bundle at checkout when they reorder
  • A reorder keeps the original bundle discount, per-component properties like engraving text, the bundle image, the component prices the customer paid, and converts correctly in other currencies
  • Turn on "Buy Again" per bundle with one checkbox in the bundle editor

Repeat purchases are where bundles earn their keep. A customer who built a bundle once is very likely to want the same thing again:

  • A box of favourite flavours, restocked when the last one runs out.
  • A skincare routine of cleanser, serum, and moisturiser, reordered every couple of months.
  • A pair of glasses with frames, lenses, and the customer's prescription, ordered again as a spare pair.
  • A tennis restock of their preferred strings, grips, and balls, bought again before each season.
  • A monogrammed gift set with the same initials on every piece, reordered as a gift for the next birthday.

The easiest way for them to get it is the "Buy Again" button in their Shopify customer account.

For a build-your-own bundle, that button has a problem. It adds the bundle's parent product back to the cart, but it knows nothing about the components the customer picked. Without them, the bundle arrives at checkout as a bare parent product, and the customer has to start over in the builder.

Flex Bundles fixes that by rebuilding the bundle from the customer's last purchase. Here is how it works.

How "Buy Again" rebuilds a bundle

A flex bundle is normally added to the cart with a _components property listing the variants and quantities the customer chose. Our Cart Transform Function reads that property at checkout and expands the bundle into real component line items.

"Buy Again" works in two steps:

  1. When the order is placed, Flex Bundles saves the customer's selection to a $app:bundle_selections metafield on their customer record. It keeps the most recent selection for each bundle they have bought.
  2. When they reorder, the parent product lands in the cart with no _components. If "Buy Again" is enabled for that bundle, the Cart Transform looks up the customer's saved selection and expands the bundle exactly as if they had come through the builder.

The customer clicks one button and checks out with the bundle they bought last time. Pricing, inventory, and fulfillment all work the same as the original order, because the result is the same set of broken-out component line items.

What a reorder keeps

A rebuilt bundle matches the original order, down to the details:

  • The components. The same variants in the same quantities the customer picked.
  • The bundle discount. Parent price bundles sold with a _discount get the same discount on the reorder.
  • Per-component properties. Engraving text, gift messages, or any other properties your storefront attached to individual components carry over to the reorder.
  • The bundle image. The image set through _settings is saved and shown again.
  • The prices the customer paid. Component sum bundles use the component prices from the original order.
  • The right currency. Saved prices are stored in your shop's currency and converted at checkout, so a customer who reorders in a different currency is charged the correct amount.

One limit to know about: properties on the parent line itself, the ones customers see under the bundle's name in the cart, can't be restored on a reorder. Properties on the components can.

Turning it on

"Buy Again" is enabled per bundle. Open a flex bundle in the Flex Bundles editor, check Enable Buy Again, and save.

The Enable Buy Again setting in the Flex Bundles bundle editor

Why this matters

Build-your-own bundles are one of the best tools for raising order value, but they ask more of the customer than a single product does. Every bit of friction you remove on the second purchase makes the third one more likely. A one-click reorder that comes back exactly as the customer remembers it, at the price they expect, is the difference between a bundle that sells once and one that becomes a habit.

If you already run flex bundles on Flex Bundles, turn on "Buy Again" for the ones customers reorder most. If you're weighing bundle apps and repeat purchase matters to your brand, install Flex Bundles and see how your bundles hold up on the second order.

Frequently Asked Questions

Does "Buy Again" work for fixed bundles?

Fixed bundles don't need it. A fixed bundle's components are attached to the parent variant, so adding the parent from anywhere, including "Buy Again", already brings the components with it. The "Buy Again" setting is for flex (build-your-own) bundles, where the components differ from customer to customer.

Where is the customer's last selection stored?

In your own store, on the customer record, as an app-owned $app:bundle_selections metafield. It holds the most recent selection for each bundle the customer has bought, up to 20 bundles, and is updated every time they order a flex bundle.