Troubleshooting
Boxes disappear from the cart
Something is making the bundle unavailable, and Commerce drops an unavailable line item on every recalculation. Check, in order:
- The bundle's status is live — a pending post date or a passed expiry date both count
- Available for purchase is on
- It has a real SKU, not a temporary one
php craft present/bundles/check— the stock rollup may say it cannot be built
"This box cannot be made up right now"
The stock rollup found a component that cannot supply a single box. present/bundles/check names
it. If the component should not be limiting anything, it is probably inventory-tracked when you
meant it not to be — an untracked component never limits a bundle.
A component's price is wrong in the cart
Check the bundle's pricing mode. Under fixed pricing with the default spread allocation, every component is re-priced to its share of the bundle price, so a component will not show its own price — that is the intended behaviour, and the line totals add up to the bundle price.
A slot discount doesn't seem to apply
Check whether the option has its own discount. An option-level 0 is an explicit "no discount on
this one" and overrides the slot's; leaving it empty is what makes it inherit.
A bundle's contents show as separate rows in the cart
They are separate rows — that is how stock and fulfilment work. Use
craft.present.cartLineItems() and craft.present.isComponent() to group them. See
Templating.
The builder doesn't appear
- Is
registerBuilderAssetson, or are you bundling the JS yourself? - Does the bundle have at least one slot?
- Check the console: the builder logs "could not start the box builder" if its payload will not parse.
- After editing anything under
src/web/assets/*/dist, runphp craft clear-caches/cp-resources— Craft keeps serving the previously published copy.
The slots editor is missing from the bundle edit screen
What's in the box is a native field. Drag it into the bundle type's field layout.
Pro features aren't working
Check the edition: php craft plugin/list. On Lite, range slots behave as fixed, query pools fall
back to their list, item limits are ignored and allocation always spreads. The bundle edit screen
says so when a bundle is affected.
A bundle type I deleted is still listed
Only possible if the deletion happened in a bare console script that exited without flushing
project config. Run php craft project-config/apply --force, or delete it again through the
control panel.
Changes made by a script vanish on the next deploy
A bare PHP script that boots bootstrap/console.php never fires
Application::EVENT_AFTER_REQUEST, which is what Craft flushes project config on. The change lands
in the database and nowhere else, and the next project-config/apply reverts it from the untouched
YAML. Call Craft::$app->getProjectConfig()->flush() before the script exits.
Order totals don't match what the product page showed
They should — both read the same Pricer. If they differ, a component's price changed between the
two, and Commerce will have added a "the price of X changed" notice to the order. That is working
as intended: prices are recomputed from the stored selection on every recalculation rather than
frozen at add-to-cart.