DiscountForge
Guide

Buy X Get Y on Shopify: how BOGO discounts actually work

Published August 25, 2026 · 8 min read

Buy X Get Y is the most-used promotion shape on Shopify and the one that generates the most “the discount isn’t working” tickets — usually because it is working exactly as designed, and the design surprises people. The single biggest surprise: Shopify never puts the free item in the cart. This guide covers that and the other four behaviours worth knowing before you run a BOGO sale.

The 30-second version

  • The “get” item is never added automatically. The shopper has to put both X and Y in the cart themselves; only then does the discount apply. A customer who adds one item and waits for the free one to appear will simply not buy.
  • X and Y can be the same product. When they are, the discount lands on the lower-priced item the customer chose — which is what makes “buy 2, get 1 free” on a mixed-price collection cost less than merchants expect.
  • “Get” can be free, a percentage, or a fixed amount off each item. Free is just 100% off; the other two make half-price and “$10 off the second” promotions the same mechanic.
  • Uses per order decides whether a big cart pays once or repeatedly. Leave it unset and a cart of twelve can claim the offer four times.
  • It won’t combine with your other discounts unless both opt in — and on non-Plus stores, two product discounts can’t both apply to the same item at all.

The anatomy

Every Buy X Get Y discount is two halves you configure separately:

HalfWhat you choose
Customer buys (X)A minimum quantity of items or a minimum purchase amount, scoped to specific products or a collection
Customer gets (Y)A quantity of specified products or a collection, discounted by a percentage, a fixed amount off each item, or made free
Maximum uses per orderOptional cap on how many times the offer applies within one order

Because the “buys” half accepts a minimum purchase amount, the same mechanic covers gift-with-purchase: spend $100 on a collection, get a specific item free. It’s the same discount type with a different X.

Five behaviours that look like bugs

1. The free item never appears in the cart

This is the number one BOGO support ticket, and it isn’t configurable: customers must add all items to their cart manually, and the free or discounted “get” item is never added for them. The discount only materialises once both halves are in the cart together.

The practical consequence is that a BOGO offer nobody is told about converts poorly by construction. The offer has to be visible where the shopper is choosing — on the product page and in the cart — with a prompt explicit enough to act on: “add a second to get it free”. If your promotion lives only in the discount settings, you are relying on shoppers guessing.

2. “Buy 2 get 1 free” discounted the cheapest thing

When the “get” product or collection is the same as the “buys” one, the item the customer gets at a discount is the lower-priced one they chose. Across a collection with a wide price range that’s a much smaller payout than merchants picture, and it’s also the safe default — the alternative would let a shopper claim your most expensive SKU by adding two cheap ones.

If you intend the discount to land on a specific item, scope the “get” half to that item rather than to the whole collection.

3. A twelve-item cart got the offer four times

That’s uses-per-order left unset, working as intended. Decide deliberately: capping it at 1 makes the promotion a nudge to add one more unit; leaving it uncapped turns it into volume pricing with a worse name — and a much larger bill on wholesale-sized carts. If what you actually want is “buy more, save more” across the whole basket, tiered pricing is the shape you want, not BOGO.

4. It stopped working when another discount was on the cart

Discounts don’t combine by default, and combination settings have to be mutual — each discount has to opt into the other’s class. When they haven’t, Shopify applies whichever is worth more and drops the rest, with no error anywhere. There’s also a harder limit: two product discounts applying to the same item is a Shopify Plus feature. On other plans, a BOGO and a percentage-off-that-product discount will never both land on the same line. See why your discounts won’t combine for the full matrix.

5. It doesn’t show up in post-purchase or on POS Lite

Buy X Get Y discounts don’t apply to post-purchase checkout offers, and POS Lite locations can’t use them at retail checkout — they’re an online-store mechanic. Worth knowing before you build a cross-channel campaign around one.

Common shapes and how to configure them

PromotionCustomer buysCustomer gets
Classic BOGO1 item from collection1 from the same collection, free
Buy 2 get 1 free2 items from collection1 from the same collection, free
Second one half price1 specific product1 of the same product, 50% off
Gift with purchaseMinimum purchase amount1 specific gift product, free
Buy a bundle, save on the add-on2 items from collection A1 item from collection B, fixed amount off

Before the sale goes live

  1. Build the exact qualifying cart and check the checkout total, not the cart page. Then build one that nearly qualifies and confirm it gets nothing.
  2. Test the mixed-price case if X and Y share a collection — add an expensive and a cheap item and confirm which one got discounted.
  3. Test a large cart against your uses-per-order setting, so you find out what a bulk buyer pays before they do.
  4. Test alongside every other discount that could be live that day, including codes your marketing might send mid-sale.
  5. Check the offer is visible on the product page and in the cart, in words that tell the shopper exactly what to add.
How DiscountForge handles this: Buy X Get Y is one of the rule templates, built on Shopify Functions so it runs on every plan. The simulator takes a sample cart and prints why the rule fired or didn’t — including which line item the discount landed on in a mixed-price collection, which is the check that’s otherwise impossible without placing real orders. Combination flags are exposed per rule, and the storefront widget tells shoppers what to add rather than leaving them to guess.

FAQ

Why isn’t the free item added to my customer’s cart?

Because Shopify never adds it. Customers add all items themselves and the discount applies once the cart qualifies. Any “auto-add the free gift” behaviour you’ve seen on other stores comes from an app or a theme customisation, not from the discount.

Can Buy X Get Y use a discount code instead of applying automatically?

Yes — the same discount type is available as a code, where it applies when the code is entered and the cart qualifies. The cart still has to contain both halves.

Can I run two BOGO offers at once?

You can create them, but on a cart that qualifies for both, only one applies unless the combination settings let them stack — and two product discounts on the same item require Shopify Plus. Assume one wins per item and design accordingly.

Is BOGO the right way to do “buy more, save more”?

Usually not. BOGO rewards a specific pairing; a quantity ladder rewards volume continuously and is easier for shoppers to reason about. If your goal is a bigger basket rather than moving a particular SKU, start with tiered pricing.

Do I need Shopify Plus for BOGO?

No. Buy X Get Y is a native discount type on every plan, and Functions-based discount apps run on every plan too. Plus only matters for stacking two product discounts on the same item.

See what the discount will do first

DiscountForge builds Buy X Get Y, tiered and volume pricing, customer-tag pricing, and free-shipping thresholds as rules on Shopify Functions, and its simulator runs any sample cart through a rule to show exactly which line got discounted and why. The Free plan runs three active rules on a live store.