Bulk items & inventory
Bundles & Kits — multi-pool recipes
3 min readPro+· Updated 2026-10-29
A normal BulkFlow pack variant draws from exactly one bulk pool (a 6-pack of Lavender Soap pulls 6 units from the Lavender pool). A kit goes further: besides its primary pool, it lists component pools — so one Shopify variant can consume several warehouse pools at once.
Classic example — a Variety Pack = 2 Lavender + 2 Rose + 2 Mint:
- Primary pool: Lavender (pack size 2)
- Components: Rose × 2 per kit, Mint × 2 per kit
Plan requirement: creating and editing kit recipes requires Pro or above. Existing kits keep working correctly on every plan — see Downgrades below.
Building a recipe
- Open the item that holds the kit's primary pool and find the pack variant.
- Click Convert to Kit on the pack card.
- Add component pools with a quantity per kit for each (up to 10 components).
- Save. The card immediately shows the kit's true availability and which ingredient limits it.
Rules:
- Components must be managed pools (live Shopify sync turned on) so orders can deduct them.
- A component can't be the primary pool itself (its draw is already covered by the pack size).
- Components are always plain pools — a kit can never contain another kit, so circular recipes are impossible.
The bottleneck rule
The stock Shopify shows for a kit is the minimum buildable quantity across all its pools. Example — the Variety Pack above:
- Lavender (primary): 100 units left ÷ 2 per kit = 50 kits possible
- Rose: 30 units left ÷ 2 per kit = 15 kits possible ← bottleneck
- Mint: 80 units left ÷ 2 per kit = 40 kits possible
Shopify shows 15 available. The pack card tells you "limited by Rose — 30 units left" so you know exactly what to restock. Restock Rose and the availability jumps on the next sync.
What happens on orders, refunds & edits
- Order paid — the primary pool deducts
pack size × quantityas usual, and every component pool deductsqty-per-kit × quantity. Each deduction is recorded in the per-order stock ledger. - Refund / cancellation — all pools are restocked, capped by what was actually deducted for that order (the same phantom-stock protection every BulkFlow credit path uses). Credits follow the recipe recorded at sale time: if you edit — or even dissolve — the recipe between the sale and the refund, the original components still come back. "Refund only, don't restock" is respected.
- Order edits — added kit lines deduct all pools; removed lines restock all pools.
- Short component — if a component pool can't cover an order line, the rest of the order still processes and a discrepancy alert is raised so you can fix the count. Orders are never silently blocked.
- Reconciliation — kit movements are ordinary audited movements on each pool, so your reconciliation reports show them like any other correction or sale.
What happens if I downgrade?
Inventory correctness is not tier-gated:
- Existing kits keep deducting and restocking all component pools on any plan — deductions, refund credits and the per-order ledger caps behave the same after a downgrade. (As always, storefront overselling also depends on your checkout setup — see the oversell-protection notes on the Settings → Protection page.)
- What locks below Pro: creating new kits and editing existing recipes.
- You can always dissolve a kit (remove its recipe) on any plan — the variant returns to plain single-pool math. Refunds for orders placed before the dissolve still restock the original components from the sale-time ledger.
- Upgrade back and your recipes are exactly where you left them.
Current limits
- Single-level recipes only (components are pools, never kits).
- Up to 10 components per kit.
- Multi-location (BF+) shops: kit availability is computed per location. A kit is only offered at a location where every component has stock at that location — a component with all of its stock in Texas contributes nothing to the kit's Florida availability. A component that hasn't been split across locations counts at your default location only. The global number stays capped by the scarcest component overall. BulkFlow does not automatically fulfill a kit from components at different locations.