Magento buy one, get one free (different products)
In this series, we cover Magento price cart rules in depth. This is the second part of our promo series, and it will deal with the Magento buy x get y free for different products.
Advanced promotions creation in Magento - part 3
Other articles in these series:
- Part 1 - percentage discount, fixed discount, and fixed discount for the whole cart in Magento
- Part 2 - Magento built-in buy x get y promotion (Buy x get y - same product)
Magento out-of-the-box BOGO promotion works only for the same product
As we saw in part 2 of this guide, the Magento out-of-the-box buy x get y promotion only works for multiple quantities of the same products.
That is, for the following examples, the Magento built-in buy x get y promo won’t work:
- 1+1 on t-shirts (cheapest)
- Buy a watch, get a bag for free
- 3 for 2 on all products
To implement these promotions, we will need an advanced promotions extension for Magento. In the following examples, we will use the Mexbs Additional Promotions extension.
Lets see how to implement the promotions above using the extension.
1+1 on t-shirts (cheapest)
This promotion applies a 100% discount to half of the cheapest t-shirts. For example, if the customer adds 4 different t-shirts, 2 of the cheapest will be free.
Promo configuration
To configure it, choose “N + M / Percent Discount” in the “Apply” field
.
We need to define the promo configuration so that it behaves exactly as we want. Let's see how to do that in this specific example and discuss all the fields and their meanings:
We fill the fields in the following way:
- Buy [ 1 ] items, Get the subsequent [ 1 ] items with [ 100 ]% discount - because our promo is 1+1
- Category is one of 31,32 - because these are the categories of the t-shirts in our store (women’s t-shirts and men’s t-shirts)
- [label for upsell cart hints—singular: [ t-shirt ], plural: [ t-shirts ]]—these are the hint messages that will appear in the cart, encouraging the customer to add more items. For example, “Get another t-shirt for free.” We will discuss the upsell cart hints later in detail.
- Ordered by [most expensive] - the promo extension first looks at what items not to discount, so if we order by most expensive, the cheapest ones will get the discount
- Discount method = Edge - the extension has two methods of discounting
- Discount each alternative item (that is, discount method = Spread Out). In this case, the extension orders the items and discounts each alternative one (in our example one yes and one no)
- Discount a sequence of items (that is, discount method - Edge). In this case, the extension orders the items and discounts them subsequently (in our example, the cheapest half of them).
Save the promo.
Promo results
Adding two different t-shirts to the cart
In the cart and the mini-cart, we can see that if we add two different t-shirts, we get the cheapest one for free.
Adding four t-shirts to the cart
Similarly, if we add four t-shirts, we get the two cheapest t-shirts for free.
Magento 2 buy x get y free - where x and y are different product groups
Buy a watch, get a bag for free
Another type of BOGO promotion is when the two products belong to different groups/categories.
For example: Buy a watch, get a bag for free
Unlike in the previous example, where the 1+1 promo was valid within the same category (t-shirts), here, one product belongs to one category, “watches,” and the discounted product belongs to another category, “bags.”
Let's see how to configure it using the Mexbs Additional Promotions extension.
Promo configuration
To configure it, choose “BOGO: Buy x, get different y / Percent Discount” in the “Apply” field.
Let’s see how we configure the cart rule:
Let’s explain the rule fields in detail:
- Buy [ 1 ] items for which ALL of the following conditions are TRUE—the 1 identifies the number of watches you need to add to get a free bag. (If we insert 2 instead, the promo will be “Buy two watches to get a bag for free”
- Category is 12 - this is the category ID of watches in our Magento store.
- [label for upsell cart hints—singular: [ watch ], plural: [ watches ]]—these are the hint messages that will appear in the cart, encouraging the customer to add more items. For example, “Add another watch to get another bag for free.” So, the word “watch” is taken from this configuration. We will discuss the upsell cart hints in detail later in this series.
- Get the [ 1 ] first [ cheapest ] items - we want to discount the 1 cheapest bag for each watch added. (If we change the 1 to 2, the promo will be “Buy a watch to get two bags free”)
- [label for upsell cart hints—singular: [ bag ], plural: [ bags ] ]—Similar to before, the cart hints will use these keywords to encourage the customer to complete his purchase.
- Category is 10 - this is the category ID of the bags in our Magento store.
Save the promo.
Promo results
Adding a watch and a bag to the cart
We can see that a 100% discount is applied to the bag.
Two watches and a bag in the cart
If we add another watch, so we have two watches and one bag in the cart, we will see the hint message saying, “Add one t-shirt to get the next t-shirt for free!”.
Two watches and two bags in the cart
If we add another bag, we will see that both of the bags got discounted.
One watch and two bags in the cart
If we remove one watch, so we now have a watch and two bags, we will see that the cheapest bag will get discounted.
Wrap-up
This article taught us how to configure the buy x, get y free promotion in Magento 2 for different products. Note that this is impossible with Magento out-of-the-box, so we had to use an advanced promotions extension for Magento. We looked at the most classic examples of advanced promotions: “1+1 on t-shirts” and “Buy a watch, get a bag for free.”
In the next articles, we will discuss more complex BOGO promotions that we can create with the Additional Promotions extension. For example, “3 for 2 on all products,” “Buy watch and bag, and get a free bottle,” “2+2 on orders above $100,” and “1+2 on t-shirts in your birthday month.”