How to Setup WooCommerce Buy One Get One Discount (Easy Guide)
We all know that cart abandonment is any eCommerce/WooCommerce store owner’s worst nightmare. Online shops lose a jaw-dropping 4 trillion dollars per year on abandoned carts; that’s 12 zeros!
Do you know the leading reason people abandon your carts?
High cost (48% of shoppers abandon carts due to high costs). However, there’s one way through which you can significantly reduce abandoned carts and boost your sales.
Discounts and coupons. By implementing compelling and effective discount strategies, you can capture the attention of your target customers and increase your sales and revenue manifold.
One of the most popular and enticing discount types is the Buy One, Get One offer, also known as a BOGO deal. These discounts create a sense of urgency and excitement among visitors, ultimately increasing sales and earning customer satisfaction.
In this article, we will explore how to generate a WooCommerce buy one get one discount using different methods.
Let’s get started.
How to Create a WooCommerce Buy One Get One Discount?
Despite having a built-in coupon tool, core WooCommerce doesn’t have the features to create a buy-one-get-one WooCommerce discount.
However, there are multiple ways you can achieve this.
- Using custom codes in WooCommerce theme files
- Using a coupon plugin for creating buy one get one free WooCommerce coupons
- Using a premium discount plugin
Let’s check out how to do buy one get one free on WooCommerce using custom codes.
Creating WooCommerce Buy One Get One Discount using Custom Codes
Do not attempt this method unless you are absolutely sure what you are doing. Make sure you are using a child theme or have a backup of your website files.
Let’s create some WooCommerce buy one get one discounts for the following scenarios.
- Buy any one product and get an extra quantity of the same product for free
- Buy a specific product and get an extra quantity of that for free
- Buy X amount of a product to get one for free
- Buy X product and get Y for free
Buy Any One Product and Get an Extra Quantity of the Same Product For Free
Here are the steps to create this WooCommerce coupon buy one get one off discount.
Step 1 – Access Theme File
Go to Appearance >> Theme File Editor.
Click on the functions.php file and scroll down to the bottom to enter your custom codes.
Step 2 – Add Custom Code
Create a function to add free quantity –
- Check Cart Items:
- Loop through each item in the cart to identify products and their quantities.
- Add Free Quantity:
- For each product, if there is at least one quantity, add an equal quantity of the same product for free.
- For each product, if there is at least one quantity, add an equal quantity of the same product for free.
Here are the codes –
function add_bogo_free_product() {
$cart = WC()->cart->get_cart();
// Loop through cart items to check products
foreach ($cart as $cart_item_key => $cart_item) {
$product_id = $cart_item['product_id'];
$quantity = $cart_item['quantity'];
// Ensure no free items are added
if (!isset($cart_item['custom_price']) && $quantity > 0) {
// Check if a free product is already in the cart
$free_product_exists = false;
foreach ($cart as $free_cart_item_key => $free_cart_item) {
if ($free_cart_item['product_id'] == $product_id && isset($free_cart_item['custom_price'])) {
$free_product_exists = true;
break;
}
}
// Add free products if not already in the cart
if (!$free_product_exists) {
WC()->cart->add_to_cart($product_id, $quantity, 0, array(), array('custom_price' => 0));
}
}
}
}
add_action('woocommerce_before_calculate_totals', 'add_bogo_free_product');
Create the function to apply the custom price
- Set Free Product Price to Zero:
- Loop through the cart and set the price of any product marked as a free item to zero.
Here are the codes –
function apply_bogo_custom_price($cart_object) {
foreach ($cart_object->get_cart() as $cart_item) {
if (isset($cart_item['custom_price'])) {
$cart_item['data']->set_price($cart_item['custom_price']);
}
}
}
add_action('woocommerce_before_calculate_totals', 'apply_bogo_custom_price');
Step 3- Save and Test
Save the functions.php file. Go to your storefront and add any product to the cart.
Go to the cart page, and you will see WooCommerce automatically added an additional quantity of that same product for free.
Buy a Specific Product and Get an Extra Quantity of That For Free
Remove the previous code from functions.php and proceed to the following steps.
Add a Function to Add Free Quantity of a Specific Product
Check Cart Items:
- Loop through the cart items to identify the targeted product and its quantity.
Add Free Quantity:
- If the targeted product is in the cart, add an equal quantity of the same product for free if not already added.
Here’s the code –
function add_free_product_with_targeted_product() {
// Define the targeted product ID
$targeted_product_id = 123; // Change this to your targeted product ID
// Get the cart items
$cart = WC()->cart->get_cart();
// Initialize flag for targeted product
$targeted_product_count = 0;
$free_product_exists = false;
// Loop through cart items to check for targeted product
foreach ($cart as $cart_item) {
if ($cart_item['product_id'] == $targeted_product_id) {
if (!isset($cart_item['custom_price'])) {
$targeted_product_count += $cart_item['quantity'];
} else {
$free_product_exists = true;
}
}
}
// Add the free product if the targeted product is in the cart and the free product isn't already in the cart
if ($targeted_product_count > 0 && !$free_product_exists) {
WC()->cart->add_to_cart($targeted_product_id, $targeted_product_count, 0, array(), array('custom_price' => 0));
}
}
add_action('woocommerce_before_calculate_totals', 'add_free_product_with_targeted_product');
You must replace the product ID ($targeted_product_id = 123;) with your targeted valid product ID.
Collect the Product ID
WooCommerce auto-generates and assigns a product ID to each product you create in your website. You can easily collect them from the All Products page.
Go to Products >> All Products. After that, hover over the targeted product to collect the ID.
Replace the ID in the code above (e.g., $targeted_product_id = 83).
Add a Function to Apply Custom Price
- Set Free Product Price to Zero:
- Loop through the cart and set the price of any product marked as a free item to zero.
Here are the codes –
function apply_custom_price($cart_object) {
foreach ($cart_object->get_cart() as $cart_item) {
if (isset($cart_item['custom_price'])) {
$cart_item['data']->set_price($cart_item['custom_price']);
}
}
}
add_action('woocommerce_before_calculate_totals', 'apply_custom_price');
Save your functions.php file and test it out from the front end.
We targeted this product –
Let’s add this to the cart and view the cart page.
As you can see, WooCommerce automatically added an additional amount of that product for free.
Buy X Amount of a Product to Get One For Free – WooCommerce Buy One Get One Discount
Let’s say you want to offer a WooCommerce BOGO offer where customers need to add 2 items of a targeted product to get one for free.
Here’s the code –
function add_free_product_for_buy_two_get_one($cart) {
// Define the targeted product ID
$targeted_product_id = 123; // Change this to your targeted product ID
// Initialize counts
$targeted_product_count = 0;
$free_product_count = 0;
// Loop through cart items to count quantities
foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
if ($cart_item['product_id'] == $targeted_product_id) {
if (isset($cart_item['custom_price'])) {
$free_product_count += $cart_item['quantity'];
} else {
$targeted_product_count += $cart_item['quantity'];
}
}
}
// Calculate the required free quantity
$required_free_quantity = floor($targeted_product_count / 2);
// Add free products if needed
if ($required_free_quantity > $free_product_count) {
$additional_free_quantity = $required_free_quantity - $free_product_count;
WC()->cart->add_to_cart($targeted_product_id, $additional_free_quantity, 0, array(), array('custom_price' => 0));
}
}
add_action('woocommerce_before_calculate_totals', 'add_free_product_for_buy_two_get_one');
Again, you must replace the product ID with a valid one. Let’s target a different product this time.
Next, add a function to apply the custom price.
function apply_free_product_custom_price($cart_object) {
foreach ($cart_object->get_cart() as $cart_item) {
if (isset($cart_item['custom_price'])) {
$cart_item['data']->set_price($cart_item['custom_price']);
}
}
}
add_action('woocommerce_before_calculate_totals', 'apply_free_product_custom_price');
Let’s add our targeted product to the cart and jump to the cart page.
No WooCommerce buy one get discount applied, right?
This is because we set the minimum targeted quantity to 2, which means your customers must add 2 quantities of this product to avail themselves of WooCommerce buy two, get one free.
As you can see, the cart page adds a free product when you increase the quantity to 2.
Buy X Product and Get Y For Free
Let’s say you want to offer a different but specific product for free when the customers adds a targeted product. For instance, we want to offer the previous example’s 44 ID product for free when customers add the 83 ID product to the cart.
Make sure you remove all your previously added codes from the above examples.
Here’s the code for this WooCommerce buy one get one free offer –
function add_free_product_when_targeted_product_in_cart() {
$targeted_product_id = 123; // Change this to your targeted product ID
$free_product_id = 456; // Change this to your free product ID
$cart = WC()->cart->get_cart();
$has_targeted_product = false;
$has_free_product = false;
// Loop through cart items to check for targeted and free products
foreach ($cart as $cart_item) {
if ($cart_item['product_id'] == $targeted_product_id) {
$has_targeted_product = true;
}
if ($cart_item['product_id'] == $free_product_id && isset($cart_item['custom_price'])) {
$has_free_product = true;
}
}
// Add the free product if the targeted product is in the cart and the free product isn't already in the cart
if ($has_targeted_product && !$has_free_product) {
WC()->cart->add_to_cart($free_product_id, 1, 0, array(), array('custom_price' => 0));
}
}
add_action('woocommerce_before_calculate_totals', 'add_free_product_when_targeted_product_in_cart');
You must replace the IDs with your actual IDS.
In our case, it should be –
$targeted_product_id = 83; // Change this to your targeted product ID
$free_product_id = 44; // Change this to your free product ID
Now, apply the custom price –
function apply_custom_price_for_free_product($cart_object) {
foreach ($cart_object->get_cart() as $cart_item) {
if (isset($cart_item['custom_price'])) {
$cart_item['data']->set_price($cart_item['custom_price']);
}
}
}
add_action('woocommerce_before_calculate_totals', 'apply_custom_price_for_free_product');
Go to the 83 IDs product page and add the item to the cart.
As you can see, WooCommerce automatically added the ID-44 product for free when the ID-83 product is added to the cart.
Using a Coupon Plugin for Creating BOGO Discounts
We will use a buy one get one free WooCommerce plugin named Smart Coupons For WooCommerce. This plugin has BOGO features in its free version.
However, you can try the premium version for full features. Go to Marketing >> Coupons or from Smart Coupons >> Add Coupon.
The plugin adds additional settings to the core WooCommerce coupon settings.
Most importantly, it adds WooCommerce buy one get one discount features.
Select the BOGO option from the Discount Type dropdown. You can also appoint the number of times the coupon may be used.
If you checkmark the Apply coupon automatically box, the plugin will automatically apply the coupon without customers needing to input the code manually.
Additionally, you can assign where on your site you want to display a discount banner.
Jump to the Giveaway Products window.
The free version of the WooCommerce coupon buy one get one plugin only allows you to select specific products.From the Products box, you can select the products on which you want the coupon or discount to apply.
Search and select the product and set the values. You can also select multiple products to setup Buy X Get Y deal.
Now, if you have check-marked the Apply coupon automatically box, the coupon will be auto-applied when a customer adds the selected products to the cart.
If not, customers will have to enter the code manually. Alternatively, you can display a coupon banner on your pages, and customers can click to apply the coupon.
Here’s the cart page again. Click the coupon banner to apply.
As we selected multiple giveaway products, the cart added all of them as a giveaway. Select a single product in the Giveaway tab to offer a WooCommerce buy-one-get-one-free coupon.
WooCommerce Buy One Get One Half Off Using Coupon
Let’s check how to do a buy one get one half WooCommerce coupon. All the settings will be the same as before.
You only need to go to the Giveaway Products tab and set the percentage of the giveaway product.
Here’s how it looks in the front end.
Additionally, you can also create BOGO (Buy One, Get One) coupons with various conditions to make your offers even more appealing. Imagine offering BOGO deals for customers who use specific payment methods, choose particular shipping options, belong to certain user roles, or live in specific locations.
This way, you can tailor your promotions to target and reward specific groups of customers, creating a more personalized shopping experience and boosting customer loyalty.
Another valuable feature of the plugin is the Copy Coupon URL option. After you create a coupon, this option appears at the top, beside the coupon code.
Using this URL, users can automatically apply the coupon on the cart page. Simply link it to your banners and promotional content, and your customers will enjoy the discount effortlessly. This makes it easy for them to take advantage of your offer with just a click!
Creating a WooCommerce Buy One Get One Discount Using a Premium Discount Plugin
The methods we have seen so far are a good starting point for offering a WooCommerce buy-one-get-one discount. However, if you want to offer more advanced and flexible BOGO deals tailored to your customers’ needs and aligned with your marketing strategies, you need to use a premium plugin.
The plugin we will use to demonstrate advanced BOGO deals is Discount Rules for WooCommerce. This plugin allows you to create discounts with minimum effort, whether you want to create automated discounts based on complex conditions, bundle discounts or bulk discounts, quantity discounts or category discounts, or even reward your first-time customers.
In our previous articles, we have thoroughly explored different discount types and settings for this plugin. Today, we will directly jump to create a WooCommerce buy-one-get-one discount.
Create WooCommerce Buy One Get One Discount for the Same Product
After you install and activate the plugin, go to its dedicated menu and add a new rule.
The plugin has dedicated options for BOGO deals. Select Buy X, Get X to start with.
As we are creating the BOGO deal for a specific product, we need to select the product. From the Filters tab, select Products. Search and select the product you are targeting.
From the Discount tab, set your giveaway value and make sure you set it to free.
Save the rule and add the targeted product from your front end to test this discount.
As you can see, WooCommerce automatically added an additional quantity of the same product for free.
Creating BOGO Deals for First Time Customers
Offering a WooCommerce buy one get one discount to first-time customers is a great strategy to entice your visitors and convert them into buying customers. You can create a BOGO deal for first orders using the plugin.
We will offer a BOGO deal for any products to first-time purchasers. Therefore, select All Products.
Keep other settings the same. In the Rules tab, add a condition.
Select the condition First Order from the condition type dropdown.
You can also set rule limits and expiry dates from the settings.
Now, your new customers will enjoy a free product along with their purchases for the first time.
Creating WooCommerce BOGO Deals for Different Ranges
If you select the Recursive checkbox, the discount will be repeatedly applied to every other product. This means if customers add 2 products, they will get 2 more for free, and so on.
You can also add more ranges to your BOGO deal. For example, let’s say you want to offer buy one and get a 10% discount on the second one; buy 3, get 1 free, or 7-10 and get the last two at $30.
First, uncheck the recursive box. After that, add ranges and set values.
For example, let’s add 7 products to the cart.
As you can see, because this falls under the 7-10 range, the last two are priced at $15 each, $30 in total.
Create WooCommerce Buy One Get One Half Off
Simply select the percentage option from the discount type in the Discount tab.
Finally, set the percentage value to 50 to offer 50% off.
You can also offer a fixed discount on the giveaway product.
Combination WooCommerce Buy One Get One Discount
Let’s say you want to offer a free cap when a customer buys a hoodie and a T-shirt together. This type of combination discount is the most popular among customers as it provides more value.
Select the Buy X Get Y option from the discount type dropdown.
Select the products customers must add to the cart to avail of the discount.
Next, do the following from the Discount tab.
- Set the Y discount type to Buy X Get Y – Products.
- Select the mode – Auto-add.
- Set the minimum buy quantity.
- Select the product you want to offer for free and set its quantity.
- Select the discount type to free.
Afterward, go to the Rules tab and add the Product Combination condition.
Select the products again and ensure you select the combine option.
Let’s check the WooCommerce buy-one-get-one discount from the main site. Add the targeted products to the cart and check your cart page.
Voila! Working perfectly.
Wrap up
WooCommerce BOGO deals are the perfect marketing strategy for you to grab the attention of new and old customers and increase your overall sales. Moreover, you can use these deals to clear out your slow-moving stocks and create space for new products.
We hope this guide on WooCommerce buy one get one discount will help you create compelling BOGO deals for your online store.