webnodes e-commerce module
Background & overview E-commerce is one of the most important activities on the internet today. In the US alone, analysts predict that e-commerce sales will reach $248 billion in 2014. This means that a large percentage of all websites need e-commerce functionality, either as the main online activity, or as one of many online activities. Another factor that makes e-commerce attractive is the long tail principle that ensures that sites that serve a very narrow niche can survive and thrive, since the market is much bigger than traditional market for bricks and mortar shops. It s based on the theory of selling small volumes of hard-to-find items to many customers instead of only selling large volumes of a reduced number of popular items. The green portion of the graph shows the traditional and most popular products. The yellow part shows the less popular products, but the combined sales of the two parts are relatively similar. The e-commerce module in Webnodes CMS is a fully featured e-commerce application platform. It s based on the Webnodes Adaptive Framework, WAF, just like the rest of the CMS. This gives you as a shop owner a superb tool to build a solution that matches your exact needs. One of the core design goals behind the e-commerce module and Webnodes CMS in general is scalability. The module is designed to work for both small web shops and large e-commerce sites. This also makes it possible to make the solution grow with your needs. Page 2
Architecture The architecture of the Webnodes e-commerce module differs from most traditional e-commerce module architectures. A Webnodes e-commerce site is designed to be tailored to suit each client s needs. By that we mean that the customizations are not a separate, badly integrated piece of code, but a fully integrated part of the site. Traditional e-commerce and cms Webnodes e-commerce and cms For low cost projects, the out-of-the-box functionality can be used. If the site is successful and our e- commerce module can grow with your site, avoiding a costly and time-consuming platform change when the site takes off. This makes it a very affordable solution in the long run. Page 3
Functionality The list of functionality below is far from complete. It highlights some of the main features, but there are too many features in the e-commerce module to describe them all in this document. Contact us if you have a specific feature you need. Full access to all Webnodes Adaptive Framework functionality In the architecture diagram above you can see that the e-commerce module is built-on top of the Webnodes Adaptive Framework. This means that all the features in the framework can be used in the e-commerce module. For example publication workflow and revisions can be enabled for the products, enabling you to work on changes to a product in a preliminary revision. For more information about the core framework functionality, check out www.webnodes.com. No restrictions on design The content and the presentation are completely separated, removing all limitations on the design of your web shop. Scalable The e-commerce module and the rest of the platform has been designed to be scalable, not just in terms of performance, but also in the sense that the functionality can be expanded as your needs grow. This is mainly based on two main things. The provider based architecture and the fact that it s using the Webnodes Adaptive Framework. Provider model The e-commerce module uses a provider model design pattern for much of the functionality. This means that the default functionality can easily be replaced by alternate implementations with different functionality. This is used for things like payment methods, shipping and tax calculations and much more. See more detailed information on some of these areas later in this document. Multiple languages The e-commerce module can utilize the advanced support for multiple languages in the Webnodes Adaptive Framework. Multiple currencies Multiple currencies are supported in the module. Multiple currencies are related to a shop. One of them is marked as the default currency. The other currencies are supported by either calculating the other prices dynamically based on an exchange rate, or a fixed price can be set in each of the supported currencies. For example, a product can be set to cost $99, but also 99, irrespective of the exchange rate. Extensible document types The e-commerce module has a range of content types created for the shop. Since these content types are using the ontology and content definitions engine in the Webnodes Adaptive Framework, the shop can be extended in a number of directions using the inheritance functions. For example, one of the built-in document types is ProductBase. This is a document type for a basic product. We Page 4
could easily create an AdvancedProduct document type that inherits from ProductBase, that has more properties for more advanced functionality (weight, dimensions, reviews etc) and cooler presentation (video, more product images etc). Another important and unique part of this technology is the content relations technology. It enables content to be related in any way you wish. The e-commerce module has a range of built in content types, which have a set of predefined relations. For example between product and product category content types there is a relation. To customize the shop to your needs, you can extend the built-in content types. Discounts A wide range of discount methods are available. Discounts can apply to products, a combination of products ordered together, orders or shipping on orders. Discounts can be limited by a certain number, or be available for a certain time period. Discounts can be a fixed amount, or a fixed percentage. Discounts can be related to a customer, a product, a shop, a product category, manufacturer or order. Reports In order to get a clear picture on how a shop is performing, reporting is crucial. There is a wide range of reports available, ranging from stock levels to a list of the best selling products in the last 30 days. Variants The system has a built in support for variants. All variants are themselves full-blown products, which makes it easier to handle integrations with other systems. Page 5
Anonymous or login based On a shop by shop basis, you can decide if it should be possible to submit an order without logging in. Tagging, taxonomy, semantic networks All content in the system can use the tagging, taxonomy and semantic network technology in WAF. Dashboard The dashboard shows an overview of the status of the current shop. It contains different boxes containing key information, ranging from the latest orders to the most popular products to graphs showing the revenue for certain time periods. It s also very simple to customize the dashboard module. Each of the boxes displays the contents of a User Control. Multiple shops in one installation A Webnodes CMS installation can have many sites. Each site can have one shop. Flexibility The module is very flexible in terms of how it s used. It can be the main part of a website, or it can be a small section of a big website. It can also be more tightly integrated with the rest of the site, than most traditional e-commerce software, since it uses the same foundation as the rest of the system. Do you want to mix social media features with the shop? No problem. Or do you want to add product listings in the side column of your regular articles? Not a problem either. The problem is having the imagination to use all the features available. Payments The payment system in the Webnodes e-commerce module is very flexible, and it s easy to add new payment methods. There are two main ways of implementing a new payment method. The first and most basic method is to create a PaymentMethod node in Webnodes. Then you have to create a class that implements an interface. This is a very basic interface, so you ll basically have to write the whole payment process yourself. It s a bit of work, but you get total control over the process, and it will work with any payment method you require. The other method is a more specialized method for credit card payments. There is a CreditCardPayment interface that you can implement to support your credit card processor. The interface has more methods to implement than the basic PaymentMethod interface, but the methods are really simple to implement, so it s much quicker. The system ships with built-in support for a number of credit card processors. Send us an email to inquire about the latest list. Shipping In order to support all possible shipping methods, the shipping functionality is handled through a provider based system. This is set up in the way that you create a ShippingMethod node in Webnodes, and one of the properties list the classes that implement the provider interface. By selecting one of the classes, you link the ShippingMethod node with a specific provider class. A provider is a class that implements a specific interface for handling shipping calculations. Page 6
So in order to create a custom provider, you create a class that implements the ShippingMethod interface. The interface has only one method called CalculateShippingCosts. There is only one parameter to the method, the Order node. Through the order node, you get easy access to customer location, number of products, product size, product weight or any other parameter that you use to calculate your shipping costs. In order to help with the process of writing a shipping calculation provider, the system has a few example providers built-in, that you can get the source for to learn how to implement a custom shipping calculation. Taxes Tax calculations are also based on a provider model where you can use one of the built-in providers, or write your own. Each shop must select a tax provider to use for all tax calculations in that shop. Page 7
The default tax calculation provider is a flat tax rate provider. The tax rate can be set to the desired level. Inventory The e-commerce module has a built-in inventory tracking system. It s a simple system that increments and decrements integer counters as products are sold or returned, based on changed order statuses. But for more advanced needs, for example integrations with inventory systems, the inventory tracking is provider based, so it s very easy to integrate with other systems. When an order changes status, the inventory provider is invoked. The input to the provider is the old status, the new status and the order object. Based on those data it s easy to make all types of integrations with third party systems. Product catalog The product templates in the system are not limited in any way by the system. The content and the presentation are completely separated, which means you can make any type of design. There are two main templates in a product catalog: product templates, and product category templates. A product template refers to the template used to display information about one specific product (with variants), while a product category template refers to the template used to display information about all the products in a product category. Cart/basket There are two different shopping cart views. - The full shopping cart that displays all the information about what s in the shopping cart. There is a ShoppingCartDetails control that displays the detailed cart information. It has a default look, but it s a templated control, so you have full control over the rendering, total freedom over the look and feel of the shopping cart. - The shopping cart summary is a summary that s normally shown on all pages. It often only contain the number of products, and the price of the products in the cart, excluding shipping (and sometimes even tax, depending on what country you live in). The control is fully templated, so you have full control over the look. To add a product to the shopping cart, there are two main ways to do it. : - Use the AddToBasket templated control. It has a default look, but you can control the look by changing the templates. The only requirement is that the template contains a LinkButton, ImageButton or regular Button control with a CommandName called AddToBasket. You can also hide the button if the product is out of stock. - Create the functionality yourself, and use a lower level API to add a product to the shopping cart. This can for example be used in conjunction with an Ajax solution. Page 8
Checkout There is a standard checkout process in the module. It contains the following steps: 1. Customer information 2. Payment & Shipping Information 3. Order Received The checkout process can easily be changed to suit your needs. Screenshots Fig 1: Order list Page 9
Fig 2: Editing a product. Page 10
Fig 3: Product categories Page 11
Fig 4: Editing a shop Page 12