Skip to main content
Build a Box is a post-purchase offer type where the shopper assembles their own box from a set of products you curate, and buys the whole selection in one transaction. Instead of accepting or declining a single product, they choose what goes in and how many, and a volume discount can deepen as the box fills. It sits alongside the single-product and multi-product post-purchase offers, and composes with the usual offer widgets such as the heading and timer.
Build a Box offers several different products. To sell more units of one product at tiered prices, use Quantity upsells instead.
To add one, open the funnel, select Add offer, and choose Build a box.

Setting up the box

Choosing candidate products

The Product selection section controls which products a shopper can choose from. These are called candidates.
  1. Open the box offer in the post-purchase funnel editor.
  2. Expand Product selection.
  3. Select Add product and pick one or more products. Products already on the list are excluded from the picker.
  4. Save.
A box supports up to 12 candidates. Drag the handle on a row to reorder — that’s the order shoppers see. Use the delete icon to remove one; you can’t remove the last remaining candidate, since a box needs at least one.

Box size

Box size sets how many items the shopper must choose: With a fixed-size box, the editor notes that shoppers must choose exactly that many items and will see a “0 of N selected” counter.
If your candidates can’t collectively reach the minimum, the editor shows a critical banner titled “This box won’t be shown to shoppers”, naming the most items your products do allow and the minimum you set. The offer is skipped entirely at serve time.The fix it suggests depends on the cause:
  • A product has its quantity selector turned off, so it can only be added once — turn one back on, add more products, or lower the minimum.
  • Otherwise — lower the minimum, add more products, or raise a product’s maximum quantity.
  • The box maximum admits no items at all — the banner says so instead, and asks you to raise it or leave it empty.

Discounts

Discount tiers

The Box discount section sets a discount that scales with how many items are in the box. Add a tier with Add tier, then set Minimum items for tier N and Discount for tier N. How the rate is chosen:
  • The shopper gets the rate of the highest tier they reach. If you configure 3+ items at 30% and 6+ items at 20%, a shopper with 6 items gets 20%.
  • The rate is evaluated at the live item count, not at the box minimum. A tile opens at full price and re-prices as the box fills, so the rate a shopper is quoted is always the rate their current selection actually earns.
  • An empty tier table is valid and means the box sells at full price.
There is no box-wide discount cap — the tier table is the only thing that sets the rate. The editor shows advisory warnings for two tier shapes that look unintended. Neither blocks saving:

Free gifts on discount tiers

Any discount tier can include a free gift, added to the order at 100% off when the shopper’s box reaches that tier. To add a gift to a tier, click Add free gift under the tier row and choose a product. Once a gift is attached, click the gift row to expand its settings: To change the gift product, use the replace icon on the gift row. To remove the gift, use the delete icon. The editor shows a warning if a gift is on a tier whose minimum exceeds the box maximum, since that tier can never unlock. Gift behavior appears once any tier has a gift and applies to the whole box:
  • Give every gift the box has reached (cumulative). The shopper receives the gift from every tier they have passed.
  • Give only the highest reached tier’s gift (selected tier). Only the gift from the deepest qualifying tier is given.
Gift banner text sets the header shown above locked gifts. Leave it empty to use the default in the offer’s language. Supports {items-to-next-gift} and {next-gift}, as well as all the standard box variables.

Per-product discounts

A candidate can carry its own discount instead of following the box rate. Open the candidate, go to Discount, and check Give this product its own discount.
  • The override applies on that product’s tile and in the box total, in place of the tier rate.
  • 0 is a valid override — it holds a product at full price inside an otherwise discounted box.
  • Leave the override off to follow the box discount.

Editing several products at once

Edit all products opens a bulk panel. Uncheck any candidate you want to leave out of the edit. Where the selected products differ, a field shows Mixed — editing it writes your value to all of them, and leaving it alone preserves each product’s own value. The override toggle shows an indeterminate state when only some have overrides.

Per-product settings

Each candidate has its own panel, covering Badge, Product image badge, Image, Product details (including review ratings, with star colours defaulting to #fdcc0d and #d1d5db), Variant options, Box limits, Discount, and Already purchased. Tile appearance is not set per candidate. It comes from the offer-level Layout setting, so every tile in a box is shaped the same way. Two settings under Box limits are worth calling out:
  • Show quantity selector — off by default on new offers. Each add puts in exactly one unit with no per-tile quantity stepper. Turn it on to let shoppers choose a quantity per tile.
  • Maximum quantity in a box — leave empty for no limit, or set it to 1 to keep a variety box varied.
The Already purchased section controls what happens when a shopper already has this product — bought on the current order or accepted at an earlier step in the funnel. Matched on product ID, so a different variant of a purchased product still counts. Choose one of three treatments: When Show a “Your choice” badge is selected, three additional settings appear:
  • Badge text — the wording on the badge. Leave blank to use your store’s translation (set in Settings > Translations under Already purchased badge). Defaults to “Your choice”.
  • Badge color — the fill color of the badge pill (hex, default #008060).
  • Badge text color — the text color inside the badge pill (hex, default #ffffff).
The badge is visible in the funnel editor preview, so you can see how it looks before publishing.

Layout

Layout, under the box’s layout settings, sets the tile shape and how many tiles share a row: The same section sets the padding around the box.

Progress

Box progress controls the fill indicator: There is no “hidden” position. To drop the progress line entirely, clear the progress text field.

Progress text variables

Type { in any of the three progress wording editors to insert a variable. The step-header variables available on multi-product offers have no box equivalent and are not offered here.

Progress wording

Progress wording is three rich text editors, one for each stage of filling the box. Type { in any of them to insert a variable. Clear a field to hide the progress line in that state. The editor shows only the fields your box can actually reach:
  • Before the first tier appears when the box has a minimum above zero or at least one discount tier.
  • Between tiers appears only when the box has two or more tiers, or a maximum on a box with no tiers.
  • Last tier reached always appears. Every box reaches it.
Because these are rich text editors, you can bold, colour, and resize the wording, not just change the words. Changing the box Language re-translates any wording you haven’t edited. Once you edit a field, it’s left exactly as you typed it.

Tile button text

The Tile button text section in the Buttons panel lets you customize the wording on the Add and Remove buttons that appear on each candidate tile, for this funnel only.
  • Add button text — the label shown on a tile before the shopper adds the product to their box. Defaults to “Add to box”.
  • Remove button text — the label shown on a tile after the shopper has added the product. Defaults to “Remove”.
Leave either field blank to use your store’s translation from the Translations page. If the store translation is also blank, the English default is used. The unavailable state label (“Unavailable”) is not affected by these settings. To set store-wide defaults for these labels instead of a per-funnel override, go to Translations in the Aftersell admin and update the Add to box and Remove from box entries.

Shipping

The Shipping section sets what the box charges for delivery. The box either ships free or adds a shipping charge. When you charge, you set the amount and choose whether to multiply it by how many items are in the box, so a six-item box can cost six times a per-unit rate or one flat fee.

Language and order tagging

  • Language sets the language used for the box copy and buttons, and for product-detail translations.
  • Order tag applies a Shopify tag to every order that accepts the box. Use it to route fulfillment or to isolate box orders in reporting.

Limitations

  • One shared accept button. The box has a single call to action rather than per-product buttons, because Shopify caps how many accepts a post-purchase page can make.
  • No replacement offers. A box can’t be used as a replacement upsell.
  • The price breakdown doesn’t collapse. Show price breakdown, under General settings, turns it on or off. When it’s on it is always expanded — the multi-product offer puts its breakdown behind a “Show price breakdown” link instead.

Subscription-only products

Products configured to sell only as a subscription (requiresSellingPlan: true in Shopify — no one-time purchase option) cannot be included in a build-a-box offer. Every item in a box is charged as a one-time purchase on the order, so Shopify rejects subscription-only products at serve time. These candidates are silently dropped on every real order, even though the funnel editor preview continues to show them. The funnel editor warns you when this situation is detected:
  • Warning banner — some candidates are subscription-only but enough non-subscription candidates survive to reach the box minimum. The banner lists the affected products by name. The offer still shows to shoppers, but with fewer products than configured.
  • Critical banner — all candidates are subscription-only, or the surviving non-subscription candidates cannot reach the box minimum. The offer is skipped entirely for every shopper.
If you see the warning banner, the box still works — it just serves fewer products than you configured. Add more candidates that can also be bought once, so the box carries the range you intended. If you see the critical banner, the offer won’t run at all until you fix it. Any of these clears it:
  • Add candidates that can also be bought once.
  • Lower the box minimum, so the surviving candidates are enough to reach it.
  • Turn off “subscription only” on the affected products in Shopify, if they should also sell as a one-time purchase.
You can also remove the subscription-only candidates from the box entirely. That changes nothing for shoppers — they’re already dropped on every real order — but it silences the banner and makes the editor preview match what actually serves. Subscription-enabled products (those offering both a one-time purchase and a subscription) aren’t dropped from a box. They’re simply sold as a one-time purchase, like every other box item — a box never carries a selling plan.