Drop-in section

Quantity breaks

A volume-focused ladder with stacked or column steps, configurable image fit, real variant swatches, and optional per-unit pricing.

Built for: Single-product volume discounts — “buy 3, save 15%”.

Quantity breaks storefront design
Interactive demo

Use the controls merchants actually get.

The catalog data is illustrative. Every configurable section and block setting, plus each folded variant, is synced from the committed Liquid schema.

Custom bundle · illustrative catalogBuy more, save moreAdd 1 more to unlock 15%
Campaign coverage

How Quantity breaks handles each offer.

The four campaign tabs in the demo show one illustrative state per supported builder mode, including selectable, preselected, and locked gift states. Fixed bundles use a standard product page and expand at checkout.

Campaign stateRendering in this design
Custom bundleProduct selection, progress, qualifying step, totals, and add-to-cart.
Build-a-box sectionsNamed groups and live section counts within the shared storefront payload.
Quantity breaksPurpose-built stacked or column pricing ladder.
Free giftsGift selection is present, without the design-specific locked-gift treatment.
Fixed bundleNot applicable. Shoppers buy the fixed parent product through its standard product form.
Every setting

The schema, rendered without drift.

55 settings across the section and its reorderable blocks.

GroupSettingTypeOptionsDefaultWhat it changes
SectionCampaign ID (optional)textTheme defaultLeave empty on product and collection pages — the section finds the campaign targeting the page. Set an ID (cmp-…) to always show one campaign. IDs appear in the app's campaign editor URL and Diagnostics page.
SectionHeadingtextBuy more, save moreControls this part of the section in the Theme Editor.
SectionSubheadingtextTheme defaultControls this part of the section in the Theme Editor.
SectionAccent colorcolor#e94f64Controls this part of the section in the Theme Editor.
SectionGift accent colorcolor#b8863bControls this part of the section in the Theme Editor.
SectionText colorcolorTheme defaultLeave empty to inherit the theme text color.
SectionCard backgroundcolor#ffffffControls this part of the section in the Theme Editor.
SectionImage fitselectCover (crop to fill), Contain (show whole product)coverCover fills the shape and crops edges; Contain shows the whole product without cropping.
SectionSection backgroundcolorTheme defaultLeave empty to inherit the theme background.
SectionCorner styleselectRounded, Soft, SquareroundedControls this part of the section in the Theme Editor.
SectionShow discount labels on the progress trackcheckboxOnControls this part of the section in the Theme Editor.
SectionLimit content widthcheckboxOnControls this part of the section in the Theme Editor.
SectionContent widthrange1040Controls this part of the section in the Theme Editor.
SectionVariant optionsselectColor swatches and buttons, Buttons, DropdownsswatchesProducts with multiple options show one row per option, such as Color and Size.
Message barShow progress trackcheckboxOnControls this part of the section in the Theme Editor.
Message barEmpty statetextPick your bundle size to start savingControls this part of the section in the Theme Editor.
Message barProgress ({remaining}, {label}, {discount})textAdd {remaining} more to unlock {discount}% offControls this part of the section in the Theme Editor.
Message barGift prompttextNice! Choose your free gifts belowControls this part of the section in the Theme Editor.
Message barReady ({discount})text{discount}% off unlocked — add your bundle to the cart!Controls this part of the section in the Theme Editor.
Message barAddingtextAdding your bundle…Controls this part of the section in the Theme Editor.
Message barAddedtextYour bundle is in the cart 🎉Controls this part of the section in the Theme Editor.
Message barOver largest bundletextYou’ve exceeded the largest bundle size — remove some itemsControls this part of the section in the Theme Editor.
Message barCategory below minimum ({remaining}, {label})textAdd {remaining} more to {label}Controls this part of the section in the Theme Editor.
Message barItems count ({count})text{count} in your bundleControls this part of the section in the Theme Editor.
Message barEditing a carted bundletextYou’re editing a bundle from your cart — updating replaces it.Controls this part of the section in the Theme Editor.
Message barEditing: unavailable items ({dropped})textHeads up: {dropped} item(s) from your original bundle are no longer available and won’t be included.Controls this part of the section in the Theme Editor.
Message barparagraphTheme defaultControls this part of the section in the Theme Editor.
Countdown timerparagraphTheme defaultControls this part of the section in the Theme Editor.
Countdown timerLabeltextEnds inControls this part of the section in the Theme Editor.
Countdown timerEnded texttextOffer endedControls this part of the section in the Theme Editor.
ProductsparagraphTheme defaultControls this part of the section in the Theme Editor.
ProductsTier viewselectStack — cards top to bottom, Columns — pricing-table stylestackControls this part of the section in the Theme Editor.
ProductsShow per-unit pricecheckboxOnControls this part of the section in the Theme Editor.
ProductsShow strike-through full pricecheckboxOnControls this part of the section in the Theme Editor.
ProductsCard size (fallback grid)range180The grid fits as many cards as the space allows.
ProductsAdd button label (fallback grid)textAdd to bundleControls this part of the section in the Theme Editor.
ProductsAdded button label (fallback grid)textAddedControls this part of the section in the Theme Editor.
ProductsPer-product limit note ({max})textLimit {max} per productControls this part of the section in the Theme Editor.
ProductsCategory status ({label}, {count}, {max})text{label}: {count} of {max}Controls this part of the section in the Theme Editor.
ProductsCategory status, no max ({label}, {count}, {min})text{label}: {count} selected — pick at least {min}Controls this part of the section in the Theme Editor.
ProductsCategory status, optional ({label}, {count})text{count} chosenControls this part of the section in the Theme Editor.
ProductsTier deal ({min}, {discount})textBuy {min}+ — save {discount}%Controls this part of the section in the Theme Editor.
ProductsPer-unit price ({price})text{price} eachControls this part of the section in the Theme Editor.
Free giftsparagraphTheme defaultControls this part of the section in the Theme Editor.
Free giftsHeadingtext🎁 Free gift unlockedControls this part of the section in the Theme Editor.
TotalsSubtotal labeltextSubtotalControls this part of the section in the Theme Editor.
TotalsDiscount labeltextBundle discountControls this part of the section in the Theme Editor.
TotalsTotal labeltextTotalControls this part of the section in the Theme Editor.
TotalsSavings line ({amount}, {discount})textYou save {amount} · {discount}% offControls this part of the section in the Theme Editor.
Add to cartButton labeltextAdd bundle to cartControls this part of the section in the Theme Editor.
Add to cartShow the total on the buttoncheckboxOnControls this part of the section in the Theme Editor.
Add to cartButton label while editing a carted bundletextUpdate bundleControls this part of the section in the Theme Editor.
Add to cartUpdated messagetextYour bundle is updated 🎉Controls this part of the section in the Theme Editor.
Add to cartShow error messagescheckboxOnControls this part of the section in the Theme Editor.
Add to cartOpen the cart after addingcheckboxOnOpens your theme's cart drawer when the bundle is added. Themes that don't support this ignore it.
Text and labels

Your words stay in the theme.

Generic storefront wording is theme-owned. The campaign keeps only the cart title and each step’s message and badge.

Before and after

Section · Heading
Buy more, save more
Build your summer set

Editable in this design

  • Campaign ID (optional)Section
  • HeadingSection
  • SubheadingSection
  • Empty stateMessage bar
  • Progress ({remaining}, {label}, {discount})Message bar
  • Gift promptMessage bar
  • Ready ({discount})Message bar
  • AddingMessage bar
  • AddedMessage bar
  • Over largest bundleMessage bar
  • Category below minimum ({remaining}, {label})Message bar
  • Items count ({count})Message bar
Reorderable blocks

Keep what earns its place.

Removing a block removes that presentation layer, not the checkout rule. Shopify still validates the price.

01

Message bar

Removes the progress, ready, and status message area.

02

Countdown timer

Removes the schedule-bound countdown from this design.

03

Products

Removes the product or quantity selection surface.

04

Free gifts

Removes the dedicated free-gift presentation area.

05

Totals

Removes the illustrative subtotal, savings, and total display.

06

Add to cart

Removes the design’s add-bundle button.

Installation paths

Pick the least complicated path that fits.

01

Theme app block

The standard no-theme-write route. It uses the app-block renderer rather than installing this committed design file.

02

One-click is gated

This path stays hidden in production until the protected theme-write capability is available.

03

Manual install

Copy the self-contained section and place it in a compatible theme template.

Remixable display layer

Change the presentation without changing the pricing authority.

The theme renders the campaign, the storefront engine owns selection and cart intent, and Shopify checkout validates the result.

Three layers, one direction

  1. Theme and published Shopify data
  2. Selection and cart engine
  3. Shopify checkout pricing
Read the technical story