Buy X Get Y: 12 Structures, Margin Math
Twelve buy X get Y offer structures, from buy 2 get 1 to spend-and-get, each with its effective discount and margin per order so you can pick safely.
A buy X get Y offer is a family, not a single promotion. "Buy 2 get 1 free" and "spend 75 dollars, get a travel size at half price" share a name and almost nothing else: the first gives away a third of the cart, the second gives away less than a tenth. This reference lays out 12 common structures of the buy X get Y offer side by side, with the share of the cart each one gives away and what is left of your margin per order, so you can pick one on arithmetic instead of habit.
How to read the table
Every figure below comes from one stated set of assumptions. Nothing here is an industry average.
- Product X sells for 40 dollars and costs you 20 dollars, a 50 percent gross margin. Product Y, where the offer uses a second product, sells for 15 dollars and costs 7.50 dollars, also a 50 percent margin.
- Effective discount is the value you give up divided by the full-price value of everything the shopper takes home. If a shopper takes 80 dollars of goods and pays 40, the effective discount is 50 percent.
- Margin per order is revenue minus cost, divided by revenue, for the cart the offer describes. Without any offer, every cart here earns 50 percent.
- Costs are product costs only. Shipping, payment fees and packaging come off further, so treat a thin margin in this table as worse in practice.
The 12 structures
| # | Structure | Shopper pays | Full-price value | Effective discount | Profit | Margin per order |
|---|---|---|---|---|---|---|
| 1 | Buy 1 X, get 1 X free | 40 | 80 | 50.0% | 0 | 0.0% |
| 2 | Buy 1 X, get 1 X at 50% off | 60 | 80 | 25.0% | 20 | 33.3% |
| 3 | Buy 2 X, get 1 X free | 80 | 120 | 33.3% | 20 | 25.0% |
| 4 | Buy 2 X, get 1 X at 50% off | 100 | 120 | 16.7% | 40 | 40.0% |
| 5 | Buy 3 X, get 1 X free | 120 | 160 | 25.0% | 40 | 33.3% |
| 6 | Buy 3 X, get 1 X at 25% off | 150 | 160 | 6.3% | 70 | 46.7% |
| 7 | Buy 1 X, get 1 Y free | 40 | 55 | 27.3% | 12.50 | 31.3% |
| 8 | Buy 1 X, get 1 Y at 50% off | 47.50 | 55 | 13.6% | 20 | 42.1% |
| 9 | Buy 1 X, get 1 Y for 5 dollars off | 50 | 55 | 9.1% | 22.50 | 45.0% |
| 10 | Spend 75 dollars, get 1 Y free (cart of two X) | 80 | 95 | 15.8% | 32.50 | 40.6% |
| 11 | Spend 75 dollars, get 1 Y at 50% off (cart of two X) | 87.50 | 95 | 7.9% | 40 | 45.7% |
| 12 | Buy 2 from a collection, get the lowest-priced free (items at 40, 30, 20) | 70 | 90 | 22.2% | 25 | 35.7% |
All money columns are in dollars. Row 12 uses three different items at 40, 30 and 20 dollars with a 50 percent product margin each, so the cost is 45 dollars.
A few rows deserve a second look:
- Row 1 is a loss in disguise. At a 50 percent gross margin, a true buy one get one free earns nothing on the cart before shipping and fees. It only makes sense for a product with a margin well above 50 percent or when the goal is to move stock.
- Rows 3 and 5 look alike but are not. Buy 2 get 1 free gives away a third of the cart; buy 3 get 1 free gives away a quarter, and the margin per order is 25 and 33 percent respectively. "Free" is a sentence that sounds the same at very different costs.
- Row 6 barely discounts. Giving the fourth unit 25 percent off keeps margin near 47 percent. If you want a quantity incentive with a small cost, this shape is cheaper than any "free" row.
Same-product vs cross-product Y
When X and Y are the same product (rows 1 to 6), the shopper is buying more of one thing, and your cost is its cost. This suits consumables, where a second unit gets used up and bought again.
When Y is a different product (rows 7 to 11), you control the cost of what you give away. A 15 dollar item with a 7.50 dollar cost is cheaper to give than a 40 dollar item with a 20 dollar cost, and you can choose Y to introduce a product you want shoppers to try. The trade is complexity: the shopper has to understand that the gift is a different product, and Shopify does not add it for them.
Row 12 sits between the two. Shopify's Help Center says that when the same product or collection appears in both the "Customer buys" and "Customer gets" sections, the lower-priced item the customer chooses is the one discounted. So in a collection with items at different prices, the cheapest item in the cart is the one that goes free. That is why row 12 prices the free item at 20 dollars, not 40.
Percentage off Y vs free Y
Compare rows 7 and 8, and rows 10 and 11. Moving from a free Y to a Y at half price cuts the effective discount roughly in half, and lifts margin per order by 11 points in the first pair (31.3 to 42.1 percent) and 5 points in the second (40.6 to 45.7). A shopper who would take the offer free will often still take it at half price, but you cannot tell from this table whether yours would. Test it.
The FTC's guide on the word "free" (16 CFR 251.1) lists "Buy 1-Get 1 Free" among the representations that must be made "with extreme care", and says the conditions of a "Free" offer should be set out clearly and conspicuously at the outset. Structures with a percentage off Y, such as rows 2, 4, 8 and 11, do not use the word "free", but the same section lists "50% off with purchase of Two" as a related representation that raises many of the same questions, so the conditions still belong in the banner. This is not legal advice.
What Shopify does natively, and where an app helps
According to Shopify's Help Center, a Buy X get Y discount has a "Customer buys" part and a "Customer gets" part. In the first you set either the number of items the customer must buy or the amount of money they must spend, and the products or collections that count. In the second you set the quantity that receives the discount and the "At a discounted value" choice: Percentage, Amount off each, or Free. Every row in the table fits those fields: rows 1 to 6 and 12 use the same product or collection on both sides, rows 7 to 9 use different products, and rows 10 and 11 use the minimum purchase amount.
Three Shopify limits matter for planning. First, customers must add all items to their cart manually, and the free or discounted "get" item is never automatically added. Second, the minimum purchase amount counts product prices only: shipping costs and taxes are never included. Third, the combinations page says only Shopify Plus stores can put two product discounts on the same line item, so a buy X get Y offer and a separate percentage sale on the same product is not something to promise on every plan.
If the manual add to cart is the weak point of your offer, an app that handles the gift for the shopper is the reason to use one. The Buy X, get Y template in Freebies Engine by Log Studio Lab is described as "Buy certain products, get a different one free", which matches row 7. Use the table to choose the structure first, then build it.
Picking one in three questions
- What does the cart need to earn? Look at the margin column. If you need 40 percent or more per order, rows 4, 6, 8, 9, 10 and 11 qualify and rows 1, 2, 3, 5, 7 and 12 do not.
- Are you giving away a product you want to sell or a product you want to clear? To clear stock, rows 1 to 6 move units. To introduce a product, rows 7 to 11 let you choose the gift.
- Can you explain it in one line? "Buy a shirt, get a cap at half price" is clear. "Buy 3 from the collection, lowest-priced free, once per order" is a sentence that gets abandoned at checkout. Pick the shape your banner can state in the first sentence.
For the settings behind the most common shape, see How to Create a BOGO Offer on Shopify. For the break-even volume if you would rather discount than give a product, use Break-Even Discount: Extra Volume You Need. The gift version of the same arithmetic is in Free Gift With Purchase on Shopify, Explained. Plan requirements are on the pricing page.
Sources
- Shopify Help Center: Buy X get Y discounts (accessed October 10, 2026)
- Shopify Help Center: Discount combinations (accessed October 10, 2026)
- eCFR: 16 CFR Part 251, Guide concerning use of the word "Free" and similar representations (accessed October 10, 2026)