Shopify's native Buy X get Y discount is good at the arithmetic and bad at the shopping. Its own help page states the limitation plainly: the free or discounted item is never added to the cart automatically. The customer has to know the gift exists, find it, add it, and reach checkout. Each of those steps loses people.
This guide covers the native discount first (it is free and fine for some promotions), then the setup with MixMaxer where the gift is added for the customer and the cart shows how far they are from earning it.
What "Buy X get Y" covers
Three promotions share the mechanism:
- Buy 2, get 1 free (or 50% off the third): X and Y are the same product.
- Buy product A, get product B free: a sample, a travel size, an accessory.
- Spend $100, get a gift: a threshold on the cart or on a collection, with a reward product.
The condition is a quantity or an amount; the reward is a product, free or discounted. "BOGO" is the first case with a 100% discount on the second unit.
The native Shopify discount
Shopify admin › Discounts › Create discount › Buy X get Y. Choose automatic (applies on its own) or a code. Set what the customer buys (minimum quantity or minimum amount, on products or collections), what they get (products or collections, quantity, free or a percentage off), and whether the discount combines with other discount classes.
What you should know before relying on it:
- Y is never added to the cart. With an automatic discount the price of Y drops once X and Y are both in the cart. Nothing tells the customer on the product page, and nothing adds Y.
- Combining is opt-in. A code or automatic discount that is not allowed to combine with Buy X get Y will never apply at the same time; Shopify keeps one.
- Minimum amounts count product prices only, not shipping or tax.
- POS Lite does not apply it; POS Pro does.
- The post-purchase page is excluded.
For a one-day "buy 2 get 1" on a single product that you announce in an email, this is enough. For a standing "free gift over $100" offer whose whole point is to raise the average order, it is not, because the customer who would have spent $20 more to earn the gift never finds out.
What the auto-add changes
A gift offer works through three moments:
- Before: the customer sees "Spend $32 more to get the Tote free" in the cart. This is the part that raises the order value.
- At the threshold: the gift appears in the cart on its own, or a one-click "Add" button appears. No searching.
- After: if the customer removes a qualifying item and falls under the threshold, the gift goes back to full price or is removed, so nobody checks out with an unearned gift.
The native discount provides none of the three. An app provides all three, and the third one is where badly built apps fail: a gift that stays free after the condition is gone is a margin leak.
Setting it up in MixMaxer
- Offers › Create offer › Buy X get Y. Templates "Buy 2 get 1 free" and "Free gift over an amount" open the wizard pre-filled.
- Applies to: the products that count toward the condition. "Entire store" gives a store-wide threshold; a collection limits it to full-price items, for example.
- Condition: Buy a quantity (N units) or Spend an amount, in the store currency, before discounts.
- Reward: product Y, how many units, and the discount on each unit. 100% makes it free; 50% gives "second one half price".
- Add Y to cart automatically: on, and the reward is added the moment the condition is met; off, and the cart bar shows "Your free Tote is waiting" with an Add button. Auto-add is the stronger choice for a cheap gift; the button is better for a reward the customer may not want (a size, a flavour).
- Audience (optional): new customers only, returning only, or a customer tag; exclude collections; skip items already on sale so the gift threshold cannot be reached with clearance items.
- Test at checkout: put X in a sample cart in the right quantity, add Y, press Run test. Each line shows the regular amount, the discount and what checkout charges, and which offer priced it.
- Publish. The discount is created as a Shopify Function, so it applies in the checkout, in Shop Pay and in POS, and keeps working even if MixMaxer's servers are unavailable.
The cart bar (an app embed you switch on once in Settings › Theme setup) does the rest: progress text before the threshold, the Add button or silent add at the threshold, and "You unlocked a free Tote" after.
How the maths is applied
- Quantity condition: sets = units of X ÷ N, rounded down. The reward discount applies to at most sets × Y units of the reward product. When X and Y are the same product ("buy 2 get 1 free"), each set needs N + Y units, so 3 in the cart gives 1 free, 6 gives 2 free.
- Amount condition: the reward is granted once per order when the qualifying items, excluding the reward itself, reach the amount.
- Removal: if the customer removes X, the reward returns to full price automatically.
If you want a hard cap of one gift per order, use the amount condition or set the reward quantity to 1; with a quantity condition, 4 units of X earn 2 rewards if 2 rewards are in the cart.
Four mistakes that cost margin
- Gift threshold at the average order value. If your AOV is $80, a gift at $80 rewards what customers already do. Put it 15 to 25% above AOV and check in two weeks what share of orders reached it.
- A gift that is also on sale. Switch on "skip items on sale" and exclude the gift from other offers so two discounts never land on one item.
- Two offers on the same product. A volume tier and a gift on the same product must have a clear priority. In MixMaxer the order of the Offers list decides, and the wizard shows an overlap warning before publishing.
- No stock check on the gift. Buy the gift in bulk or choose a gift you can always supply; a sold-out gift makes the offer disappear from the product page (MixMaxer checks availability), which is correct behaviour but a wasted campaign.
Measuring whether it worked
The dashboard number "revenue from this offer" counts every order that contained the gift, including orders that would have happened anyway. Two honest measurements: an A/B test of two thresholds ($80 vs $100), where each visitor is charged what they saw and the read-out is profit per visitor, or a holdout group that sees no offer. Both are in MixMaxer; the method is explained in the holdout guide.
FAQ
Does Shopify automatically add the free item in a Buy X get Y discount?
No. Shopify's help documentation states that the free or discounted item is never automatically added to the cart. The customer must add both X and Y; the discount then applies. Auto-add needs an app.
Can I do buy 2 get 1 free on Shopify without an app?
Yes, with an automatic Buy X get Y discount where X and Y are the same product and the discount on Y is 100%. The product page will not announce it and the third unit is not added for the customer.
Why is my Buy X get Y discount not applying?
The usual causes: Y is not in the cart; another discount that cannot combine with it is applied; the minimum amount is calculated before the reward reaches it; the order is on POS Lite; the customer used a discount code that excludes it. With an app, also check that no higher-priority offer already prices the reward product.
Can the free gift be limited to new customers?
With MixMaxer yes: the offer's audience can be new customers only, returning only, or a customer tag, and the rule is enforced on the storefront and again at checkout by the Function.
Does the gift discount work in Shop Pay and POS?
In MixMaxer yes, because the discount is a Shopify Function. Script-based gift apps that modify the cart in the theme can lose the discount in accelerated checkouts.
MixMaxer: Buy X get Y with auto-added gifts, progress bar in the cart, A/B tests and profit per offer. Free plan with 2 live offers, no order cap. Install from the Shopify App Store · Buy X get Y help article. Shopify's Buy X get Y documentation checked 1 November 2026.