In the many (many) years I’ve been building ecommerce sites, I’ve often found that the inventiveness of marketing managers in terms of the promotions they would like to run is usually way ahead of the capabilities the ecommerce framework offers. Which means I used to have to apologise a lot, and ask for the promotion to be changed. Which is a frustration for the poor benighted marketing manager and also for us.
So it was something of a relief to become acquainted with promotions in nopCommerce.
There are three good things about the way nopCommerce does Promotions (it calls them Discounts, by the way). The first is that out of the box, its capabilities are pretty rich.
The second is that if the out-the-box facilities aren’t enough, then there are 41 additional discount types for the latest version of nopCommerce (accurate at time of writing for version 4.1) available as third party plugins.
The third is that the way nopCommerce is architected means that there’s a clear mechanism for creating custom promotions.
I thought it would be a good idea to give a flavour here of the kind of promotions you can do with a new install of nopCommerce 4.1, and later I’ll give an example of how flexible the discount system is when it comes to adding completely new functionality.
When you want to create a promotion in nopCommerce, you’ll see this screen:
The discount type drop down allows you to determine what the discount is applied to - categories, products, order total, shipping etc.
This means you can create a 50% off Item A type discount, or £5 off everything in the Gizmos category.
Not very inspiring so far, I know, but we have to walk before we can run.
We can say whether the discount is a fixed amount or a percentage, when it starts and ends, whether or not you want the shopper to enter a coupon code and how many times the promotion can be used (Unlimited, N times, N times per customer).
You can also specify the maximum discounted quantity - this is a little hard to get your head around, but can be demonstrated best by means of an example. Say we set up a promotion that gives shoppers a 50% discount on an AceGizmo - if we set the maximum discounted quantity to be 1, then if the shopper adds two AceGizmos to the basket, then the 50% discount will only be given on one of them.
Now, where things get a bit more interesting is if we look at the Discount Requirements tab:
Requirements are essentially rules that determine when a promotion is valid for a given customer and their basket - in the example shown I’ve made it so that only customers in the Administrators role or the Forum Moderators role are eligible for the promotion.
Many of the plugin discount types define new requirements so complex rules can be built for your promotions.
It’s also possible to group requirements together, and then join them logically, so you could say “customer must be in either the Administrators role OR the Forum Moderators role AND they must be in the Vendors role” (I’ve used customer role here as an example to keep things simple)
To give an idea of how complex things can get, there’s a set of discount requirements I set up:
In order to qualify for the discount, the shopping cart must have just one of both an Apple iCam and Adobe Photoshop CS4 in it. The customer must be either an Administrator or a Forum Moderator, and the order must be shipped to the UK.
As an aside, I edited the Apple iCam product so that when it is added to the basket, Adobe Photoshop CS4 is also added automatically.
So now, if these items are in the cart, when an eligible customer gets to the checkout and has elected to ship to the UK, then this is what they will see:
Ok, so what about custom promotions?
I know from deep experience that no matter how complex promotions can be out the box, there will always be a need to do something different.
One of the strengths of nopCommerce is the way the software is architected - at the risk of gushing just a tiny bit, it’s an incredibly well engineered framework. The original development team had quite some mentoring from Microsoft and it shows. They have thought about how the framework needs to be extended in real world applications and they have facilitated extensions very, very well.
And one such area that can be extended is Discounts. I’m not going to go into the technicalities of this (that would be too dull even for me), but what I can do is give an example of how we’ve adapted Discounts.
A customer came to us a few months ago with a need to enable their marketing team to offer their customers a choice of free gift depending on what items were in the basket. It took a bit of head scratching on my part, but I wrote a plugin that does just that - and more - which is now live on two of our customer’s sites.
So now, when a shopper adds an item to the cart, they are presented with a menu of free gifts of which they can choose one or more, depending on rules set up by the marketing people.