A product included inside a bundle is not necessarily an independent purchase. WooCommerce 11.3 introduces an explicit parent-child relationship that the Product Button can use when showing its in-cart quantity. If your extension creates linked cart lines, test that relationship before trying to fix the displayed number with CSS or a custom badge.
This guide concerns the 11.3 prerelease on protected staging. It is not a recommendation to install beta software on a live checkout.
Identify the number that is wrong
Record whether the complaint concerns the Product Button, mini-cart, checkout line quantity or order total. These are different outputs. The new relationship currently affects the Product Button count; it does not promise that every cart component will automatically group or indent bundle children.
Create a synthetic bundle containing one ordinary product. Add the bundle without separately buying its component. Compare the component's product button with the actual cart lines. Keep the cart response and the displayed count together, with shopper identifiers removed.
Use cart-item identity, not product identity
The new Store API field is parent_item_key. An extension declares it through woocommerce_store_api_cart_item_parent_item_key. The value identifies the parent's cart line, not its product ID. Two instances of the same product can occupy different lines, so a product identifier cannot reliably describe the relationship.
Ask the extension maintainer where the parent key is captured when the parent is added, where it is stored on the child and how it is returned. If another extension already supplied a relationship for an unrelated item, preserve that value. A broad callback that overwrites every item can break integrations it does not own.
Build a small quantity worksheet
Use recognizable fixture names rather than actual merchandise bundles. Write the expected independent quantity before looking at the UI. That prevents a misleading display from becoming the expected answer.
| Fixture |
Question to answer |
| One bundle with a child |
Is the component excluded from the independent purchase count? |
| Same component bought separately |
Does the independent line contribute its quantity? |
| Two independent lines for one product |
Does the button reflect their combined eligible quantity? |
| Parent removed but child remains |
Does the observed relationship match the remaining cart? |
| Invalid or self-referencing parent |
Is the response handled safely rather than trusted blindly? |
WooCommerce returns a null relationship for a missing parent, an unknown key or a self-reference. A remaining child then counts as standalone. That behavior makes the removal scenario particularly important for extensions that intentionally keep optional add-ons after removing their original bundle.
Synthetic bundle test matrix separating child quantities from independently purchased quantities. Synthetic explanatory visual.
Follow one cart through reload and quantity changes
Increase the standalone component quantity, then reload the page. Compare the initial HTML and hydrated button after the response settles. Add a second independent line only if the extension supports doing so, and verify that the combined count does not silently use just the first line.
Repeat in a fresh browser session with the same fixtures. If the line relationships are correct but the UI shows an old count, investigate the response and cache boundary using the cart-cache mismatch guide. Do not classify every inconsistent number as a parent-key bug.
Also check that the relationship change has not modified chargeable quantities, discounts or order lines. A display correction should not become an unreviewed pricing change. Use a sandbox gateway or a non-payment fixture, never real customer transactions for this comparison.
What to send the extension maintainer
Include the WooCommerce build, bundle extension version, fixture product IDs, redacted cart line keys, the relationship response and the exact button being inspected. Describe expected and actual quantities separately. Do not include a live cart token or authentication cookie.
Acceptance means the correct independent count survives addition, removal and reload while pricing remains unchanged. If the relationships cannot be traced across two extensions, request a WooCommerce compatibility investigation with that small fixture. Repeat the test against the stable release before approving production deployment.
Reference and review date
Primary technical reference. Sources checked October 29, 2026. The proposed procedures and original diagrams are explanatory test aids, not claims of customer testing or measured improvements.