Built using one of the best model-view-controller frameworks available today and taking advantage of the latest features of PHP, the system is feature packed, fast, robust and secure. The MVC framework enforces strict coding standards in order to separate logic from presentation. As the application has been written by ourselves - this is not an off the shelf package - we can readily customise it if necessary, to suit any client requirement.
The admin interface is very simple to use, even when creating more complex data types such as product styles and options. For clients with an existing site, and a large number of products, we can port this information over so as to minimise repetitive and mundane tasks.
The site is responsive out of the box, so will work effectively across all device sizes, down to mobile.
A demonstration site is available to view (front end and admin) if you are interested in finding out more.
Listed below is a summary of the features our system offers:
Products and Categories
Unlimited products and categories. With respect to categories, create as many parents and children as is required. Once created you can alter the order in which they are displayed on the front end. You can also set how many rows per page are to be displayed under global settings. If the number of results exceeds this figure, the results are paginated.
Create super categories (for example new arrivals, best sellers) to which products can be allocated. These super categories can also be shown on the home page.
Advanced product filtering based on attributes (eg price, brand, type). Results are dependent upon what has been chosen before.
For each product you can upload a thumbnail and larger image, and an unlimited number of “extra” images (thumbnails and super large images) for display in a responsive "lightbox" effect.
For each product you can upload an unlimited number of files for downloading by users (eg product specifications in PDF format).
Save time by cloning products and categories if they share similiar parameters and imagery.
Related items to each product (customers who bought this item bought these items). In the admin, a predictive search facility is in place to assist in the finding of such products, and a very simple interface to remove and change the order in which the items appear on the front end of the site.
Price methods are not editable but include: regular, sale, option based, option based sale, volume based and display only. Regular means that you enter a single price. Sale means that you enter the original and new price the display of which is shown on the front end of the site with the original price struck out. Option based means that you select the styles you want to show for a product and then the number of options. For every single option, you can enter a price, code (if electing to display product codes), weight (if chosen), stock and buffer levels (if managing stock). You can then add further style options when editing the product. Option based sale is the same as above, but that you can also add a sale price. Volume based pricing allows you to do this: Buy 1 for £10 each, 2 for £8 each etc. Display only means that the product cannot be added to the cart and no price is displayed.
In order to create option based pricing, it is necessary to set up the styles (eg size, colour) first, and then assign their options. It is possible to provide a colour swatch for each style option if desired. When the styles and options have been set up, you can then create different price points, product codes, weights, stock and buffer levels for each option when creating or editing a product.
On the front end of the site, we have made it very easy to determine the correct order of the styles and the options within them. Assuming that a product had (for example) 3 styles, when first viewing the product detail page, only the first style would be available to select. The options available to the second style would then be dependent upon the option select initially - and the options available for the third style would be dependent upon the first and second style options chosen. This is termed an "ajax dependent dropdown" and ensures that the user doesn't waste time selecting an option only to be told subsequently that it is not available. As the options are chosen, the price changes automatically - assuming that there are different price points for the different options (as happens on a regular basis). In addition to price points, it is possible to assign different codes for each option (common), stock and buffer levels and weights - assuming these features are enabled in the cart settings section (described below).
Minimum order quantities for each product can be set. If the user tries to purchase a quantity below this level, an error message is displayed.
Lots (eg pack sizes) can be set for each product.
Product codes can be set for each product (and for style options as described above).
Tax rates are set up separately and be assigned to individual products.
Weights can be set for each product (and for style options as described above) if you want to calculate delivery costs based upon the weight of the basket.
Manage stock for each product if desired by entering the opening stock and buffer stock levels. On the front end of the site, if a user purchases a product in a quantity which is greater than the available stock, an appropriate message is displayed. If a product is ordered which takes the stock level below the buffer level, the administrator is sent an email prompt to re-order the item.
Sell gift certificates on the site. Once set up (as an option based item) and purchased, the site will generate the coupon with a unique code. The purchaser would provide this code to the recipient who then is required to create an account on the site in order to assign that code to himself/herself. We then can track the usage of the coupon through the site so that it is not necessary to spend it all at once. Once the amount of the coupon has been fully expended, it will be become inactive and unavailable for future use.
Other forms of coupons are discussed below.
Product reviews including a star rating system for logged in users. Upon completion of a review an email is sent to the site administrators in order to approve the display on the site.
Users can compare a set number of items and view (and delete them) on a product comparison page in order to assist with their purchasing decision.
Meta information (title, keywords and description) can be entered for every single product (and category and page).
When items are added to the basket we perform checks to ensure that the amount ordered does not exceed available stock or that the quantity is greater than the minimum order quantity for example. The user is presented with the appropriate error message. Assuming there are no such errors, the item is added and a mini basket in the header of the site (which is therefore viewable everywhere on the site) updates automatically with the correct number of items and basket total. By default, users do not leave the product page being viewed - they are not redirected to the main basket page.
On the basket page the user can delete the entire contents of the basket, or an individual item. The user can also update the quantity. If the revised quantity is greater than the available stock, or it is less than the minimum order quantity, an appropriate message is provided. On success, the basket totals are updated automatically, as is the mini basket in the header. If one of the items in the basket is volume based, the price will be updated depending on the quantities entered.
Also on the basket page, the user can enter a coupon/gift certificate code and view the discount being applied automatically.
All of these actions are performed without a page refresh.
Assuming the user is signed into the site, and gift certificates are available - these will be presented so he/she can view the amounts outstanding and apply the code to the basket total.
There are several features built into the system designed to help increase sales:
Coupons (if enabled) enable you to generate a code which can be communicated with the customer base or prospects. This coupon will provide the user with a percentage or absolute reduction based on the value of the basket prior to taking account of delivery charges. The coupon will have an expiry date - after which it will no longer be possible to use, but can be used by customers multiple times (on separate occasions) before then. If you have elected to show prices including VAT, the coupon amount will include VAT and be subtracted from the order total including VAT, and vice versa if prices are shown excluding VAT.
In addition to standard coupons as described above, you can create a specific coupon for a particular customer - for example if are running a competition, or wanted to thank a particular customer for their continued support, or to recompense a customer who had a problem with their order. In this case, the amount of the coupon would always be absolute rather than percentage. The random code generated by the site would be communicated with the customer who would then need to create an account on the site if not done so previously, and then assign that coupon to themselves. We perform a check to ensure that the code has not already been assigned (in addition of course, to checking if it exists in the first place!). It would then be available to use on the site. When viewing the basket, any coupons would be clearly displayed to the (logged on) user, so they have an easy way to redeem them. Because the user is logged on, the site tracks the usage of the coupon so it is not necessary for it to be used in one transaction. There is no expiry date for these coupons - they are active for as long as there is a positive amount outstanding.
Assuming coupons are enabled, it also possible for the site to sell gift certificates. These would be set up as an option based product with the value being the style and the options represented by different monetary amounts. Once purchased, the user would then be able to give the code to their chosen recipient. The process would then be the same as that described for specific site generated coupons above.
Create a loyalty scheme for users who create an account on the site. Specify the percentage off the value of the basket you want to give. If prices are shown including VAT, the percentage will be based on the basket value including VAT and vice versa if prices exclude VAT. When the user is on the basket page, the site will show him/her the value of the points accumulated, and ask whether the points are to be redeemed. If the answer is yes, the site will inform the user of the balance outstanding (if any) and adjust the final balance saved to the database when an order is paid for. If points are not redeemed, the points accumulated in the transaction will be saved for future use.
Volume based price discounts are a great way of encouraging customers to increase the value of their basket. We have set up the admin interface to allow a very simple way of creating the parameters needed to generate the correct price on the front end of the site, namely buy 1 for £10, 2 to 5 for £8, more than 5 £2 each. Note that when viewing the basket, if the item is volume based, and the user changes quantities, the correct volume price will be generated.
The site offers sale pricing as standard - allowing you to show sale prices for standard and option based products. As with volume based items, these could be displayed clearly on the home page as a way to entice users to investigate further.
When users create an account or checkout as a guest, we can ask them if they want to subscribe to an email marketing tool (optional and at additional cost) in order to be kept informed of new arrivals, product sales etc.
In addition to the standard content management system settings, allowing you for example to enter the company trading address, registered company address, VAT and company number, email address recipients for any contact form(s), pagination variables and sort order - the e-ecommerce application provides for the following interface which can be further refined on client request.
Disable the shopping cart functionality completely, only show to logged in users or allow full access. When the cart functionality is disabled you effectively have a catalogue site.
Indicate whether prices are to be shown inclusive or exclusive of VAT. If the former, all prices on the site must be entered gross, net if the latter. Decide if you want a tax description to be shown next to each price (eg inc VAT, ex VAT).
Turn on/off the display of product codes.
Lots (eg box of 6) can be set up separately in the admin and these options are then available to you when adding or editing a product.
Turn on/off the ability to manage stock, and if so provide an out of stock message, and an email address(es) you want to be notified when a product is purchased which means that the stock buffer level has been broken, as a flag as to whether you want to order more of this item.
Turn on/off coupons; this will enable not only standard coupons but also allow you to create certificates for sale, users to assign gift certificates and special one off coupons created by the store.
Turn on/off the ability to record the weight and dimensions of each product.
Turn on/off guest checkout. If enabled, customers can checkout without having to create an account.
Turn on/off the ability for users to provide a gift message for each product purchased.
A custom script is written for each client requirement, based on either (a) the total number of items in the basket (b) the weight of the basket or (c) the total value of the basket. Refinements can be made based on geography, and free shipping provided (for example) if the total value of the order exceeds a preset amount.
Delivery charges can be calculated to be inclusive or exclusive of VAT, and the appropriate tax description provided.
Turn on/off delivery instructions at checkout. If enabled users will be able to leave delivery instructions before submitting their order.
Allow sales to the UK or international. If you choose to allow international orders, a list of countries with IS0 3166 codes is provided. This list can added to if necessary and amended. Countries can be made invisible to prevent orders from specific countries.
A state and province list is provided for the US and Canada, which can be amended.
Orders and reporting
When an order is placed the site administrator(s) and the user are sent a confirmation email containing the details of the order.
The status of a successful credit card order is "pending shipment", that for an offline transaction (if accepted) is "pending payment". When the order is ready to be delivered to the customer (assuming funds have cleared if the payment option was pay offline), you would find the order in the admin and change its status to "completed". This triggers a second email to the customer informing him/her that the goods have been dispatched.
When viewing the orders in the admin a running total of those orders is shown. Orders can filtered for example, by payment method, status, date ranges - and the running total is updated accordingly.
If customers have created an account on the site, when they log in they can change their email address and password. We ensure that any passwords have a combination of digits and lower and uppercase characters.
All passwords are encrypted in the database with a very strong hashing algorithm.
In addition, users can update their billing and address information. If the user had gift certificates purchased as a gift, or been awarded a coupon (for example as a prize) by the store, he/she will be able to assign himself/herself to them when logged in. Once assigned, the coupon(s) will be available to use on the site. The user will be able to track the usage of the certificates so he/she knows exactly what is left to spend.
Users can view a history of the orders placed on the site including those which are incomplete and view their status - checking for example if an order has been dispatched.
Bulk uploading of data
Some clients have a very large number of products they need to upload to the site. Rather than upload each individually via the admin interface, they can create the data as a csv file and upload this. Subsequently the site administrator can perform further updates this way by first exporting the relevant table and then re-importing. It would be necessary of course to download and re-upload any related lookup tables, but this is true for any relational database.
Third party credit cart processing
Web Preference is an approved SagePay integration partner. Integration with the SagePay version 3 protocol is provided as standard. We recommend using the Server method as this lessens the administration required to satisfy PCI compliance checks enforced by the credit card companies.
We have also integrated our application with PayPal's Express Checkout API, a much more secure standard than Website Payments Standard which is often implemented. Other payment gateways can be integrated on request, but PayPal and SagePay are by far the most popular options.
Dynamic XML site map
A dynamic XML site map can be generated from the admin with a single click. This can then be submitted to Google on a regular basis in order to maximise the chances of as many pages of the site being indexed as possible.
Search engine friendly urls
As with all of our sites, the urls we generate are meaningful to both humans and search engines. For example, a product url might be in the form of http://shoppingsite.com/product/clothing/shirts/white-shirt-example which tells you that this white shirt example is in the shirt category which is a sub category of clothing. If the name of the item (white shirt example) is also the H1 tag on the page (which it would be if this is the item name), and is represented in the copy with the appropriate frequency, prominence and weight - this structure immediately gives you a better chance of being effectively indexed by all search engines.