Bundles order splitting issue

Hello, I found a Shopify limitation and issue.

When using Bundling apps, even the native Shopify Bundles app, it’s splitting my order incorrectly.

I sell 12-packs of energy drinks. See example here.

I also sell the energy drinks as single cans.

I made a bundle of 12 single cans to create a 12-pack. (This is best for tracking total cans in inventory)

The issue: When someone orders a 12-pack, the order in shopify comes in as 9 cans and 3 cans instead of 12 cans. See screenshot of an order.

This create an issue with my 3PL. What my 3PL says: “The problem is that it’s not going to properly charge you for the case pick for 12 cans. For example, on the Citrus flavor, it’s going to charge for 12 picks instead of one case pick.”

This happens with the native Shopify Bundles app and the Bundler app.

I’m hoping I can get this issue in front of the Shopify Dev team, so this can be fixed. I know of another company dealing with the same issue.

This seems like a warranted issue to resolve so companies dealing with this continue to use Shopify.

If I should post this somewhere else to get this in front of the Dev team. Please let me know. Thanks for reading.

Hi @slamduncan,

I understand the challenge you’re facing. If your goal is to track inventory between multipacks and individual units while maintaining a unit-based relationship, you may want to look at apps that support component-based inventory syncing rather than standard Shopify bundles.

For example, some bundle apps allow you to define a relationship between a parent product (such as a 12-pack) and its child components (individual cans). Inventory is then calculated and synchronized based on the component quantities.

Using a simple example:

  • Assume you have 300 individual cans in stock.
  • A 3-pack bundle consists of 3 individual cans.
  • The bundle inventory would be calculated as 100 (300 ÷ 3), while the single-can inventory remains 300.

If one 3-pack is sold:

  • Single-can inventory decreases from 300 to 297.
  • Bundle inventory decreases from 100 to 99.

If a single can is then sold:

  • Single-can inventory decreases from 297 to 296.
  • Bundle inventory is recalculated based on the remaining available inventory and would adjust accordingly.

This type of setup helps maintain accurate inventory across both multipacks and individual units while avoiding manual adjustments.

One app that supports this type of parent-child inventory relationship is Profit Bundles. It may be worth reviewing whether its inventory-syncing approach aligns with your fulfillment workflow and 3PL requirements.

that 9 and 3 split is worth diagnosing before you switch apps, because it’s probably not the bundle miscounting. when a single line comes through as two quantities like that, it’s usually Shopify allocating the order across two fulfillment locations. one location had 9 cans available and another had 3, so it split the line into two fulfillment groups. the bundle expanded to 12 correctly, it’s the location allocation downstream that broke it into 9 plus 3.

quick way to check: open the order and see whether the two groups are assigned to different locations. or go to the single-can component and look at how its inventory is spread across your locations. if it’s all sitting in one location and still splitting, then it’s the app’s expansion logic and the component-sync point above applies.

are you fulfilling from more than one location, and is your 3PL its own connected location or the same one your storefront stock lives in?

:blush: Hi, thanks for sharing this in detail.

The split behavior can vary between bundling apps, so it’s worth testing a few to see how orders actually come through on your end.

For example, I tested this with BOGOS: Free Gift Bundle Upsell app using the Classic Bundle feature, and the order showed up cleanly. No splitting.

Here’s how to set it up:

  1. Classic Bundle → set bundle item level to Variant level → choose the product you want (it doesn’t have to have variants) & set quantity to 12

  1. Enable Create a product for this bundle and edit the product details

That should be a lot cleaner for your 3PL - one line, one case pick, no splitting.

Hope this helps!

Ellie

+1 to lumine’s read. To close the loop on what to do in each case:

If it is location allocation: go to Settings > Locations and find every location holding stock of the single can (a forgotten Shop location, an old retail spot, or a location an inventory CSV import quietly refilled). Move all sellable can stock to your 3PL’s location, then go to Settings > Shipping and delivery > Order routing and put the 3PL first in priority. New orders should come through as one fulfillment group after that. Costs nothing, no app migration.

If instead the order shows one location but the cans still land as multiple separate line items, that is the app’s expansion writing separate lines. That case is fixable by construction: I build a bundles app (Solid Bundles, disclosure: founder) on Shopify’s Cart Transform API, where the 12-pack expands during checkout itself into a single line item of the can SKU at quantity 12, bundle context attached. Your 3PL then has nothing to reinterpret. What no app can fix is the location split, that lives in routing settings.

If you post what the fulfillment section of one split order shows, happy to help pin down which case you are in.

HI @slamduncan

I don’t think this is necessarily a bug in Shopify Bundles a much as a mismatch between how inventory bundles and fulfillment operations work.

Shopify Bundles are inventory-based bundles, so when a customer buys a 12 pack, Shopify expnds that bundle into its component inventory items behind the scenes. That’s what allows inventory to stay accurate across both your single-can and 12-pack sales.

The challenge is that many 3PLs interpret the expanded components literally. Instead of seeing “1 case of 12”, they see “12 individual units” and bill fulfillment accordingly.

Looking at your screenshot, Shopify appears to be splitting the bundle into component line items tied to the parent bundle. While that can look odd, it’s generally expected bundle behavior. The bigger issue is whether your 3PL integration can recognize bundled products and fulfill them as a case pick rather than individual picks.

Have you checked with your 3PL to see whether they support bundle mapping, kitting, or virtual bundles? Many warehouse systems allow you to map multiple SKIs to a case SKU for fulfillment purposes while still letting Shopify track inventory at the component level.

If enough merchants are running into this with beverage, supplement, and consumable products, I do agree there’s room for Shopify to improve the fulfillment-side experience. Inventory accuracy and warehouse pick logic are often two very different requirements, and currently merchants are left trying to bridge that gap themselves.

I’d be interested to hear how other merchants handling case packs and multi-unit bundles have solve this.

one thing that hasnt come up yet: whichever of the two causes it turns out to be, your 3PL doesnt actually have to guess what those lines are. bundle component lines on an order carry a lineItemGroup — it holds the parent title, product and variant id, the variant sku and the group quantity, and every component line points back to it. thats shopifys own bundle mapping, and its there both on native bundles and on cart transform ones.

worth sending to your 3PL as a specific question: does their shopify integration read lineItemGroup on line items. most of them pull fulfillment orders rather than orders, so the path is fulfillmentOrder.lineItems → lineItem → lineItemGroup. if they do read it, the 9 and 3 stops mattering, because both fragments resolve to the same parent (12-pack citrus, qty 1) and they can bill one case pick even when routing split the order across locations. if they dont read it, no amount of switching bundle apps will fix the billing, youd just be moving the same ambiguity somewhere else.

so id ask them that before migrating anything. disclosure, i build a bundles app (verve) on cart transform, so im biased toward the expand approach — but lineItemGroup is platform level, not app specific.

Hey, I don’t think this is a Bundler bug, or a native Bundles bug either. It’s how bundles work on Shopify right now, so you’ll keep hitting it whichever app you try.

Both apps sell the 12-pack as a “parent” product and then swap it for its components at checkout, with a Cart Transform function. What reaches your 3PL is those component lines, and the 9 + 3 is just how the quantities land on the way through. So they see pick lines instead of a case, which is exactly the charge you’re describing.

Two ways around it that don’t need any app:

  1. Make the 12-pack a real product with its own SKU and barcode, and keep the can inventory in sync separately. Or let your 3PL kit it: most of them do, and kitting usually costs less than 12 picks. One line, one SKU, one case pick.

  2. Drop the bundle product and price by quantity instead. Put tiers on the single can so that buying 12 gets the case price. The order arrives as one line of your can SKU with quantity 12, inventory counts cans directly, and there’s no parent product to expand. Native automatic discounts already do the basic version of this.

If you end up looking at apps for the product page display, there’s one question worth asking any of them first: does the discount apply to the variant you already sell, or does it expand a bundle parent? Only the first one keeps your order lines clean.

About reaching the dev team: this forum is merchants talking to merchants, so nobody from Shopify is really reading. community.shopify.dev is where the Cart Transform people actually are, and a feature request through Support works too. Lead with the case pick cost, that’s the part that turns it from a preference into money.