Skip to main content

Text you can change, and text you can't

A full reference for every piece of widget and checkout text in the app: where to edit what's editable, and why a few specific strings are fixed.

Written by Andrey Gadashevich

Editable text

Every widget caption — Out of stock, In stock, Free, Free gift, In cart, Choose free gift, Replace, Choose gift, Pre order, Quantity:, Total, Add to cart, View cart, Checkout, the cart success message, and the screen-reader labels — is edited in Widget customization → Text settings, one language at a time using the language selector at the top of the section. Captions are grouped into Products, Actions, Date/Time, Other, and Screen reader text.

Bundle title and Bundle description (what the widget shows on the product pages of the bundle's own items) are edited on the bundle page, Bundle information card. Translatable with the Translate button once your shop has more than one widget language.

Bundle product title and Bundle product description (what the widget shows on the bundle's own product page) are edited on the bundle page, "Bundle's own product page" card. Translatable. This does not rename the underlying Shopify product.

Bundle internal name is edited on the bundle page, Bundle information card. Required, max 255 characters — and for a bundle with its own product, this is also the Shopify product's title.

Volume-discount per-option Title, Description (64 characters), Label (40 characters), and Badge (24 characters) are edited inside each option in the Discount options card. All translatable, all with a live character counter.

Countdown timer Title is edited on the bundle's Advanced tab, Countdown timer card. Placeholder text is "Hurry! Offer expires in"; leaving it empty falls back to the store-wide timer caption.

Custom property Field title and Field help text are edited on the bundle's Advanced settings card. The Field title is both the shopper-facing label and the property name recorded on the order, so write it as you want it to read on the order — square brackets and quotes are stripped automatically.

Variant name, in the Bundle components table, applies to Shopify bundles only. It becomes the Shopify variant's title at checkout and on the order, and is required and must be unique.

SKU, in the Bundle components table, applies to Shopify bundles only. It's optional; if filled in, it must be unique and is written to the Shopify variant's SKU.

Discount prefix is edited in Settings → App settings, on shops using the code-based discount engine. Clearing it restores the default, "BUNDLE".

A few things are deliberately absent from the Text settings editor because they're edited directly on the bundle instead: the default widget title, the default widget description, and the items string.

Text you can't change

"bundle variant #1", "bundle variant #2", … is the variant name of the bundle line in the cart, at checkout, on the order, and in your Shopify admin's variant list for the generated product. This is a fixed system string — the app relies on this exact prefix to recognise its own bundle lines — used on Physical bundles that have more than one price combination. A Physical bundle with exactly one combination gets Shopify's "Default Title" instead. If you need shopper-readable variant names, use a Shopify bundle instead of a Physical bundle.

The "#1", "#2", … line-item properties that list a bundle's contents are shown under it in the cart, always reading "Product title - Variant title (xN)". They're generated by the app and their text can't be changed. Whether they're visible at checkout is controlled separately, by Settings → "Show bundle props on checkout" (its help text reads "For Bundles with own product page only (as one product)") — this toggles them between the visible #1 form and a hidden _#1 form.

_VariantIds is a hidden line-item property on every Physical bundle cart line. It's internal bookkeeping that tells the app which real variants a bundle line represents, used for inventory and cart validation. The leading underscore hides it from the shopper and from the order confirmation, and it must not be removed.

Product type "Bundle" on the generated product, visible in Shopify admin → Products, is set automatically by the app the first time the product is created.

English as a widget language, in Widget customization → Text settings, can't be removed — the entire widget-text payload is built from the English text keys, so English always stays available.

Price and Compare at price, shown in the Bundle components table grid, are there for reference only. They're calculated automatically from the components and the discount, not editable directly.

The "Pre-order" caption

The widget shows Pre order whenever the selected variant is reported as out of stock but still purchasable. A variant with inventory tracking turned off has no stock quantity but is still purchasable, so it reaches the widget in exactly the same shape as a genuine backorder variant — and gets the same caption. This caption takes priority over both "Out of stock" and "Add to cart" whenever it applies. The app also writes its own Physical bundle product variants in that same shape — continue-selling and untracked — unless the whole combination is genuinely out of stock.

There are two correct ways to change this behaviour:

  1. Turn on inventory tracking for that product in Shopify, with stock on hand.

  2. Rename the caption itself: Widget customization → Text settings → Products → the "Pre order" field, repeated for each language your shop has added.

In short: the widget shows "Pre-order" whenever Shopify reports the selected item as out of stock but still purchasable — which is how an item with inventory tracking turned off is reported. Turn on inventory tracking with stock on hand, or rename the caption in Widget customization → Text settings → Products → "Pre order".

One detail we haven't independently verified: whether Shopify's Storefront API specifically returns "currently not in stock" for variants that simply have inventory tracking disabled. This is Shopify's own behaviour rather than something the app controls, and while everything else in this explanation is confirmed in the app's code, this particular Shopify-side detail is not something we've tested directly.

Did this answer your question?