MBC Bundles never writes to your theme. Everything the app puts on your storefront is delivered by its theme app extension, so there is no Liquid file to back up and no template to hand-edit — not for the product page, not for the bundle page, not for anywhere else.
That leaves three ways to place a widget, and one of them covers every page a theme has.
What every placement needs first
The MBC Bundles App embed has to be enabled in the theme being viewed. Turn it on in Shopify theme editor → App embeds. Without it the app never loads and the widget element is never defined, so even a pasted snippet renders as empty HTML. The setting is per theme, so a duplicated or draft theme needs its own.
The bundle also has to be in the storefront payload: Active, inside its active period, in the shopper's market, not excluded for a B2B shopper, and still within the shop's app plan.
Method 1 — the Top or Bottom position
Go to Widget customization → General tab → Global display.
Set "Widget on product pages" to Yes, and the "On product page" choice appears underneath: "Top of the product form" or "Bottom of the product form". That decides where the automatic widget sits relative to your theme's Add-to-cart form. "Widget on bundle pages" and its "On bundle page" choice do the same for a bundle product's own page.
This is the whole of the placement control for the automatic widget, and it is all most stores need. The app only applies it when it creates the widget container itself — see the next method.
Method 2 — an app block in the theme editor
To pin the widget to an exact spot instead, add an app block in Shopify theme editor → product template → Add block.
Widget for product page places the automatic product-page widget. Its Widget type setting is either Default, which renders only non-volume-discount bundles, or Quantity breaks, which renders only volume-discount bundles.
Widget for bundle page places the widget that appears on a bundle product's own page.
Both blocks exist on product templates only. When one of them is present, the block's position in the theme wins over the Top or Bottom setting from Global display, and that setting has no visible effect.
This is also the fix when the widget does not appear at all because the app could not find your theme's Add-to-cart form, or when your product template renders more than one form and only one of them is visible: the block pins the widget explicitly rather than leaving the app to search.
For a promotional block on a non-product template, there are the "Featured bundle (temp. 1)" and "Featured bundle (temp. 2)" blocks instead. Those are covered in "Collection (Homepage) view".
Method 3 — the HTML snippet, for anywhere else
Every bundle carries a copyable snippet of its own:
<mbc-bundles-widget data-bundle-id="12345"></mbc-bundles-widget>
12345 is that bundle's numeric ID. Find it in Bundle form → Advanced tab → Widget placement, at the bottom of the card, under "You can embed this bundle manually in any page via HTML". The Copy button confirms with the toast "Copied to clipboard".
Paste it into any page, section or template, and that one bundle's widget appears wherever the snippet sits — home page, collection, blog, static page, cart, a custom Liquid block. No product page and no Add-to-cart form are required.
Two conditions on the snippet itself. It is only shown when you are editing a bundle that has already been saved at least once, because on the create screen there is no bundle ID yet. And it is hidden on the non-primary variant of a running A/B test.
One difference worth knowing: the snippet carries only the bundle's ID, so it ignores the bundle's own "Show the widget on product pages of included bundle items" tick and the per-item selection under it. It still needs the app embed and an Active, in-period, in-market bundle.
The legacy mbcBundleItemsWidget element
Older documentation told merchants to paste <div id="mbcBundleItemsWidget"></div> into a theme file. You do not need to, and it is not the same thing as the snippet above.
That div is emitted by the "Widget for product page" block when its Widget type is Default — the Quantity breaks option emits <div id="mbcBundleVolumeDiscount"> instead, and the "Widget for bundle page" block emits <div id="mbcBundleItems">. If one of these already exists in your theme from an older installation, the app reuses it verbatim, which is why old setups keep working.
What it is not is a widget. It is a placement marker: it only moves the automatic product-page widget to that spot, and the app then injects an <mbc-bundles-widget> inside it. It works on product pages only, because the app runs its product-page setup only when the URL path contains /product and a product is present. On a bundle's own product page it is ignored. And it is filtered exactly like the automatic widget — the store-wide setting, the per-bundle tick and the per-item selection all still apply.
To place a bundle somewhere a product page is not involved, use the <mbc-bundles-widget> snippet instead.
Need Help?
If you have any questions, please contact our support team.
📩 Contact Support: Reach out to us via live chat or send an email to [email protected].
