> ## Documentation Index
> Fetch the complete documentation index at: https://developer.couponsplus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# How to create your first Buy One, Get One (BOGO) deal

> Learn how to set up automatic BOGO deals in WooCommerce using the free Coupons+ plugin.

## Introduction

A **Buy One, Get One (BOGO)** deal, also known as **Buy X, Get X**, **2 for 1** and **2 x 1** in some regions, is one of the most popular deals for stores to clear inventory and increase average order value.

In this guide, you will learn how to set up automatic BOGO deals using product filters, offers and optionally preconditions in Coupons+.

## What you'll be building

**The offer:** Buy 1 pair of Nike Shoes (Brand + Category) and get one for free.

By the end of this tutorial, you will be able to create deals that:

* **Target very specific items:** Buy 1 pair of **Shoes** Categories in the **Nike** brand.
* Apply automatically without the customer needing to enter a coupon code manually.
* Add the discounted item to the cart automatically if it is not in it.
* Can be applied repeatedly.
* Can combine multiple offers per set of eligible items, like a Same Products + Shipping Discount.
* Can be restricted using preconditions.

## Before we begin

For this tutorial we will be using the free Coupons+ plugin for WooCommerce. If you don't have it already, you can download it here: [Coupons+](https://wordpress.org/plugins/coupons-plus-for-woocommerce).

## Follow along with a demo site

To make it easier for you to test and replicate the steps in this tutorial, we have designed a demo store with some dummy data that you can use for testing. This tutorial uses the exact same site and data set. It is recommended that you replicate the steps in this tutorial using the demo site.

> **[Coupons+ Demo Store](https://playground.wordpress.net/?mode=seamless\&blueprint-url=https://cdn.jsdelivr.net/gh/neblabs/coupons-plus-dummy-demo-data@main/blueprint.json)**
>
> Temporary WooCommerce demo store for testing Coupons+

If at any point in this tutorial you have any problems or questions, you can ask for help [here](https://wordpress.org/support/plugin/coupons-plus-for-woocommerce/#new-topic-0).

**Step 1**

## Creating the coupon

From the WordPress admin dashboard, go to Marketing > Coupons > **Add New Coupon**, in the same way you would create a regular WooCommerce coupon.

When you launch the demo site, this page is loaded by default.

**Step 2**

## Adding the product filters

The first thing to do is selecting your product filters. For this BOGO deal, **these filters target the items that the user must buy in full for the BOGO deal to apply**. This is the *Buy* part of the *Buy One, Get One*.

1. Click **Configure offer**. A new popup will appear. This will guide you through the process of selecting all your necessary product filters. The first screen will ask you to select the type of deal that you plan to create.
   \[!NOTE] It is important to know that the deals in this screen do not add the offer itself. Instead, these are what we call **Suggested Scopes**, they help you pick your product filters and offers based on the type of deal with personalized labels, screens and calls to action.

2. Select **Buy One, Get One**, since that is what we are building.

   ![The Suggested Scopes screen with a list of suggested scopes like buy one, get one, item discounts, bundles, etc.](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/suggested-scopes.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=fea4dc444d868ec33607f0db8ba3b343)

   Next, you will be asked the type of products. For this demo we want to target all Shoes **Categories** from Nike **Brands**, so the first thing to do is add the Categories filter.

3. Click **In Specific Categories** and type *Shoes*, then from the search results select that category or hit `return/enter`

   ![The product filters list selection screen](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/products-filter-selection.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=5d6a97f39f2ddb70eacafdfb94f5e7dc)

   ![The categories filter with the shoes category added in](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/shoes-filter-screen.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=7971625a0bc89dc150a7b03a4c3d8101)

   Now here's the interesting part: we don't just want shoes from any brand. We specifically want shoes from the *Nike* brand, so we need to add a second filter in this group to narrow down the product selection. To do that, we need to add the Brands filter.

   > [!NOTE]
   >
   > If you are creating an offer targeting only a specific product or SKU, you can skip the next step.

4. From the same screen, in the sidebar on the right you will be presented with a list of compatible filters you can combine with your current selection (in this case filters compatible with the Categories filter). Click **And From Brands** to add the Brands filter and type *Nike*. Your filters should look like the following image:

   ![The filters selection screen showing the categories and brands filters](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/brands-and-categories-selection-screen.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=8aaafee0c3c7bbb9ce71a7db72d0bc1d)

   Now we have 2 filters: Categories and Brands. Because these two filters are in the same group, any item in the cart **must match both filters** in order to be eligible.

   Finally we just need to specify the quantity that the customer must buy.

5. Click **Next**. In this screen you will be asked the required quantity. We'll leave it at 1 since we are building a regular Buy 1 Get 1. But you can select the quantity that you need.

   For example, for a buy 2 get 1 offer (also known as 3 for 2, or 3 x 2), you'd need to type **2**. Click **Apply** to finish adding your product filters.

   ![The quantity selection screen for the BOGO offer](https://mintlify.s3.us-west-1.amazonaws.com/neblabs/images/BOGO-qty-screen.png)

   After adding your filters, a new tree will be created. It should look like the following image:

   ![The new tree with the product filters but without the offer yet](https://mintlify.s3.us-west-1.amazonaws.com/neblabs/images/BOGO-tree-node-no-offers-yet.png)

   So what do those filters do? I'm glad you asked. As mentioned before, these are product filters, not cart conditions. Coupons+ will take all items in the cart and run this filter group against them. For this example, Coupons+ will look at each item in the cart and only select those that are both in the **Shoes** category and from the **Nike** Brand. If there is an item in the Shoes category but from another brand, like Adidas, it will not be selected since that item only matches one filter and we need the item to match **both** filters.

   Once Coupons+ has selected items that matched both filters, it will then pick only 1 from the matching items, since we have a Quantity filter.

   > [!NOTE]
   >
   > **Now here's an important thing to know**: when more items match than the required quantity, eg: 3 items in the cart matched but the Quantity filter is only set to 1, what item gets picked from those 3 depends on the offer the filters are attached to.
   >
   > For BOGO offers like the one we are building, the offer uses the passed filtered items as the "buy" part of the BOGO deal (the items that the user must buy for the deal to apply). It does not apply the discount to the passed items, instead it puts them aside and uses them to apply the discount to additional items of the same type in the cart (or adds them automatically when applicable), therefore the most expensive items will be passed to your offer first, because traditionally, in BOGO offers, the most expensive item is the one that the customer buys and the cheapest is the one that gets the discount.
   >
   > **A practical example:** In this tutorial we are targeting 1 pair of Nike Shoes. If the customer adds *1x Nike Alphafly 3* (**\$220**) and *1x Nike Air Force 1* (**\$120**), then Coupons+ will pass the most expensive (*Nike Alphafly 3*), the BOGO offer will put it aside and then check the cart for more eligible items, since there is another one eligible (*Nike Air Force 1*) it applies the discount to the latter. If there was only one eligible item and you have the option to add the gift items automatically, then an extra item of the same product would be added to the cart.
   >
   > This is in contrast to other offers like Discount. The Discount offer applies the discount directly to the filtered items, so for a Discount offer, the cheapest items will always be filtered first.

**Step 3**

## Adding your offers

Now that you've added the product filters, we need to tell Coupons+ what to do with the filtered items after they are filtered from the cart. There are two options: add an offers branch that will take these items and use them for the offer, or add a tiers branch that can allow you to add offers in tiers. Since the latter is used for bulk and tiered offers, we will be adding a simple offers branch with the BOGO offer

1. Click **Add offer**

2. Select **BOGO: Different Products**. This will open the configuration screen for that offer.

3. Set the quantity of the **discount items**, the items that will receive the discount (the free items).
   For this tutorial, set it to **1**. This **does not** include the filtered items.

   The filters for this tutorial will select 1 pair of Nike Shoes. The quantity for this offer excludes the 1 pair that was filtered and will select another 1 from the cart.

   For this example, we will leave it at **1** since we are building a simple Buy 1, Get 1 offer. But you can select the quantity that you need. For example, if you are building a buy 3 get 2 deal, then you would need to set the quantity to **2** and 2 items would be discounted when buying 3. Your filters would need to have a quantity of **3**.

   Here's a table that illustrates this behavior:

   <table>
     <thead>
       <tr>
         <th>Filter Qty</th>
         <th>BOGO Qty</th>
         <th>Cart Items</th>
         <th>Filter Takes</th>
         <th>BOGO Takes</th>
       </tr>
     </thead>

     <tbody>
       <tr>
         <td>1</td>
         <td>1</td>
         <td>1 eligible item (A)</td>
         <td>1 (A)</td>
         <td>0</td>
       </tr>

       <tr>
         <td>1</td>
         <td>1</td>
         <td>2 eligible items (A) + (B)</td>
         <td>1 (A)</td>
         <td>1 (B)</td>
       </tr>

       <tr>
         <td>2</td>
         <td>1</td>
         <td>2 items (A) + (B)</td>
         <td>2 (A) + (B)</td>
         <td>0</td>
       </tr>

       <tr>
         <td>2</td>
         <td>1</td>
         <td>3 items (A) + (B) + (C)</td>
         <td>2 (A) + (B)</td>
         <td>1 (C)</td>
       </tr>
     </tbody>
   </table>

   \**Order depends on the price. See below*

   ![the config screen for a BOGO offer](https://mintlify.s3.us-west-1.amazonaws.com/neblabs/images/BOGO-config-screen.png)

4. Optionally select the type of discount for your BOGO offer. We'll leave it at **FREE** since we are building a traditional Buy One, Get One FREE. But you can choose other discount types. Click on the **free** selected option to select a different type.

   The following table shows each discount type and examples when the user has 2 matching items. (eg: one \$120 pair and one \$100 pair of Nike shoes, no other items). Without the offer the total is \$220.

   | Type | Description | Example |
   | - | - | - |
   | Free | Applies a 100% discount to the *discount items*. | The \$100 pair is free. The customer pays **\$120**. |
   | Percentage Off (%) | Takes a percentage off the price of each *discount item*. | With 50% off, the \$100 pair costs \$50. The customer pays **\$170**. |
   | Fixed Discount (\$) | Takes a fixed amount off the price of each *discount item*. | With \$30 off, the \$100 pair costs \$70. The customer pays **\$190**. |
   | Fixed Price | Applies a discount that makes the price of the *discount item* equivalent to the set fixed price. | With a fixed price of \$25, a \$75 discount is applied to the \$100 pair, so it costs \$25. The customer pays **\$145**. |

5. Click **Done**. The offer will be added. Your tree should look like the following image:

   ![the final tree showing the product filters and the BOGO offer attached to them](https://mintlify.s3.us-west-1.amazonaws.com/neblabs/images/final-BOGO-tree.png)

**Step 4**

## Applying the coupon automatically

Right now if you save the coupon, the customer will need to apply the coupon manually for the offer to take effect. You can make the coupon apply automatically when the cart has eligible items from your product filters.

On the top-right, click **Manually Applied** to change the mode to auto. It should look like the following image:

![the apply mode is: auto](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/auto-applied-enabled.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=411c747ce4a5655e0eb2fcb060776131)

Now when the customer has at least 1 pair of Nike shoes, the coupon will be added.

> [!NOTE]
>
> If they only have 1 pair in the cart, then the coupon will be added but the discount will not be applied until the customer adds another eligible pair.

**Step 5**

## Saving the coupon

All that's needed to get this offer live is to click **Save** in the top-right corner of the dashboard. Your coupon will be saved and ready to be used in your shop.

> [!NOTE]
>
> **You do not need to enter a coupon code!** Coupons+ will automatically generate one for you if you *choose* to leave the coupon code field empty.

### How does the BOGO offer use the filtered items?

With the full picture now ready, here's a simplified overview of what the BOGO offer does with the filtered items.

* Coupons+ runs the product filters with the items from the cart. It finds several pairs of Nike shoes. The BOGO offer tells the product filters to get the most expensive ones first, since they are the items that the customer must buy in full. The filters then pass that pair to the offer. The BOGO offer will then try to look in the cart for *more* Nike shoes, ignoring the pair that was passed to it.
* If it finds another one, it will pick it and apply the BOGO discount to it.
* Otherwise, it will try to add an extra pair if you selected the option **Automatically add them to the cart**. If you did not select that option, no extra pair gets added and the customer will need to add another themselves. After they do, the BOGO offer will apply the discount to the cheapest pair. The default mode is: Let the customer add them manually.

## Testing the coupon

Now that the coupon has been saved and is set to auto-apply, let's make sure it is working as expected.

### Adding the products to the cart

**Step 1**

Go to the shop.

**Step 2**

Add an eligible item. For this tutorial, let's add the **Nike Air Max 90 (\$130)** and go to the cart. You will see a notification showing that the coupon was applied successfully. No discount will be applied yet because we only have 1 eligible item, and for this offer we need 2.

![the cart has the coupon applied but no discount yet due to lack of extra eligible items](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/bogo-coupon-apply-partially.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=5c2b85a2cb64d7cb977836a87ce4d875)

**Step 3**

Go back to the shop page and add another pair of Nike shoes. For this example we will add one pair of **Nike Air Jordan 1 (\$180)**.

> [!NOTE]
>
> You can add any pair of Nike shoes, as long as they are **Shoes** and from the brand **Nike**, including another pair of the same product (**Nike Air Max 90**), but for this example we want to clarify what happens when there are eligible items with different prices.

**Step 4**

Go to the cart. You will now see that the bogo discount has been applied to the **Nike Air Max 90** because it is the cheaper of the two eligible items. BOGO offers always prioritize the discounts starting from cheapest to most expensive.

![cart page showing the bogo fully applied now with the discount in place](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/bogo-fully-applied.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=00e53bdd51fac63f45171fc656714483)

## Applying the BOGO offer more than once

Our bogo offer works like a charm. But it only applies once. Try adding 2 more of the **Nike Air Max 90** so that the cart now has 3 of **Nike Air Max 90** and 1 of **Nike Air Jordan 1**. You will see that only 1 pair is being discounted. What happens if you want to apply the bogo offer for every matching pair of eligible items?

You can make the bogo offer apply repeatedly for every matching set of items. For example:

| Quantity in filters | Quantity in BOGO offer | Items in the cart | Items discounted |
| - | - | - | - |
| 1 | 1 | 2 eligible items | 1 eligible item |
| 1 | 1 | 3 eligible items | 1 eligible item |
| 1 | 1 | 4 eligible items | 2 eligible items |
| 1 | 1 | 6 eligible items | 3 eligible items |
| 2 | 1 | 3 eligible items | 1 eligible item |
| 2 | 1 | 6 eligible items | 2 eligible items |

To enable this feature, from the Coupons+ Dashboard:

**Step 1**

Click on the BOGO Different Products offer.

**Step 2**

Scroll down to the section: *How many times can this be applied?*, select **Repeatedly** and click **Apply Changes**. The BOGO offer card will now show a *Repeating* label below it:

![bogo offer card configured as Repeatedly](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/repeating-bogo-card.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=a4826a282cca601736d612c5a5a5c5dd)

**Step 3**

Click **Save** to save the coupon. Your BOGO offer will now be applied for every matching pair of items.

![cart showing the bogo offer is being applied twice to the cheapest eligible item](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/cart-showing-the-bogo-discount-repeatedly.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=9533a90981dd9288ab6945248663c88f)

## Adding the products to the cart automatically

Our current configuration makes the customer manually add the extra discount items. But what if you wanted the items to be in the cart automatically as soon as the customer adds one eligible item to their cart? For example, on an empty cart, when the customer adds one pair of **Nike Air Max 90** you want another pair to be added automatically.

To do so, from the Coupons+ Dashboard:

**Step 1**

Click on the BOGO Different Products offer.

**Step 2**

Locate: *When items eligible for discount aren't in the cart* and select **Automatically add them to the cart**

**Step 3**

Click **Apply changes** and save the coupon.

## Putting the filters to the test

Remember: for a discount to apply, an item must satisfy all filters in that context (group). For this example, the product filters will only match **Shoes** from the **Nike** brand.

Try removing all the items from the cart. Then go back to the shop page and add a pair of **Adidas Ultraboost Light** and one **Nike Club Fleece Hoodie**. The coupon will not be applied because these items only match one filter: the **Adidas Ultraboost Light** matches the shoes category but not the brand, and the **Nike Club Fleece Hoodie** matches the brand but not the category. This is an example of the power of combining product filters in Coupons+, and it is one of the most powerful things about the plugin.

## Adding an extra offer

What if you also want to give the customer a free shipping discount alongside the BOGO offer? Coupons+ allows you to add more than one offer per group of filters.

To add another offer for this filters group, from the Coupons+ Dashboard:

**Step 1**

Click on the **+** button attached to the last offer:

![plus button sign that is attached to the right of the last offer](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/plus-button-on-the-offer.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=c65de3694bc5b667c34a07ca222151dd)

**Step 2**

From the available offers, Click **Shipping Discount**, configure it and click **Done**. Your offers tree will now look like the following image:

![tree showing the filters and two offers: bogo and cart shipping discount](https://mintcdn.com/neblabs/V_dQ8cS1i4mxIxfD/images/bogo-tree-with-2-offers.png?fit=max\&auto=format\&n=V_dQ8cS1i4mxIxfD\&q=85\&s=85a0ba46e80688e61c3bee7aa37ae1cb)

Now the Shipping Discount will be applied when the customer has 1 *or more* Nike Shoes in the cart.

> [!NOTE]
>
> Each offer is configured and applied independently and each will be applied when the filters return at least one valid item. This means, for example, that the BOGO offer that has been configured to apply repeatedly will only be applied repeatedly itself. The Shipping Discount offer will be applied only once.

> [!NOTE]
>
> You can combine other offers too. Like Discount and Different Products.

## Restricting the coupon with a precondition

Finally, what if you wanted to restrict this offer only under specific conditions other than the products in the cart, like restricting the offer for a specific user role or a specific date? You would need to add a precondition that must be passed before the coupon can be applied.

To add a precondition, from the Coupons+ Dashboard:

**Step 1**

Click on **No Preconditions** on the right. You will be presented with a list of available preconditions. For this example let's just restrict it to a specific date.

**Step 2**

Scroll down and select Date, configure it and click *Done*

***

Stuck? Have a question? We're here to help!

Ask for help in the official support forums!

[Open](https://wordpress.org/support/plugin/coupons-plus-for-woocommerce/)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.