Compact
A polished narrow-placement section with configurable image fit, real swatches that collapse after six choices, and low-chrome rows.
Built for: Cart drawers, sidebars, and narrow page columns.

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.
How Compact 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 state | Rendering in this design |
|---|---|
| Custom bundle | Product selection, progress, qualifying step, totals, and add-to-cart. |
| Build-a-box sections | Named groups and live section counts within the shared storefront payload. |
| Quantity breaks | Compatible rendering through the design’s product and step UI. |
| Free gifts | Gift selection is present, without the design-specific locked-gift treatment. |
| Fixed bundle | Not applicable. Shoppers buy the fixed parent product through its standard product form. |
The schema, rendered without drift.
62 settings across the section and its reorderable blocks.
| Group | Setting | Type | Options | Default | What it changes |
|---|---|---|---|---|---|
| Section | Campaign ID (optional) | text | — | Theme default | Leave 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. |
| Section | Heading | text | — | Your bundle | Controls this part of the section in the Theme Editor. |
| Section | Subheading | text | — | Theme default | Controls this part of the section in the Theme Editor. |
| Section | Frame | select | Box — bordered card, Bare — blends into the page | box | Controls this part of the section in the Theme Editor. |
| Section | Density | select | Cozy, Tight | cozy | Controls this part of the section in the Theme Editor. |
| Section | Accent color | color | — | #202223 | Controls this part of the section in the Theme Editor. |
| Section | Gift accent color | color | — | #b8863b | Controls this part of the section in the Theme Editor. |
| Section | Text color | color | — | Theme default | Leave empty to inherit the theme text color. |
| Section | Box background | color | — | Theme default | Box frame only. Leave empty to inherit. |
| Section | Image fit | select | Cover (crop to fill), Contain (show whole product) | cover | Cover fills the shape and crops edges; Contain shows the whole product without cropping. |
| Section | Section background | color | — | Theme default | Leave empty to inherit the theme background. |
| Section | Corner style | select | Rounded, Soft, Square | soft | Controls this part of the section in the Theme Editor. |
| Section | Show discount labels on the progress track | checkbox | — | Off | Controls this part of the section in the Theme Editor. |
| Section | Limit content width | checkbox | — | Off | Off by default so the section fills whatever column it sits in. |
| Section | Content width | range | — | 480 | Controls this part of the section in the Theme Editor. |
| Section | Variant options | select | Color swatches and buttons, Buttons, Dropdowns | swatches | Products with multiple options show one row per option, such as Color and Size. |
| Section | Swap button on full single-choice categories | text | — | Choose this instead | Controls this part of the section in the Theme Editor. |
| Message bar | Show progress track | checkbox | — | On | Controls this part of the section in the Theme Editor. |
| Message bar | Empty state | text | — | Add your first product to start saving | Controls this part of the section in the Theme Editor. |
| Message bar | Progress ({remaining}, {label}, {discount}) | text | — | Add {remaining} more to unlock {discount}% off | Controls this part of the section in the Theme Editor. |
| Message bar | Gift prompt | text | — | Nice! Choose your free gifts below | Controls this part of the section in the Theme Editor. |
| Message bar | Ready ({discount}) | text | — | {discount}% off unlocked — add your bundle to the cart! | Controls this part of the section in the Theme Editor. |
| Message bar | Adding | text | — | Adding your bundle… | Controls this part of the section in the Theme Editor. |
| Message bar | Added | text | — | Your bundle is in the cart 🎉 | Controls this part of the section in the Theme Editor. |
| Message bar | Over largest bundle | text | — | You’ve exceeded the largest bundle size — remove some items | Controls this part of the section in the Theme Editor. |
| Message bar | Category below minimum ({remaining}, {label}) | text | — | Add {remaining} more to {label} | Controls this part of the section in the Theme Editor. |
| Message bar | Items count ({count}) | text | — | {count} in your bundle | Controls this part of the section in the Theme Editor. |
| Message bar | Editing a carted bundle | text | — | You’re editing a bundle from your cart — updating replaces it. | Controls this part of the section in the Theme Editor. |
| Message bar | Editing: unavailable items ({dropped}) | text | — | Heads 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 bar | paragraph | — | Theme default | Controls this part of the section in the Theme Editor. | |
| Countdown timer | paragraph | — | Theme default | Controls this part of the section in the Theme Editor. | |
| Countdown timer | Label | text | — | Ends in | Controls this part of the section in the Theme Editor. |
| Countdown timer | Ended text | text | — | Offer ended | Controls this part of the section in the Theme Editor. |
| Products | paragraph | — | Theme default | Controls this part of the section in the Theme Editor. | |
| Products | Show product thumbnails | checkbox | — | On | Controls this part of the section in the Theme Editor. |
| Products | Add button label | text | — | Add | Controls this part of the section in the Theme Editor. |
| Products | Added button label | text | — | Added | Controls this part of the section in the Theme Editor. |
| Products | Per-product limit note ({max}) | text | — | Limit {max} per product | Controls this part of the section in the Theme Editor. |
| Products | Load products in pages | checkbox | — | On | Controls this part of the section in the Theme Editor. |
| Products | Products per page | range | — | 24 | Controls this part of the section in the Theme Editor. |
| Products | Load more button ({count}) | text | — | Show more ({count} left) | Controls this part of the section in the Theme Editor. |
| Products | Selected items hidden note ({count}) | text | — | {count} selected item(s) are not shown right now. | Controls this part of the section in the Theme Editor. |
| Products | Show hidden items button | text | — | Show them | Controls this part of the section in the Theme Editor. |
| Products | Result count ({count}) | text | — | {count} products | Controls this part of the section in the Theme Editor. |
| Products | Result count, paged ({shown}, {count}) | text | — | Showing {shown} of {count} | Controls this part of the section in the Theme Editor. |
| Products | Category status ({label}, {count}, {max}) | text | — | {label}: {count} of {max} | Controls this part of the section in the Theme Editor. |
| Products | Category status, no max ({label}, {count}, {min}) | text | — | {label}: {count} selected — pick at least {min} | Controls this part of the section in the Theme Editor. |
| Products | Category status, optional ({count}) | text | — | {count} chosen | Controls this part of the section in the Theme Editor. |
| Products | Tier deal ({min}, {discount}) | text | — | Buy {min}+ — save {discount}% | Controls this part of the section in the Theme Editor. |
| Products | Per-unit price ({price}) | text | — | {price} each | Controls this part of the section in the Theme Editor. |
| Free gifts | paragraph | — | Theme default | Controls this part of the section in the Theme Editor. | |
| Free gifts | Heading | text | — | Free gifts | Controls this part of the section in the Theme Editor. |
| Totals | Subtotal label | text | — | Subtotal | Controls this part of the section in the Theme Editor. |
| Totals | Discount label | text | — | Bundle discount | Controls this part of the section in the Theme Editor. |
| Totals | Total label | text | — | Total | Controls this part of the section in the Theme Editor. |
| Totals | Savings line ({amount}, {discount}) | text | — | You save {amount} · {discount}% off | Controls this part of the section in the Theme Editor. |
| Add to cart | Button label | text | — | Add bundle to cart | Controls this part of the section in the Theme Editor. |
| Add to cart | Show the total on the button | checkbox | — | On | Controls this part of the section in the Theme Editor. |
| Add to cart | Button label while editing a carted bundle | text | — | Update bundle | Controls this part of the section in the Theme Editor. |
| Add to cart | Updated message | text | — | Your bundle is updated 🎉 | Controls this part of the section in the Theme Editor. |
| Add to cart | Show error messages | checkbox | — | On | Controls this part of the section in the Theme Editor. |
| Add to cart | Open the cart after adding | checkbox | — | On | Opens your theme's cart drawer when the bundle is added. Themes that don't support this ignore it. |
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.
Section · HeadingYour bundle
Build your summer set
Editable in this design
- Campaign ID (optional)Section
- HeadingSection
- SubheadingSection
- Swap button on full single-choice categoriesSection
- 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
Keep what earns its place.
Removing a block removes that presentation layer, not the checkout rule. Shopify still validates the price.
Message bar
Removes the progress, ready, and status message area.
Countdown timer
Removes the schedule-bound countdown from this design.
Products
Removes the product or quantity selection surface.
Free gifts
Removes the dedicated free-gift presentation area.
Totals
Removes the illustrative subtotal, savings, and total display.
Add to cart
Removes the design’s add-bundle button.
Pick the least complicated path that fits.
Theme app block
The standard no-theme-write route. It uses the app-block renderer rather than installing this committed design file.
One-click is gated
This path stays hidden in production until the protected theme-write capability is available.
Manual install
Copy the self-contained section and place it in a compatible theme template.
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
- Theme and published Shopify data
- Selection and cart engine
- Shopify checkout pricing