Coupons+ provides you with a way of visually building your offers. You can think of Coupons+ as an “offers builder”, like a page builder, but for your coupon offers. This gives you full freedom to design your offers according to your requirements. If you really want to start as quickly as possible, we’ve prepared a number of pre-made presets with common use cases that might be useful to you. Read more about presets here.
A typical Coupons+ coupon is made up of an unlimited amount of rows and columns although most use cases will only require one row.
Columns are executed from left to right until an offer is reached or execution is halted if a condition or filter fails.
For example, if you wanted to give a 10% discount to any t-shirts ordered by new customers (customers with no previous purchases), you’d have the following coupons+ coupon:
There are two columns: the first column (1) will be executed and if the user has not purchased anything before, the second column will be executed (2). Coupons+ will then select all the t-shirts in the cart and will apply a 10% discount (3) to them. If there are no t-shirts in the cart, no discounts will be applied. We designed Coupons+ so that this flow is easy to visualize. If at any point, a condition fails or the results of all filters from a context is 0, the remaining columns or offers to the right will be discarded.
Filters vs Conditions & Contexts #
One very important thing to point out is that each column takes the context of the previous column, and passes the result to the next column or offer.
A context is a single group of filters or conditions that take cart items, filter them (if the context contains filters) and passes the items from the result of the filters to the next column or offer.
Filters work exclusively on the items of the cart, and they filter the items from the current context and pass the resulting items to the next column or offer, creating a new context with new items (for the next column or offer). All the filters in a single context are combined to produce a single set of items. For example, a context with the following filters:
Will result in 5 t-shirts that combined are $100. NOT any number of t-shirts or 5 items of any category or items in the cart that cost $100 combined.
Conditions, on the other hand, work on the global state and do not filter the items in the cart. Conditions will ignore the filtered items and will just pass the items from the previous column to the next without changing them.
Each column may have one or more isolated contexts. The most common column called the Simple Column only has one single context.
For example, if you wanted to give a 25% discount to all t-shirts in the cart when the customer buys 5 (t-shirts), but exclude the t-shirts that have been marked as “featured” from the discount, you’d have the following Coupons+ Coupon:
The first column (1) will take 5 t-shirts from the cart and will pass them to the second column (2). The second column will then take these 5 t-shirts and will pass those not marked as featured to the next column, or in this case, to the offer (3). Notice how the second column is NOT filtering ALL the products in the cart, it is ONLY filtering the products that were filtered from the first column. The offer will then apply the discount ONLY to the items passed by the last column. Notice how it says “Apply to: Filtered items” on the offer card.
This filtering only applies to columns with filters. Columns with conditions will pass the filtered items from the last column to the next column. If a column with conditions is the first column, all items from the cart will be passed to the second column.
We’ve previously only mentioned columns with a single context (Simple Column), but Coupons+ has more column types that can have any number of isolated contexts. In fact, only the Simple Column contains a single context, all other column types can have more than one context.
Each context from each column is isolated and the results of the filters are not shared with the other contexts. For example, consider the following image of an OR column that has separate contexts:
It has 2 contexts:
A) The first context will filter all the items from the previous context (in this case, all items from the cart since this is the first column) and will create a new context with 5 t-shirts.
B) The second context will NOT use the results of the previous context (the 5 t-shirts), because contexts are isolated per column, it will take the items from the context of the last column (all cart items in this case). For this example, it will take one brown jacket from the items in the cart (and not from the 5 t-shirts, which is not particularly useful).
You can read a pretty comprehensive description of all the available column types with examples here.
Hopefully, this document helped you get a better understanding of how Coupons+ works. The concepts might look a little intimidating at first, but once you get the big picture of how things work, you’ll be able to implement almost any type of offer you can imagine, visually.
A note on default WooComerce coupon discounts, restrictions & limits #
It is important to note that Coupons+ will only apply discounts using the provided offer options by this plugin. Combing Coupons+ conditions and filters with the discount types provided by WooCommerce will not work. For example, combining the Coupons+ condition: Customer Purchase History with the default Woocommecre Discount type “Fixed cart discount” will not work. You should use the Discount offer type provided by Coupons+ instead.
Restrictions on the other hand, like minimum/maximum spend, individual use only, usage limits, etc, are fully supported.