Getting the most out of Ucommerce for Umbraco
Working with the e-commerce module for Umbraco and Sitecore.
Although we work with most technologies, internally we favour two .NET CMS platforms Sitecore and Umbraco, which both integrate with the same ecommerce package, Ucommerce. Both have their own platform-specific implementation as you’d expect but they also share the same core functionality and application framework architecture under the hood.
Ucommerce has been on our radar for a number of years and thanks to our friends at the brilliant charity YoungMinds, we were able to employ it on a commercial Umbraco website running on Umbraco’s “Managed Platform” offering - Umbraco Cloud, this year for the first time. This article covers some of our learnings as we attempted to get the most out of the Free Edition of the package as possible.
It was originally built as a module for Umbraco almost 10 years ago and has since been ported over to Sitecore too, more recently. Like both Umbraco and Sitecore themselves, Ucommerce is a framework of core ecommerce functionality designed to build on top of, rather than being a ready-made shop ready to go as soon as you’ve installed it.
Every charity is of course unique but in some ways the brief we received from YoungMinds to redesign and rebuild their main public-facing website presented a “typical” set of challenges and core requirements, both in terms of managing content as well core ecommerce functionality. All the while, providing demonstrable value for money and clear and measurable ROI.
As you might expect, the ecommerce requirements for YoungMinds as a charity were relatively simple in comparison to those of an omnichannel retail giant but at the same time the fact they are a charity meant that there was perhaps a greater variety of product to cater for. Specifically, not only do they sell tangible goods that need fulfilment, they also take online donations and sell tickets for training courses. Much of this is familiar across the entire charity sector, of course.
Furthermore, each of these broad product types have their own rules around VAT, discounts and shipping. Fortunately, with Ucommerce, these types of business rules are perfectly possible to implement with either the Pro Edition, or certainly the Enterprise Edition, without any need to trouble your development department thanks to the Ucommerce Marketing Foundation framework and the ability to define multiple Price Groups (currencies and VAT rules). However, these are features not available in the Free Edition so in order to get these business rules applied we had to extend the core Ucommerce components programmatically. Easy enough, if you know how. Fortunately the Ucommerce documentation is pretty solid in terms of getting up to speed quickly and the Eureka community forum is very well maintained and active - you’ll usually get a response within a day or two and sometimes within a few hours.
In terms of e-commerce functionality and usability of the back end system, fortunately Ucommerce is as easy-to-use as Umbraco, with a clean and straightforward interface. There were, however, a couple of challenges we had to overcome to deliver on some key areas of the brief. Namely, search and reporting.
A standard feature of Ucommerce is that it maintains a separate product and catalogue faceted search index, backed by RavenDB, via its Search Foundation framework. At first look, this felt like a bit of a showstopper to using the Free Edition for a couple of reasons. Firstly, the Ucommerce Search Foundation is not available within the Free Edition. Secondly, Umbraco natively uses Lucene.NET as its indexer, not RavenDB and we wanted a single uniform search provider across the entire website, allowing us to perform exhaustive keyword searches across both Umbraco and Ucommerce content, seamlessly.
This was when both Umbraco’s and Ucommerce’s respective frameworks came to the rescue. Both have a highly configurable architecture and a standard set of system-wide events that fire on key actions, such as “content published” or “product saved”. Both are also flexible enough to allow you to extend, override or at least handle these event notifications. As such, we chose to create a new Lucene index specifically geared to holding the Ucommerce product and catalogue information. This custom index was then populated with the product and catalogue content whenever Ucommerce flagged that product had been saved. It was then possible to run all site-wide search queries through Umbraco against both the custom product and the general website Lucene indexes, combined, thanks to Lucene’s multi-index reader.
As mentioned, one other area of the brief that needed further consideration was reporting. Ucommerce doesn’t really offer too much out-of-the-box in terms of back office reports. The good news is that where it lacks in this department, it makes up for in its highly normalised database, in comparison to most other content management system databases and in its use of NHibernate ORM at its core. This means that you can easily roll your own set of reports, even using the Free Edition, without much fuss.
In summary, there’s quite a bit of functionality you can get out-the-box even with the Free Edition of Ucommerce and even more if you’re willing to write a few lines of code. Below is a list of some of the customisations to the Free Edition we were able to deliver as part of this project:
- Programmatic checkout for one-off donations (as well as the traditional check out process for physical orders)
- Custom Tax Service; only applying VAT to certain products
- Custom discounting based on volume of product type on order (in the absence of access to the Marketing Foundation)
- Custom Shipping Service; applying various shipping fees based on the combination of contents and volume on the order
- Extending the nHibernate entities to store additional properties
- Sending “back office” confirmation emails to specific areas of the business depending on what was ordered (as well as the standard order confirmation to the customer)
- Automatic order status setting, based on the chosen customer checkout payment method (e.g. orders set to Paid if payment was taken immediately)
- Various back office financial reports, used to track sales and status’ of purchase orders
- Automatic nightly generation of an extract file containing the latest purchase orders, sent via FTP to a 3rd party shipping company
- Unified website search mechanism across both Umbraco and Ucommerce
In a sector where every penny counts, it’s hugely important to be able to deliver value in all sorts of ways and that’s why we at Yoyo only ever choose digital tools like Ucommerce that provide more than the sum of their parts, if you know how to get the most out of it
Get in touch, if you want to find out more