Client Login.

Justin Long // ExpressionEngine Expert

E-Commerce Planning with Exp:resso Store & ExpressionEngine

Written by: Justin Long | On: August 6, 2012

Payment Processors

One of the biggest decisions that anyone needs to make when they are setting up an online store is which payment processor to use. As a general rule of thumb there are two different types Merchant Hosted Gateways (on-site) or External (off-site). Each gateway type offers a unique set of pros and cons.

Merchant Hosted gateways will allow you to collect and process the customers’ credit cards on your own site. With this you will have to have an SSL certificate installed on your site along with making sure you are PCI Compliant. Most on-site gateways will also have a monthly fee associated with using the gateway. This is often the option you will see used on medium to large sites as it creates a unified shopping experience.

External gateways will often be easier to setup as the actual processing takes place on an external server. This means you don't need an SSL certificate and you can often run it on a cheaper shared hosting account. A lot of off-site gateways also don’t have an initial setup fee or monthly fee. They do however usually take a larger % of the transaction total so depending on your site sales it might be cheaper then a Merchant Hosted Gateway.

Exp:resso Store currently has about 15 gateways that you can use out of the box. You can find the docs for which gateways they support here. In this series I have decided to use and PayPal Express(off-site) gateways.


Do your users need an account is another large decision that you have to make when you are creating an e-commerce site. From there you can break this debate down farther to when the user will be registered. Does the user need to register before they can checkout, during the checkout process, or after? Or do they need an account at all? Store does not require that users have an account at all to checkout so you can decided which is best for your setup. In this tutorial I am going to give the users the option to create an account or not. If the user chooses to create an account they will be doing it during the checkout process and I will be storing all of their information except for the credit card details.

Account Subpages

If the user has elected to create an account we need to create an account area that is useful to the customer. For me this means that we should have a few subpages for them.

  • Account Details -- This will allow them to easily see and edit their account details including their email, billing & shipping addresses and account password
  • Order History -- Show all of their past and current orders. This page should also allow user to view/print their receipts and send an email to support with the at least the order number available to support staff.
  • Downloads -- This will allow users to download things related to the items they have purchased. In this example they are going to be able to download digital editions of cookbooks that they have purchased.
  • Wishlist -- This page will give the user the ability to view/edit their wishlist items. It should also include a way to allow users to send their list to a friend or family.
  • Affiliate Info -- If you offer the ability for users to become affiliates this page will be where they can track their results and get all of the materials they might use.
  • Products

    This area is arguably the most important section of your site to develop as this will allow customers to find your products and make a decision to purchase or not. I wont be going in-depth with what makes a great product page in terms of design but I will give you what I feel is important. To have a great product page you need to have a few key elements:

    • Quality Pictures - An image is worth a 1,000 words use that to your advantage.
    • Product Descriptions - A user can't touch your product or interact with so you need to fill that gap for them.
    • User Reviews/Ratings - Allowing users to see other peoples comments/concerns is crucial in building a reputation for your products.
    • Add To Cart Button - This should go without saying. You need a clear path for users to add items to their cart. There is something that can be said for having clever verbiage or process for adding items to the cart but depending on your demographic this can often lead to confused visitors.
    • The Price - There is nothing more annoying then not being able to find the price on a product page. Make it visible and display it above the fold.
    • Product Videos - This is more of a nice to have feature then a must but having the ability for videos to be shown allows users another way to connect to your product. Obviously this will not work in every situation but if the items you are selling make sense to be shown in a video then do it.

    Organizing how you are going to display your products is another crucial part that must be carefully considered. Are you going to create multiple channels to separate the products or have a single channel and sort by multiple categories or tags. In this series I am going to use a combination of multiple channels, categories, and tags. Cookbooks don’t make sense to be grouped with actual food items so they will be in a separate channel. I will then use categories to organize the products into geographic regions, cuisine style, gluten free, etc. I will then use tags to allow the admins to relate products with similar ingredients (i.e. items made with coconut flower).

    How do you want to deal with related products? There are a few approaches that you can use depending on exactly what you want/need for your project. One approach would be to create a Playa field that would allow admins to choose which items to feature as related. This can be very effect in that the admins have control of what products are being shown to the end user, on the flip side this could involve lots of admin input if your products often change or go out of stock. Another option would be to allow categories or tags to automatically generate the items that are related and you can simply show them that way. I am going to opt for a combination of the two where the Playa field will be the default and only show the categories or tags if I don’t have enough related items in the playa loop.

    One of the biggest complaints I have when it comes to shopping online are that often the process of searching for products sucks. Some retailers search algorithm are so strict that unless you know the exact title of the product you will get little to no relevant results. While others allow every bit of information about the product to be searched which can overwhelm the results to include items that are nowhere related to the original search term. We are going to be building an option that will hopefully fall in-between the two extremes in this series.

    Displaying products on non-product specific pages. We often want to allow products to be seen on the homepage or in a sidebar template. There are a few ways that this can be achieved status, categories, or relationships. In this series we will explore a few different approaches to achieve the same results.


    This is often where you will have the highest amount of abandoned carts, there are many different reasons for this but one of the largest I addressed earlier in requiring members to create accounts to purchase products. In this series I am going to allow users to choose their own path to checkout, if they want to create an account or not. The key here is to give value to creating an account, they only have to edit their data once, easy access to purchase history, wishlist, etc. The next big question to ask is what information do I need to collect? If I am selling digital downloads do I really need to force customers to enter shipping details? When planning for the checkout process my general rule is to ask myself (or the client) why do we need the user to fill out this field. If you can't come up with a great reason then don’t add it to the form. In this series I am going to collect Name, Shipping Address, email, and Billing Details (but only if they are checking out with I don't need users phone numbers, marital status or similar so I am not going to ask for it, even though I would like to be able to see my demographics. The checkout process is not the place for collecting these details.


    Store allows you to create multiple shipping options for your customers. They currently have 3 supported shipping gateways (Store Default Shipping, UPS, & Australia Post). In this series I am going to offer 2 different gateways UPS, and Store Default Shipping Plugin. UPS will allow me to charge the user actual shipping prices where the Default Shipping plugin will allow me offer a flat rate and free shipping. When it comes to shipping and taxes a user should be able to get an estimate on both without having to go through the entire checkout process so we will also build the ability to check these in the cart template.

    Additional Reading Materials

    Here are a few links that relate to e-commerce sites and your customer experience.

    What’s coming up Next

    In the next entry in this series we are going to be setting up Store for the first time. We are going to set up our Payment Gateways, Shipping Plugins, Tax Rates, Available Regions, and other general settings. If you are going to be following along with the series you will want to have ExpressionEngine 2.x installed on your server.

    If you have any thoughts or questions feel free to post them in the comments below.

Next entry >>> <<< Previous entry


<<< Go back to entry list