> For the complete documentation index, see [llms.txt](https://docs.elitebundleapp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.elitebundleapp.com/create-bundles/build-your-own-bundle.md).

# Build your own bundle

Complete guide to creating Build Your Own Bundles in Elite Bundle Builder, including steps, products, discounts, design customization, and FAQ.

A **build your own bundle** guides shoppers through steps where they pick products. Everything they pick is added to the cart as one bundle, and the discount tier they reached applies at checkout.

## What shoppers see

{% stepper %}
{% step %}
They land on the bundle page and see the first step, for example "Choose your base".
{% endstep %}

{% step %}
They pick products, choosing a variant like size or colour where needed.
{% endstep %}

{% step %}
They move through the steps while the bundle cart shows their selection and the next discount tier.
{% endstep %}

{% step %}
They click **Add To Cart**. The tier applies automatically at checkout.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
The **Elite Embed Core** app embed must be on for the bundle to render. See [Getting started](/get-started/getting-started.md#2-enable-the-elite-embed-core-app-embed).
{% endhint %}

## The editor tabs

The fullscreen editor has seven tabs on the left icon rail. This page covers **Build**, **Config** and **Offer**. Template and Design are in [Design and customize](/customize-and-publish/design-and-customize.md).

| Tab      | What it controls                                             |
| -------- | ------------------------------------------------------------ |
| Template | Starting layout and where the bundle appears                 |
| Build    | Steps and the products in each                               |
| Config   | Rules, subscriptions and upsells                             |
| Offer    | The discount, and add-ons                                    |
| Design   | Everything visual                                            |
| Publish  | Status, theme setup, going live                              |
| Settings | The parent product, store-wide custom CSS and the shop texts |

## Build tab

<figure><img src="https://1636628623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F803Sm8MKSqVH5ol6hROo%2Fuploads%2Fgit-blob-89a974b63293f038f1ec4e1e4984643116d0ef25%2Fbyob-build-tab.png?alt=media" alt="The Build tab with step 1 open"><figcaption><p>① The step, ② products or a collection, ③ Select products</p></figcaption></figure>

### Step title

Short and action-based: *Choose your cleanser*, *Pick your snacks*, *Add your extras*.

### Product source

| Source            | Behaviour                                                                          | Use when                               |
| ----------------- | ---------------------------------------------------------------------------------- | -------------------------------------- |
| Specific products | You pick exactly which products appear                                             | Full control, seasonal or limited sets |
| Collection        | The step shows every product in one collection, updating as the collection changes | Rotating catalogs, low maintenance     |

### Managing steps

* **Add step** creates a new step; a bundle needs at least one
* Drag a step by its number badge to reorder
* **Duplicate** copies a step and its products
* **More options**, at the bottom of a step, opens two extras: the free gift switch and **Edit advanced rules →**, which opens the step's rules in Config → Rules (limits, when it shows, one of each)
* Turn on **Mark this step as a free gift** under **More options** to make everything picked there free, and set the **Gift label** shoppers see on those items in the bundle cart. The step then shows a **Free gift step** badge. Gift items count toward nothing: not tiers, the bundle limit or the box size. The step's item maximum, in its rules, is how many are free
* Inside a step, drag products to set the order shoppers see

## Config tab: Rules

**Config → Rules** has two tabs: **Whole bundle** and **Per step**. Limits on both count either **Number of items** or **Amount spent**, never both. An amount is item prices before discounts, in your store's currency; shoppers paying in another currency see it converted.

### Whole bundle

| Setting                       | What it does                                                                                                    |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Bundle limit                  | A minimum and maximum across every step. A maximum of 0 means no maximum.                                       |
| Stop at the top discount tier | Once the highest quantity tier is reached, every add button locks. Ignored when tiers are based on order total. |

### Per step

The tab lists every step; open one to configure it. Each step has two parts: **When this step shows**, which looks at an earlier step, and **What shoppers pick in this step**.

| Rule                                      | What it does                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Show this step                            | **Always**, or based on an earlier step's picks: its **Number of items** or **Amount spent** *is at least* or *is less than* a value, counting any product or only the ones you pick (Shopify's product picker, showing just that step's products, its collection's included). **Until then**, for *is at least*: hide the step, or show it locked                                                                                                                                                        |
| Step limit                                | A minimum and maximum for this step. 0 means no minimum or no maximum.                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| One of each product only                  | Blocks several units of the same product within the step                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Go to the next step when this one is full | The pick that reaches the step's maximum moves the shopper on to the next step, after a beat so they see it land. Locked steps are skipped; after the last product step it opens **Your details** when bundle add-ons are shown in a last step, otherwise the shopper stays. With **Stacked** steps the page scrolls to the next one. Going back to a full step doesn't move them on again. Needs a maximum in the step limit; counted by amount, a step is full once its cheapest product no longer fits |

<figure><img src="https://1636628623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F803Sm8MKSqVH5ol6hROo%2Fuploads%2Fgit-blob-49082e65dbc1b30d017ab9e629a5085f7e539fc9%2Fbyob-rules-per-step.png?alt=media" alt="Config, Rules, Per step, with step 2 open"><figcaption><p>① Per step, ② Show this step, based on step 1, ③ the condition: 2 or more items</p></figcaption></figure>

{% hint style="info" %}
**Conditional steps:** set step 2 "Conditioner" to *Based on step 1*, *Number of items is at least 1*, counting *Only these products*, and tick your dry-hair shampoo. Shoppers who pick it see the conditioner step; everyone else goes straight past it. *Is at least 6* shows a step once the shopper has six items in step 1; *is less than 1* shows it only while step 1 is empty. The first step always shows, and a step can only depend on one before it. When a step hides or locks, its picks leave the bundle and its minimum no longer applies. A locked step keeps its place with a lock: shoppers can open it and see its products, but can't pick from it until the condition is met. Pick products in the preview to try it.
{% endhint %}

{% hint style="info" %}
**Free gifts:** for "buy 6, get a free candle", add a last step with your candles and, on the **Build** tab, turn on **Mark this step as a free gift** (it sets the step limit to one free item, optional; raise the maximum in its rules to give more), and set **Show this step** to *Based on step 1*, *Number of items is at least 6*, **Until then** *Show it locked*, so shoppers see the gift waiting with "Add 2 more in Candles to unlock". At checkout the gift is its own line at $0 with the message "Free gift".
{% endhint %}

A gift step picks from specific products (up to 20), keeps a step limit by number of items with a maximum (set for you when you turn it on), and needs a paid step beside it. Checkout frees at most that maximum per bundle, only products from the step, and only while the bundle's paid items are in the cart and meet the step's condition and the bundle limit; anything more is charged. Gifts are never sold on a subscription plan: they ship once. Removing the bundle from the cart removes its gift too.

{% hint style="success" %}
**Optional steps:** set the step limit to **No limit**, or a minimum of 0, and shoppers can skip the step.
{% endhint %}

## Config tab: Subscriptions

Let shoppers buy the bundle once or subscribe to it, with plans from your subscription app. Every product in the bundle must be in one plan there. Open **Config → Subscriptions**, turn on **Offer subscriptions** to connect that plan, and pick a style. The picker shows above the add button when every item the shopper picked is in the connected plan. Full setup in [Subscriptions](/create-bundles/subscriptions.md).

## Offer tab

Discounts live under **Offer → Discount offer**. Turn on **Enable discounts**, then set:

| Setting     | Choices                                                                               |
| ----------- | ------------------------------------------------------------------------------------- |
| Trigger     | **Number of items** or **Order total value**                                          |
| Calculation | **Percentage**, **Fixed amount off**, **Fixed target price**, **Amount off per item** |
| Tiers       | One row per threshold                                                                 |

| Min items | Discount |
| --------- | -------- |
| 3         | 5% off   |
| 5         | 10% off  |
| 8         | 15% off  |

Tiers apply at checkout with no code. Removing the last tier turns discounts off. How the offer is *displayed* (progress bar, segmented, box) is set in **Design → Discount display**. Full detail in [Discounts](/create-bundles/discounts.md).

## Offer tab: Add-ons

Add-ons are what shoppers fill in or add: a gift message, To & From, a delivery date, an engraving, gift wrap. Open **Offer → Add-ons**. The page has two tabs, one per kind:

| Tab                 | Examples                                           | Shoppers fill them in                      | Saved on the order                | Price                            |
| ------------------- | -------------------------------------------------- | ------------------------------------------ | --------------------------------- | -------------------------------- |
| **Bundle add-ons**  | Gift message, To & From, delivery date, a gift box | Once, in the bundle cart or in a last step | On the bundle's line ("To: Anna") | Free or charged, once per bundle |
| **Product add-ons** | Engraving, gift wrap, photo upload                 | In each product's quick view               | On that product's line            | Free or charged, per item        |

You choose the kind by the tab you add it in. An empty tab shows its ready-made cards; on a tab with add-ons, **Add a bundle add-on** (or **Add a product add-on**) opens them in a popover. Pick one, or **Custom** for a blank one: it's added straight away and its settings open, with the type, label, a placeholder and a character limit already filled in.

<figure><img src="https://1636628623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F803Sm8MKSqVH5ol6hROo%2Fuploads%2Fgit-blob-7589ad030cd0860b7e96b3912982cdd7fe66f3a4%2Fbyob-addons-new.png?alt=media" alt="The add button&#x27;s popover with the ready-made product add-ons"><figcaption><p>① The ready-made cards, ② Custom, for a blank one</p></figcaption></figure>

Each tab lists its add-ons with their type, whether they're required and the price. Click a row to edit it, or its bin to delete it. On **Bundle add-ons**, **Where to show** at the top of the list opens a popover that sets where they show, for all of them:

* **In the bundle cart** (the default): above Add to cart, beside the shopper's picks. On phones, in the cart panel that slides up.
* **In a last step**: after the product steps, titled with **Step title** ("Your details", with its own **Translate**). It shows in the stepper or tabs like any step, and the cart's button moves to it. With steps shown as **Stacked** it's the last section of the page. A product-page widget (Grid, List) has no steps, so it shows them in its cart drawer.

When a required one is missing, Add to cart points the shopper to it, in their browser's own words ("Please fill out this field").

{% hint style="info" %}
**Ask only when needed:** add a **Gift card** checkbox, then **Name on the card** (required) with **Show** set to *When Gift card is ticked*. Shoppers who skip the card never see the name field, and those who tick it can't add the bundle without a name. In the list, an add-on that waits for another sits set in under it.
{% endhint %}

<figure><img src="https://1636628623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F803Sm8MKSqVH5ol6hROo%2Fuploads%2Fgit-blob-1a6eeb713112ec6099490c85108098f5e5915005%2Fbyob-addons-condition.png?alt=media" alt="An add-on&#x27;s settings with Show set to When Gift card is ticked, and the field under the ticked box in the preview"><figcaption><p>① Show, ② the field, shown once Gift card is ticked</p></figcaption></figure>

Each add-on has:

| Setting                       | What it does                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Label                         | The field's name for shoppers, and on the order ("Gift message: Happy birthday!")                                                                                                                                                                                                                                                                                                                             |
| Type                          | **Short text**, **Long text** (a message), **Email** (checked to look like one), **Date** (picked from a calendar, no past days), **Checkbox**, **Choice buttons**, or, for product add-ons, **Image upload**: the shopper's own image (a photo to print, a logo). Shopify stores it and the order line links to it                                                                                           |
| Placeholder · Most characters | For the text types                                                                                                                                                                                                                                                                                                                                                                                            |
| Required                      | Shoppers must fill it in. On a product, clicking Add on its card opens quick view instead                                                                                                                                                                                                                                                                                                                     |
| Show                          | **Always**, or only once an add-on above it in the same tab is filled in: a box ticked, text typed, a date picked, an image added, or a choice picked (any, or one in particular, "When Ribbon is Red"). Until then it's hidden, so it isn't required, charged or sent. Chains work: a field can wait for one that waits for another. Deleting an add-on turns the ones that waited for it back to **Always** |
| Products                      | Product add-ons: **Show on** every product in the bundle, or specific ones                                                                                                                                                                                                                                                                                                                                    |
| Price                         | **Free**, **A fixed amount**, or **A product's price**: per item on a product add-on, once per bundle on a bundle add-on                                                                                                                                                                                                                                                                                      |
| Short label                   | Product add-ons: a word for it, like "Personalise", shown wherever [Product data](/customize-and-publish/product-data.md) uses **Add-on labels**, only on products the add-on applies to                                                                                                                                                                                                                      |

{% tabs %}
{% tab title="A fixed amount" %}
The app keeps one hidden, unlisted product called **Bundle add-ons** in your store, with a variant per charged add-on (for example "Engraving · Gift box builder") at the price you type. It's created on the first save that needs it. It has a plain "+" picture, so add-ons show an image in the cart and in checkout's list of the bundle's items. Don't delete or edit it: the next save of a bundle puts its variants back. Its sales show which add-ons earn the most.
{% endtab %}

{% tab title="A product's price" %}
Pick a product and variant, such as your own "Gift wrap" product. That product is what the shopper buys for the add-on: its price in every market, and its stock. When it's sold out, the add-on shows as sold out.
{% endtab %}
{% endtabs %}

At checkout, the bundle's answers are on the bundle's line, in the cart, checkout and the order, in your store's default language. Product answers are on the product's own line. A charged add-on is part of the bundle: its price is added to the bundle (a bundle add-on's once, a product add-on's per item that took it), and the bundle discount never applies to it. Shops without the cart merge (other checkouts, subscribed bundles) show the bundle's answers on its first item, and a charge as its own line at full price; on a subscription it's charged once.

While you edit, the preview follows the tab: **Bundle add-ons** shows the bundle with them where shoppers see them (type in them, or click **Your details** in the steps to see a last step), **Product add-ons** shows **Quick view** on the first product that has add-ons; a product with none shows "+ Add-ons appear here". The **Bundle | Quick view** switch works either way.

<figure><img src="https://1636628623-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F803Sm8MKSqVH5ol6hROo%2Fuploads%2Fgit-blob-6c45e8cbbf4a20235e227eec747b9c9282b8e165%2Fbyob-addons.png?alt=media" alt="Offer, Add-ons, Bundle add-ons, with them in the cart preview"><figcaption><p>① The two tabs, ② Where to show, ③ a bundle add-on, ④ the bundle add-ons in the cart</p></figcaption></figure>

## Show product data on the cards

Dietary tags, calories, care instructions, the SKU, the vendor, "Only 3 left": show them on the product card, in quick view or under each item in the bundle cart. There is no page for it: in the editor's preview, hover a product card or the cart and click **+** at a spot (badges in an image corner, a line under the price, a text block and more), then choose **Add text** (with variables such as `{sku}`) or **Add metafield** in the popover. The bundle cart also takes lines about the whole bundle, with cart variables such as `Add {remaining} more for {next}`. For quick view's spots, switch the preview from **Bundle** to **Quick view**. See [Product data](/customize-and-publish/product-data.md).

## Template, Design and Settings tabs

**Template** picks the starting layout and where the bundle appears. **Design** controls the banner, product cards and variant pickers, steps, bundle cart, discount display and branding. Both are covered in [Design and customize](/customize-and-publish/design-and-customize.md).

**Settings → Parent product** opens the Shopify product behind the bundle, where its name, media, description and SEO live (the pencil icon beside the bundle name does the same). **Custom CSS** and **Language & Texts** apply to every bundle in the store.

## Frequently asked questions

### Why is a free gift charged at checkout?

Checkout frees a gift only with its bundle: the bundle's paid items must still be in the cart and meet the gift step's condition and the bundle limit, the product must be one of the gift step's, and at most the step's maximum is free. See [Troubleshooting](/help/troubleshooting.md).

### Where do I see a gift message on the order?

On the bundle's line, under its name: "To: Anna", "Gift message: Happy birthday!". Add them under **Offer → Add-ons → Bundle add-ons**.

### Can shoppers add the same product twice with different add-ons?

Yes. Each set of answers is its own item in the bundle cart, so two bracelets engraved "Anna" and "Tom" are two items, each with its own line in the order.

### Can a shopper skip a step?

Yes, when its **Step limit** in Config → Rules → Per step is **No limit** or has a minimum of 0. To show a step only after a certain pick, use **Show this step** on the same page.

### What happens if a product goes out of stock?

It shows as sold out and cannot be added. To hide it instead, turn on **Hide out of stock items** in Design → Product card & variants.

### Can shoppers change their mind after picking a product?

Yes. The bundle cart shows the current selection; they can increase, decrease or remove items before adding the bundle to cart.

### How are variants handled?

By default a card shows a variant picker. In **Design → Product card & variants** you style each option as labels, swatches or a dropdown, with images or colours per value, or turn on **Show each variant as its own card**.

### Can I show nutrition facts, tags or instructions on the cards?

Yes. Store them in text, number, date, URL or colour product metafields. Then, in the editor's preview, hover a product card, click **+** at a spot (a badge in an image corner, a line under the price, a text block and more) and choose **Add metafield**. If a line shows nothing, check that the metafield's definition has **Storefront access** on. See [Product data](/customize-and-publish/product-data.md).

### Why is my discount not showing?

Confirm tiers exist in the Offer tab, the bundle was added from the bundle page rather than as separate products, and you tested in checkout, not just the product page. Then check the settings page for a failed discount service.

### Can shoppers subscribe to the bundle?

Yes, when every product in it is in one plan in your subscription app. Turn it on in **Config → Subscriptions**. See [Subscriptions](/create-bundles/subscriptions.md).

### Can some steps use a collection and others specific products?

Yes. Each step chooses independently.

### Grid or list?

**Grid** puts the image on top with text and button below, good for a browsable set. **List** puts the image on the left, good for long catalogs. The layout comes from the template.

### Do design changes go live immediately?

Only once you save. One save bar covers every tab. Keep the bundle **Unlisted** while testing.

### Can different bundles have different designs?

Yes. Each bundle has its own template, layout settings and branding.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.elitebundleapp.com/create-bundles/build-your-own-bundle.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
