Dynamic adjustment
Dynamic adjustmentDynamic adjustmentA per-BOM toggle that recalculates the BOM's Shopify-displayed quantity from current component availability after every order. The displayed quantity is the bottleneck-resource count plus pre-assembled stock — your storefront never sells more than you can build. Read more → recalculates the Shopify-displayed quantity of a BOM after every order, based on current component availability. The goal: never sell more units than you can build.
The complementary Maintain inventory levelMaintain inventory levelA per-BOM toggle that keeps the Shopify-displayed BOM quantity flat after orders. After execution, Assemblified pushes a positive delta back to the BOM variant equal to what was consumed. Components still decrement underneath — only the displayed quantity is replenished. Mutually exclusive with dynamic adjustment. Read more → setting does the inverse — keep the displayed quantity flat by replenishing the BOM variant to match what you started with. The two are mutually exclusive at the UI level.
On this page
Section titled “On this page”- What dynamic adjustment does (the bottleneck-resource rule)
- Worked example
- Maintain inventory level (the inverse)
- Multi-location and per-BOM disable
- The Synchronize button
- When to use which
The bottleneck-resource rule
Section titled “The bottleneck-resource rule”For each BOM with dynamic adjustment on, after every order:
- Walk the BOM’s recipe to compute “how many can we build from each component?”
- The buildable quantity is the minimum across all essential components — the bottleneck.
- Add the BOM’s pre-assembled stockPre-Assembled InventoryStock of finished sub-assemblies and BOM items that have already been built and are sitting on the shelf. When a work order needs a sub-assembly, it draws from pre-assembled inventory first and only builds fresh ones if the shelf comes up short. Read more → .
- That sum is the new Shopify-displayed quantity. The delta from the current displayed quantity is pushed.
If non-essentialNon-essential materialA flag on a raw material that excludes it from the dynamic-adjustment bottleneck calculation. The material is still consumed normally during BOM execution — it just doesn't gate the Shopify-displayed quantity. Use for plentiful components (labels, generic packaging) you don't want to be the bottleneck. Read more → components are present, they’re skipped from the bottleneck calculation (still consumed normally; just don’t gate the displayed quantity).
If Only sell pre-assembled quantities is on, the buildable quantity from raw materials is hidden — the displayed quantity is capped at pre-assembled.
Worked example
Section titled “Worked example”A “Vanilla Candle 8oz” BOM has these components:
| Component | Required per unit | Available | Build count from this component |
|---|---|---|---|
| Wax (1kg blocks) | 0.25 | 100 | 400 |
| Wick | 1 | 35 | 35 |
| Jar (8oz) | 1 | 90 | 90 |
| Label | 1 | 1000 | 1000 |
| Box | 1 | 50 | 50 |
The bottleneck is Wick at 35. So the BOM can build 35 candles right now.
If the BOM has 10 candles in pre-assembled stock, the Shopify-displayed quantity is 35 + 10 = 45.
A customer orders 5. After execution:
- 5 candles come off the pre-assembled shelf (now 5 left).
- Components untouched (raws weren’t sourced — pre-assembled covered the order).
- Dynamic adjustment recomputes: bottleneck still Wick at 35, pre-assembled now 5. New displayed = 35 + 5 = 40.
- Shopify gets a delta of -5 (pushed via the inventory API).
Maintain inventory level
Section titled “Maintain inventory level”Maintain inventory level is the inverse pattern: keep the displayed Shopify quantity flat regardless of what consumed.
When on:
- After every order execution, Assemblified pushes a positive delta back to the BOM variant equal to what was consumed.
- The displayed quantity stays the same. Components still decremented underneath.
- On cancel/refund, the original delta is reversed.
Use this when you want operator-managed displayed quantity — an “always show 100” hand-curated number, regardless of what’s actually buildable.
It’s mutually exclusive with dynamic adjustment. The UI disables one when the other is on, because they push in opposite directions.
Multi-location
Section titled “Multi-location”If your shop has Location-sensitive dynamic adjustments enabled (in shop settings):
- The recompute uses the order’s fulfillment location to pick which Shopify location’s BOM variant gets adjusted.
- Per-location component availability drives per-location BOM availability.
Without that setting, all dynamic adjustments go to the shop default location regardless of where the order shipped from.
Per-BOM disable
Section titled “Per-BOM disable”Each BOM has its own toggle. A BOM with dynamic adjustment off is skipped by the cascade, even when other BOMs in the same order have it on. Useful for hand-curated BOMs that should keep their displayed quantity stable.
The “Synchronize with Raw Materials” button
Section titled “The “Synchronize with Raw Materials” button”Visible on the BOM detail page when dynamic adjustment is on. It manually triggers a recompute for the current BOM — equivalent to what would happen after the next order, but on demand.
Use it when:
- You’ve manually adjusted a raw material’s stock outside of order events.
- You’re recovering from a botched execution.
- You want to verify a BOM is in the expected state without waiting for an order.
When to use which
Section titled “When to use which”| Goal | Use |
|---|---|
| Shopify storefront should reflect what’s buildable right now. | Dynamic adjustment. |
| Storefront should always show a fixed quantity I curate. | Maintain inventory level. Set the variant to the desired quantity once; let Assemblified hold it there. |
| Customers should only see what’s physically built. | Only sell pre-assembled quantities (separate setting; covered in Pre-assembled). |
| Storefront tracks Shopify’s normal inventory math, no recompute. | Both off. |
Common gotchas
Section titled “Common gotchas”- Dynamic adjustment runs after every order — for every BOM that shares components. A single order can trigger recomputes across many BOMs. Plan your store’s BOM volume accordingly.
- The cascade has a known issue today. A multi-BOM cascade with shared components currently has a cascading-decrement bug under specific conditions. If your displayed quantities don’t match expectations after a complex order, run Synchronize with Raw Materials on the affected BOMs to force a clean recompute.
- Maintain inventory level depends on your queue + Shopify pipeline working. If a Shopify call fails partway, the displayed quantity may drift from what you expected. The execution log will show the failure.
- Pre-assembled is added to the dynamic adjustment result. A BOM with bottleneck 35 and pre-assembled 10 displays 45, not 35 or 10.
Where to next
Section titled “Where to next”- Settings reference — the toggle definitions.
- Pre-assembled inventory — how pre-assembled feeds into the displayed quantity.