Buy X Get Y is the discount type most stores reach for first when they want to run a promotion like "buy 2, get 1 free" or "buy this, get that." Shopify has a native version built into Discounts, and it's a genuinely solid option for a lot of offers. But if what you actually want is a free gift that shows up in the cart on its own, native Buy X Get Y has a few limits worth knowing before you build around it.
What Buy X Get Y actually is
Buy X Get Y (BXGY) is a Shopify discount type that ties a "get" item's discount to a "buy" condition. You define what has to be in the cart - a product, a collection, a minimum quantity - and what gets discounted when that condition is met, and by how much. Usually that's 100% off for a straightforward free-gift promotion, but it can be any percentage or a fixed amount.
It can apply to the same product ("buy 2 candles, get 1 candle free") or across products ("buy a jacket, get a beanie free"). Shopify handles the discount math at checkout; there's no custom logic to write.
Creating one in Shopify (automatic or code)
You build Buy X Get Y from Shopify admin under Discounts:
- Choose Buy X Get Y as the discount type.
- Set the "customer buys" condition - a minimum quantity of a specific product, or products from a collection.
- Set the "customer gets" item and discount value - 100% off for a free item, or a smaller percentage for a discounted add-on.
- Choose Automatic discount (applies with no code) or Discount code (the shopper types a code at checkout).
- Set eligibility, usage limits, and dates, then save.
The automatic version is the one worth defaulting to for a free-gift offer - see Automatic discounts vs discount codes for why. It removes the code field entirely; the discount applies once the cart matches, with nothing for the shopper to type.
Three limits for a free-gift use case
Native Buy X Get Y is real and free, but it was built as a discount mechanism, not a merchandising one. For a "free gift" use case specifically, three things are worth knowing up front.
1. It doesn't add the item to the cart for the shopper
Buy X Get Y discounts the "get" item if the shopper has already added it. It does not put the gift in their cart automatically. If someone buys the jacket but never adds the beanie, they get no discount and, more importantly, no gift - because that item was never a line in their cart to begin with. For offers where the "get" side is genuinely free rather than something the shopper was already planning to buy, this is a real gap: most shoppers won't think to add a product they don't know they're entitled to.
2. No on-site messaging
Nothing native tells a shopper "add this jacket, get a beanie free" on the product page, or "add one more item to unlock your gift" in the cart. The offer lives on the discount rule, not on the storefront. Unless you build the messaging yourself, most shoppers won't learn the offer exists until they happen to add both items and notice the price change at checkout.
3. Spend-based versions exist, but the merchandising layer doesn't
The "buy" side of Buy X Get Y isn't limited to quantities - Shopify also supports a minimum purchase amount, so "spend $100, get a free gift" is a real native setup, with the spend requirement scoped to the products or collections you select. What the native version doesn't give you is everything around that threshold: the gift still isn't added to the cart automatically (limit 1 above), and nothing on the storefront tells shoppers the threshold exists or how close they are to it. If the promotion you want is a spend threshold paired with a progress nudge - or a ladder of thresholds with escalating gifts - see Free gift over a spend threshold for how that pattern works.
When native Buy X Get Y is enough
If your offer is same-product or a fixed product pair, and your shoppers naturally add both items (bundles, matched sets, "buy the trial size, get the travel case"), native automatic Buy X Get Y can carry the whole promotion. It costs nothing, it's fully supported by Shopify, and there's no reason to add a third-party app for it.
When to automate the gift add instead
If you want the gift to appear the moment the cart qualifies, without the shopper needing to know it exists or add it themselves, you need something that watches the cart and adds the item automatically, then removes it again if the cart drops back under the trigger. That's a different mechanism than Buy X Get Y - it's an automatic gift-add rule, built on the real product variant rather than a cloned zero-price SKU, applied through Shopify's native discount system.
Valotrix Cart Rewards does exactly this. Triggers can be a cart subtotal, a specific product, a collection, a customer tag, a market, or a subscription - 17 conditions in all, combined with AND/OR/NOT. The reward can be a flat gift, a tiered set of gifts at different spend levels, or a BOGO-style pairing, with on-site widgets that show shoppers the offer and their progress toward it. See How it works and the BOGO recipe for the setup details.
Keep reading
- Shopify BOGO without a discount code - the automatic version of buy-one-get-one, with no typed code.
- Free gift over a spend threshold - when the trigger should be cart value, not quantity.
Want the gift to add itself? Install Valotrix Cart Rewards - the free plan covers cart-value triggers; product and collection triggers start on the Growth plan.