What's new in nopCommerce 3.90

What's new in nopCommerce 3.90

Improved administration

1. Changes introduced to the admin area. 
In nopCommerce 3.80 a brand new admin area was introduced. In nopCommerce 3.90 the admin area has become even better as more user-friendly changes have been made. For example, links have been substituted with buttons, the grids have been re-designed and new inputs for currencies, weight, and dimension have been introduced. All this makes the nopCommerce administration easier and faster to work with.

improved administration

2. Admin area simplified. Added "basic-advanced" modes to several more entities. 
Basic and advanced modes were introduced to the product details and settings pages in nopCommerce 3.80. In nopCommerce 3.90 you have the same basic and advanced options available for the categories, checkout attributes, manufacturers, message templates, and topics pages. This is a feature we particularly like, because it makes the store administration more organized and easy to manage, especially for small and medium-sized shops which do not need to use all the advanced features of nopCommerce. 

basic and advanced modes

Improved store management

1. Support conditions in message templates. For example, now you can hide shipping address in emails if shipping is not required. 
This is one of our favorite features in nopCommerce 3.90. In short, you can have conditional parts in your message templates. You simply define a condition, which if met would include everything that is enclosed inside the condition.
Before illustrating this with an example you need to know the right syntax for including conditional information in the message templates. The conditional part always starts with %if and ends with endif%. Right after the %if, you need to specify the actual Condition in parentheses (condition) followed by the text that you would like to be included.

%if (Condition) conditional text here endif%

Only if the condition is evaluated to True then the text after the condition will be included in the message template.
For example, in the following condition if the order is shippable the email will contain the text “You will receive the product in 2 days”:

%if(%Order.Shippable%) You will receive the product in 2 days endif%

Please note the use of tokens in the Condition itself.
A Condition could be either a simple boolean token like %Order.Shippable%, which by the way is a new token added in nopCommerce 3.90 or a simple expression that could be evaluated to a boolean value. Let's illustrate this with several examples:

%if(%Order.Shippable%) - checks if the order is shippable

%if (%Order.OrderNumber% == 500) - checks if the order number is equal to 500

%if (%Order.OrderNumber% == 500 && %Order.Shippable%) - checks all of the above at the same time

The best news is that you can also compare string values like this:

%if(%Order.PaymentMethod%==”PayPal Standard”) - checks if the the payment method is PayPal. Please note that while we tested the string comparison above we noticed that it is important not to leave any empty spaces in the condition between the == sign and the actual string i.e “PayPal Standard” as otherwise the condition will always be evaluated to False even if the payment method is actually PayPal.

Another example is to check if the country is different from the USA and send some special delivery instructions:

%if(%Order.Shippable% && %Order.ShippingCountry%!=”USA”) Some special delivery instructions here endif%

Please note that if the condition is wrong or could not be evaluated it will default to False value and the conditional text will not be included in the message.

2. Boolean logic support for discount requirements (“AND” or “OR” or groups).
Previously in nopCommerce, a store owner could set one or more requirement to a discount if they wanted to limit its applicability based on a customer role, the amount spent, etc. In nopCommerce 3.90, discount requirements can be grouped with conditional logic (AND, OR). This is achieved through the so-called requirement groups. In a requirement group, the store owner can put a number of requirements and specify whether one or all requirements in the group need to be met. The store owner can add multiple requirement groups and specify whether one or all requirement groups need to evaluate to true for the discount to be applied.
For example, I wish to give a 20% discount on the order total in two cases - if a customer buys the Apple MacBook Pro 13-inch together with the Beats Pill 2.0 Wireless Speaker OR if he buys Levi’s 511 Jeans together with a Custom T-Shirt. To achieve this I will go to the discount settings and create two requirement groups one for the first two products and another one for the other two and I will add each product requirement to the corresponding group. Finally, I will make sure that the interaction type inside the groups is AND and the interaction type between the groups is OR as shown in the example below.


3. Delay usage of reward points.
In nopCommerce you can have a reward points program where customers earn points for certain actions they take on the site, e.g. making a purchase. Now in version 3.90 the store owner can choose to activate those reward points immediately or to set a period of time after which the points will be activated. In the My Account area under reward points, the customer can see how many reward points he has earned and when they will be active. Let’s say that you have a 30-day return policy. You can set the reward points, a customer has earned to be active, after 30 days. In this way, the customer will not be able to use the points if he decides to return the item he has purchased.

reward points

4. Configuring custom order number by the store owners.
In nopCommerce 3.90 the store owner can add date information to the order numbers. For example, instead of just having the order number which will be generated by default, the store owner can choose to add the year, the month, the day or all of the above to the order number. This could be helpful when the state legislation requires that the order numbers are generated in a specific way, let's say that the order number should start from 1 for each month. In the example below I have decided to add the year and the month to my order ID.

custom order number

5. Allow a store owner to manage access to plugins per customer role (ACL).
In nopCommerce 3.90 the store owner can limit a plugin to certain customer roles and this plugin will not be integrated into the public store if the customer that is browsing the website is not in these roles.
There are many scenarios where this could be useful as it applies to all kind of plugins i.e payment methods, shipping providers etc.
Let’s say that you want only registered customers to use a given payment method i.e PayPal. Then simply go to the “Local plugins” page and click “Edit” next to the PayPal payment plugin and then in the “Limited to customer roles” field select the “Registered” customer role.

plugin access per customer role

6. Specifying a product availability range.
In nopCommerce 3.90 instead of displaying the general “out of stock” message, the store owner can specify when a product will be available again. For, example, if a product is sold out a store owner can specify that it will be back in stock in 2 days. This is a very useful feature because, instead of showing that the product is not available and potentially lose a customer, you can make them come back to your site and possibly make a purchase when the product is available again. The store owner can manage the product availability ranges in configuration –> shipping -> dates and ranges.

product availability range

7. Tier prices now support start and end dates (hence removed “special prices” product properties).
The tier pricing functionality is enhanced with the ability to specify a start and end date. This means that you can have “special prices” for a certain period of time. That is why the special price fields available in the previous versions of nopCommerce are now removed from the product and they are now part of the tier pricing. The nopCommmerce 3.90 upgrade script moves all old special prices (if you have had any) into tier prices with quantity 1.

special prices
Now if you want your product to have a special price for a given start/end date you need to create a new tier price with quantity 1, although it is not really a “tier” price. After these improvements, the tier prices are no longer just simple “tier” prices. This is why the nopCommerce team plans to rename them to “Advanced pricing” in the following releases of nopCommerce in order to remove any confusion. 

8. Track stock changes of products.
In nopCommerce 3.90 there is a “stock quantity history” available for each product. This comes handy when the store owner needs more detailed information about any changes made in the product quantity. The store owner can see if a change in the product quantity is made manually or if the stock quantity is being reduced by placing an order. Additionally, if an order is canceled, a store owner will be able to see the quantity adjusted.

stock quantity history

9. Reply to product reviews (for store owners and vendors).
In nopCommerce 3.90 a store owner or a vendor can reply to a customer review in the store administration. Being a store owner ourselves we know how important customer reviews are. Even more important for us is to be able to demonstrate commitment and gain our customers’ trust by replying to their reviews.

reply to product reviews

10. "Products never purchased" report.
In nopCommerce 3.90 a store owner can run a product never purchase report by a vendor, category, and manufacturer. This gives a more detailed overview of the products that have not been purchased and can help the store owner take actions to correct that. For example, in the administration of my store, I can easily see which Apple products has never been purchased. Based on this, I can decide to run a promotion in the next week and try to sell them at a lower price.

product never purchased report

11. Allow editing of product specification attribute option.
This new feature is a real time-saver for the store owner. Now a store owner can edit the specification attributes in the administration of the products. In previous nopCommerce versions, you would have to delete and create a specification attribute from scratch if you wanted to apply any changes.

specification attributes option

Improved Shopping and Checkout experience

1. Using multiple discount coupon codes.
We are sure that this is a feature every store owner has been looking forward to. At last, in nopCommerce 3.90 a customer can apply more than one coupon codes to an order. That was impossible in previous versions and the store owner had to combine coupon codes manually. This is a time-consuming task if you have to do it regularly.

multiple coupon codes

2. Attaching files when submitting return requests (scans, additional documents, etc).
Now when a customer makes a return request, he can attach files which might be related to the product purchase and the return request. This useful feature will save both the store owner and the customer the overhead of sending files via email when required.

return request files

3. Added approval mechanism for news and blog comments.
In nopCommerce 3.90 a store owner can choose to have news and blog comments approved before being published in the public store. In this way, the store owner can monitor the comments and filter any of them which have inappropriate content. This could be especially useful also for preventing spammers from flooding your blog comments. “Comments must be approved” needs to be checked in the blog and news settings for the feature to be active.

blog and news comments approval

4. Do not allow removal of required products from the cart.
In nopCommerce 3.90 customers can no longer remove required products from the shopping cart. This new feature comes handy when a store owner wants to bundle a product with another one. For example, let’s say that I want to make the Beats Pill 2.0 Wireless Speaker a required product for the Apple MacBook Pro 13-inch. What I have to do is go to the Apple MacBook Pro 13-inch product page and check the “require other products” option. I can select the product ID and choose to have the product automatically added to the shopping cart. Next time when a customer adds the Apple MacBook Pro 13-inch to his shopping cart, the required product (Beats Pill 2.0 Wireless Speaker) will also be added to the cart. The customer will not be able to remove the required product from the shopping cart.

required products

5. Display a user-friendly message for "maximum discounted quantity" (when applied).
Since nopCommerce 3.50 the store owners could specify the maximum discounted quantity a given discount could be applied to. But the customers were not given any indications of this when adding the products to their cart. This could be quite confusing especially if the carted quantity of a given product exceeded the maximum discounted quantity.
In nopCommerce 3.90 if the store owner sets a “maximum discounted quantity” for a product, then on the shopping cart page a user-friendly message will be displayed to the customer to let him know what is the maximum quantity he can get a discount for. Let’s illustrate this with an example. I have set the maximum discounted quantity for the HTC One Lollipop to three. If a customer wants to purchase five items, only three of them will be discounted. A message will appear in the shopping cart, letting the customer know that the discount has been applied only to three out of five items. For two of the items, he will have to pay the regular price.
This means that in nopCommerce 3.90 the customers see not only how much they will save but also the exact number of the products that have been discounted i.e “Discounted qty: 3”.

maximum discounted quantity

6. Allow subscription to the newsletter when the store is closed.
Another very important feature in nopCommerce 3.90 is the ability to subscribe to the store newsletter even when the store is closed. This will allow the store owner to collect customer emails even before they have officially launched their stores. This feature will allow entrepreneurs to have a landing page and build a customer audience before launching their store.

newsletter subscription

Improved Security

There are four new customer settings related to complying with the latest PCI DSS 3.2 requirements:


Password lifetime - This setting specifies the number of days before a password expires. By default, this setting is set to 90 days. But for this policy to take effect you need to enable it per customer role. Simply go to the customer role that you want to force password expiration for and enable the “Enable password lifetime” setting. As a best practice, this policy needs to be applied to store administrators as they have access to sensitive store information and settings.

password lifetime

Unduplicated passwords number - This is just a small part of all the improvements and bug fixes made in nopCommerce 3.90 and if you want to see all of them you can take a look at the detailed release notes.

Maximum login failures - If you fail to login after several attempts then your account will be locked for a certain time (see the “Lockout time” setting below). Once your account is locked even if you entered the correct username/password then you would not be able to log in. Leave this setting to zero if you want to disable account lockout.

Lockout time (login failures) - If your account is locked i.e failed to login after several failures then this setting is used to specify the time in minutes before you can attempt to log in again. During this time you will not be able to login even if your credentials are correct.

Performance optimizations

As with any release of nopCommerce, this one is not different and introduces many performance improvements.

Reduced memory usage - nopCommerce 3.80 had an issue with taking too much memory after several restarts of the website. This could be a big problem if you are running your nopCommerce on a shared hosting because on a shared hosting server your website memory usage is capped. If your website hits the memory limit then it would be restarted which creates a huge disruption to its proper operation.We personally think this is the best performance improvement since nopCommerce 3.3 as it will make running nopCommerce on shared hosting much more stable than it used to be.

Improved caching - In nopCommerce 3.90 discounts are loaded only once and cached. Previously all the discounts were loaded on every web request and if you had more than a few discounts this could slow down your website.

NopCommerce 3.90 also manages its cache much more efficiently than previous versions. Now only dirty cache is being cleared. For example, if a change is made to a given product then only the cache related to this product is cleared and eventually reloaded rather than the cache for all products. Again this will significantly improve the page load time especially if the site has a lot of products.

These are just some of the great new features in nopCommerce 3.90 we have shortlisted for the purpose of this digest. There are many more features and improvements worth your attention. For the full list of new features, please refer to the official release note.