Skip to main content
Discount types & pricing

How to set up a Buy X Get Y (BOGO) offer

A Buy X Get Y (BOGO) offer rewards shoppers with free units when they reach a quantity you set, for example "Buy 2, Get 1 free." In Bundlex you build it as one offer inside a bundle deal, then Bundlex makes the cheapest qualifying units free at checkout.

Before you start

A BOGO offer lives inside a bundle deal, the same place you set up your quantity tiers. Open the bundle deal you want to add it to (or create a new one), then open the Offers tab and create a Buy X, get Y offer, or edit an existing one.

Set up the offer

  1. In the Offers tab, click Buy X, get Y.
  2. Three quantity fields appear: Buy, Get, and Total.
  3. Set the Buy quantity, the number of units the shopper pays for to qualify.
  4. Set the Get quantity, the number of free units they receive.
  5. Total fills in automatically and is read-only. It is simply Buy plus Get, the number of units that must be in the cart for the offer to apply.

For a classic "Buy 2, Get 1 free," set Buy to 2 and Get to 1, and Total shows 3. For "Buy 1, Get 1 free," set both to 1 and Total shows 2.

How the free units are chosen

Bundlex makes the cheapest qualifying units in the group free. When the cart qualifies, Bundlex sorts the matching units from cheapest to most expensive and applies a 100% discount to the free ones. If your variants are priced differently, the lowest-priced units are the ones that come off, which is the standard, customer-friendly way to run BOGO.

The offer repeats as the quantity grows. With "Buy 2, Get 1 free" (Total 3), a cart of 3 gets 1 free unit, a cart of 6 gets 2 free units, and so on. Quantities between full sets do not unlock an extra free unit until the next Total is reached, so 4 or 5 units still give 1 free unit, and the 6th unlocks the second.

Write the offer text

You can reference the quantities in your offer title, label, subtitle, and badge so the copy always matches the numbers you set. Two template variables are made for BOGO:

  • {{buy_quantity}} resolves to your Buy quantity (Total minus Get).
  • {{get_quantity}} resolves to your Get quantity.

For example, an offer title of Buy {{buy_quantity}}, get {{get_quantity}} free reads as "Buy 2, get 1 free" once the variables are filled in, and it carries through to the checkout label. Using the variables instead of typing the numbers means the text updates automatically if you change the quantities later.

Changing quantities in the cart

BOGO-tagged items are kept separate from ordinary volume-tier groups when cart quantities are combined. This does not lock the offer against every later quantity change.

If the quantity falls below the selected offer's threshold, another eligible tier can apply. At a higher quantity, Bundlex can use a qualifying tier with better main-product savings. Test quantity changes if you mix BOGO and quantity breaks in one discount.

How it appears at checkout (attribution)

For attribution, Shopify attaches the discount allocation to the free unit. That is the line that receives the 100%-off amount, so when you review an order the BOGO saving shows up against the free unit rather than spread across the items the customer paid for. This is expected and does not change what the customer pays.

Tip: the checkout label that shoppers see comes from your offer title, with any {{buy_quantity}} and {{get_quantity}} variables resolved. If you set a discount-level checkout name in the bundle's Discount name area, that overrides the per-offer title for every line in the discount.

Quick checklist

  • The offer was created with Buy X, get Y.
  • Buy and Get are filled in, and Total computed the value you expected.
  • Offer text uses {{buy_quantity}} and {{get_quantity}} so the copy matches the numbers.
  • The bundle is published and applies to the product the shopper is viewing.

Was this article helpful?

Your feedback helps us improve our docs.

Thanks - we'll keep improving this article.

Want to chat with our team? Still have a question?

Still need help?

Our team is one click away. Send us a message and we'll get back to you.

We use a few cookies to keep this site working, measure how it is used, and power our chat widget when you open it. See our cookie policy.