Buy X get Y promotion (BOGO)
On this page

Buy X get Y gives shoppers a reward on some items when they buy others, for example buy one shirt, get the second at 50% off. It covers buy one get one (BOGO) deals too. Shoppers claim it with one click in the cart.
At a glance
| Gallery group | Promotions with an upsell offer |
| Discount | A reward on Y items when the shopper buys X items. Default: buy 1, get 1 at 50% off, on any item in the cart. |
| Theme block | AndOr Offer picker, on the product page and the cart page |
| Upsell offer | Buy X get Y, on the Product page, Cart page and Cart drawer |
| What the app embed adds | Your brand color, the parts in the cart drawer (if any), shared look settings and your Storefront text. The block shows without it. |
Before you start
- Decide what shoppers buy (X) and what they get (Y). For storefront widgets, Y must be any item in the cart, or specific products, collections or variants. Tags and SKUs can’t show.
- Turn on the app embed if you want the claim row in the cart drawer. See Turn on the app embed. For what works without it, see the app embed table.
Set it up in the app
-
Open Promotions, click Create promotion, then click Choose on the Buy X get Y card.
It is under Promotions with an upsell offer. The card says “Buy some items, get the next one cheaper.”

-
Set what shoppers buy and what they get in the Discount section.
The page starts with “buy 1, get 1 at 50% off”, on any item in the cart.

-
Check the Storefront widgets section.
Show storefront widgets is on.
-
Write the upsell message and pick where it shows.
Add an upsell offer is on. Edit the Message. Under Where it shows, tick Product page, Cart page or Cart drawer. The product page shows the deal. When the reward is specific products, the cart shows a Claim button. With Any item in cart, there is nothing to claim. The shopper adds another item and the discount applies at checkout.

-
Set the dates in Schedule and status, then click Make it live.
Or click Save as draft to finish later.

Add it to your theme
What’s next shows on the promotion page after you click Make it live, not after Save as draft. It goes away when you dismiss it or leave the page. No What’s next panel? Open Promotions. In the row’s Storefront widgets column, click Add block. It shows when the block isn’t in your theme yet.
-
Under What’s next, click Open theme editor.
Your theme editor opens on a product page with the AndOr Offer picker block added. Drag it under the Add to cart button and click Save.
-
Click Add to cart page.
“Shoppers claim the reward there.” Drag the block under the cart lines and click Save.
Already on your cart page? The step says “It is on your cart page too. Shoppers claim the reward there.” with an Added badge, and you can skip it.

-
For the cart drawer, click Turn on app embed.
The claim row in the drawer comes from the app embed, not a block. It also needs a theme that sends Shopify’s storefront cart events, like Horizon 4.0+ or Dawn 15.5+. On other themes, shoppers get the claim row on the cart page. See Theme requirements.
The block’s only setting is its button color. See Buy X get Y widget.
Note The AndOr Offer picker shows nothing without an upsell offer. With the offer off, What’s next says “Add an upsell offer to show the Offer picker.”
Check it on your store
-
Under What’s next, click View on store.
It opens your store, or a product or collection from this discount if you picked one. On a product that qualifies, the deal shows under the Add to cart button.
-
Add the X items, then open the cart.
If the reward is specific products, the claim row shows a Claim button. Click it to add the Y item. With Any item in cart, add another item instead. The discount applies at checkout.
-
Go to checkout and check the reward.
Or under Try it at checkout, click Open store, add items that qualify, then check out. If you picked specific variants, the button is Open cart.
Not showing?
- The AndOr Offer picker block is missing on the product or cart template, or you did not click Save.
- The upsell offer is paused, or the place is not ticked in Where it shows.
- The reward is a fixed amount or fixed price. Storefront widgets need a percentage off, below 100%.
- The Y Target is a tag or a SKU.
- In the cart drawer only: the app embed is off, or your theme doesn’t send Shopify’s storefront cart events. See Theme requirements.
See Widgets not showing and What the Buy X get Y widget needs.
Turn the offer on or off
To stop the offer for a while, click Pause offers in the row’s … menu on the Promotions list, or Pause on the Upsell offers page. The discount keeps working at checkout. The product page deal and the claim row are hidden while it is paused. See Manage offers.
No offer yet? In the Promotions list, click Add offer in the row’s Upsell offer column.
Settings and limits
| Setting | What it does | Default |
|---|---|---|
| Name | Shown at checkout when the discount has no message. Up to 60 characters, and different from your other discounts’ names. | Buy X get Y |
| Customer buys (X) | What the shopper must buy: Buy quantity (X) and a Target. | 1 of any item in cart |
| Customer gets (Y) | What gets the reward: Get quantity (Y) and a Target. | 1 of any item in cart |
| Target | Which items count: Specific products, Specific collections, Specific variants, Products with tags, Specific SKUs or Any item in cart. | Any item in cart |
| Reward on Y | The discount on the Y items, for example Percentage off. | 50% off |
| Apply the reward to the cheapest eligible Y items | The cheapest items that qualify get the reward. | On |
| Combine with | Tick Product discounts, Order discounts or Shipping discounts. | None |
Limits:
- For storefront widgets, the reward must be a percentage off, below 100%. A fixed amount or a fixed price reward cannot show.
- For storefront widgets, the Y Target must be Any item in cart, Specific products, Specific collections or Specific variants. Tags and SKUs cannot show.
- When Y is Any item in cart, the product page banner counts the whole deal, and the cart shows no claim row. See Buy X get Y widget.
- A 100% off reward on named Y items, when X is any item, shows as a free gift instead. See Free gift.
See it in action