I’ve been asked more times than I can count to build an eCommerce store. So I decided to finally put together a detailed list of everything that you need to think about and gather before you get started.
Word of warning: the more you customize, the more you must maintain.
There are a lot of “shiny objects” in the world of eCommerce, and while they look cool, you probably don’t actually need them. And many of them not only add expense but actually hurt your store in the long run.
So make sure you know what you’re doing before you go adding everything and the kitchen sink to your website.
Remember, fixing a job done wrong can end up costing a lot more than a job done right. Getting an experienced professional WooCommerce developer up front can end up saving you a lot in the long run.
TL;DR; We’ve got a checklist at the end with all of the items you need!
The first step in getting your eCommerce website setup is determine a few basics about your business.
This is the address that you will be shipping products from. If you don’t ship, this is typically your business address.
Email address for orders
This is the email address that you will receive new order notifications.
This is also typically the reply-to address you want used for email notifications leaving your website. However, some businesses prefer to have a reply-to address that is devoted to customer service and separate one just for new orders. It depends on your needs.
It’s also possible to set up separate email addresses for new order notifications, cancellations, and refunds. For most businesses, this is not needed, but you should be aware it is available.
If you are collecting any data on people, then you need to have a policy on your website which informs people how you are using that data you have collected.
Read more about privacy policies in our blog post.
Several privacy laws are now in place to protect the Personally Identifiable Information of citizens of certain states with fines that can reach $2,500-$7,500 per website visitor.
We recommend Termageddon to create and maintain your policies for you. These are polices that are written by real privacy attorneys.
Terms of Service
Your store will also need terms of service. This is actually a contract between you and the customer. Some basics that should be included:
- Information accuracy
- Terms of sale
- Payment policy
- Limitation of liability
You see them pretty much everywhere, little cookie notices on websites that ask you to agree to them. For the most part, if you are running an eCommerce store, you need to include one of these.
Depending on the type of purchases that you offer, you may need an End User License Agreement. This typically only applies to software, but since more and more companies are creating SaaS (software as a service) platforms, they are pretty common to need.
This is a usually quick one, you just need to know what currency your website will operate in. For those who need more robust solutions than just one currency they are available as add-ons from various providers.
If you do need more robust options, there are typically two approaches:
- one is a currency switcher which will change the price displayed based on recent conversation rates – this is generally pretty easy to accomplish with a plugin
- the other is trying to actually operate your store in multiple currencies – this is a lot more involved
If you are in the US, then you probably deal with pounds and inches. If you are almost anywhere else in the world, then you probably deal with kilos and meters.
Are you actually selling online?
I’ve worked with several stores of the years which were “display only”. Basically, they displayed the products they sold, but people needed to contact them for purchase.
A good example was a furniture manufacturer. They only sold to distributors, and needed to go through a vetting process before entering into an agreement. But they wanted product pages, searching, filtering, categories, all of those things that go with an eCommerce store, just without actual purchasing on the website.
What countries do you sell products to?
Does your business focus on just a couple of countries? Then you probably only want to sell to those countries. The exception may be if you are selling digital products or services, you may wish to sell to a wide range of countries.
Will you allow reviews?
For some websites, product reviews are essential. For others, they don’t add any value.
- Selling hand lotions: you almost certainly want product reviews
- Selling services: you may not want product reviews and instead display general reviews for your total services.
If you decide to have reviews, the next question is who should be able to leave reviews?
- Online only: you normally want verified buyers
- In store & online: you may want to allow people who haven’t purchased from your online store to add reviews
As with any other type of website visitor provided content, you will need to moderate your reviews.
Do you need to manage stock?
Some businesses need to manage stock on their website, and some don’t. Note: you can still set a product to “out of stock” even if you aren’t managing stock.
For example, some courses allow people to purchase only during the first week of the month. If you don’t sign up by then, it will be “out of stock” until the next month. Now, if they wanted to limit the number of people who could enroll, then they would want to manage stock as they need to stop selling after a certain number.
Where do you ship to?
Many eCommerce stores will ship to all locations that they sell to, but not all stores do this.
One common reason for NOT shipping to all locations you sell to is having both physical & non-physical goods. Ie: you sell a downloadable product and also some physical products. In that case you may want to sell your downloadable product world-wide but only ship within your country or region.
So you’ll need to determine if you will ship to all locations you sell to, or just a subset of them.
Do you have handling fees?
Some sellers add handling fees to their shipping to cover the cost of labor or packing for the products. Whether you do, and how much should be determined based on your business needs.
If you have physical goods which will be shipped then you’ll need to decide how you are doing your shipping. (see shipping below)
If you want to have the website automatically pack boxes, then you’ll need to enter length, width, height, and weight for all of your goods. Most shipping plugins require all of these details in order to pack your goods into boxes for shipping calculations.
When shipping plugins do packing of goods into boxes, they basically assume that everything is a rectangular prism (a box), and then can pack those rectangles into other boxes. So if you can “squish” an object into a smaller size for packaging, then you’ll want to be careful how you enter it.
For example, if you sell a t-shirt and can fit 10 of them in a box size A, make sure when you do the math, that given the dimensions you’ve entered they do in fact fit in the box.
Some WooCommerce stores sell only digital goods and don’t need any shipping. If that matches your needs, then you can skip the whole shipping section!
There are a lot of options when it comes to configuring your shipping fees. I’ll highlight some common setups, but there are lots more out there.
A number of stores will include basic ground shipping in the cost of their items and then offer free shipping. A lot of buyers like this experience as they aren’t being hit with extra fees at checkout.
A number of other businesses will offer free shipping above a certain cart amount. They frequently advertise their free shipping threshold on their website. This can help increase the average cart value as people may buy more product less often to get the free shipping.
Flat rate is a good choice if you have a relatively simple calculation for shipping. For example if you sell rather small items you may be able to put all normal orders into one box and charge a flat fee of $7 for shipping.
In WooCommerce, the flat rate shipping option can also do some basic calculations, such as charging 5% of the cart value, or having a minimum or maximum fee.
There are a number of shipping plugins available for working with major companies like USPS, UPS, FedEx, etc. Several different companies offer these plugins, and you’ll need to read some reviews and compare what functionality you need to determine the best fit for your business.
There are all integrations with shipping providers like ShipStation and others. These can offer a number of extra features including labels, packing slips, tracking numbers, and connection to multiple shipping companies (USPS, UPS, FedEx, etc).
When it comes to shipping, it’s about choosing what is best for your business. That may mean starting with a simple flat rate setup and once you are shipping larger amounts upgrading to a system with more functionality.
The goal of eCommerce stores is to get orders (unless you are using WooCommerce for a display-only store). So, how are you planning to handle things once you do get orders?
When orders are placed and paid for, they will end up in Processing status. This is designed to be the status where orders live until they are shipped. Once shipped, the idea is that you would mark the order as Completed.
If you have a store that does not ship things to a customer, then you may want to use a plugin to automatically change orders from Processing to Completed.
Note: most order status changes will automatically send an email to the customer.
Take a look at the official documentation for order management.
WooCommerce has quite a bit of reporting built in, and many of the report screens can be set up to download CSV reports (because your accountant probably loves spreadsheets).
With the built-in reports, you can get all sorts of useful information:
- Stock (if you are managing stock)
- Taxes (if you are collecting them)
Take a look at the official documentation for reports.
Of course, there are also integrations available with various 3rd party systems to send your WooCommerce order information elsewhere (which might be preferred by your accountant).
A lot of companies want to integrate their orders with a marketing system. This could be a CRM (customer relationship management) or an email marketing list (ie: MailChimp, Active Campaign, etc).
If you do want to integrate with an external marketing system, make sure that you think about how you want customers sent there. Do you need to tag them based on what products they ordered?
Like most of eCommerce, thinking about this and getting it setup right at the beginning can save you a lot of frustration later.
Most of the time with an online store, you want to receive payment at the time of purchase, however, that isn’t always true. WooCommerce comes with a number of options for collecting payment at the time of purchase or later.
These options are called “Check payments” and “Cash on delivery”. The names displayed to a website visitor on the checkout page can be customized easily.
“Check payments” is a very common one used for testing your eCommerce functionality. It can also be the right choice for some companies who need to collect alternate forms of payment or who need to verify information before accepting the order and processing payment.
If you are considering eCommerce, you’ve probably heard of PayPal. They are a major player in the world of eCommerce. WooCommerce comes with basic PayPal included.
Stripe is a very common choice, especially in the US, for processing payments. It runs the same pricing as PayPal & Square, but most people find stripe to be a little less temperamental than PayPal.
Square is another popular choice. Square is particularly good for companies who are not permitted by the terms of service for PayPal and Stripe. For example, CBD distributors are allowed on Square, but not on most payment providers.
There are LOTS of other payment gateways available. If you are already using a particular credit card processing vendor then they likely have a WooCommerce plugin available that you can use.
Cart & Checkout
Distraction free cart/checkout
There are plugins and themes which offer a “distraction free” cart & checkout. That means on your checkout it gets rid of sidebars, most of your website header (including your menu), and most of your footer. The objective is provide pretty much no other options besides checking out.
Whether or not you use this approach is entirely up to you. Many sites prefer to keep their checkout matching the rest of the site with the same header/footer, while others have found that there is an increased checkout completion rate if there are no distractions.
Some people want to customize their cart or checkout page. This can involve up-sells, down-sells, and cross-sells. It can also involve adding options to your checkout page for store specific items. For example, if you want to offer gift wrapping on your products or you want to offer “plain packaging” those options could be added to your checkout page.
A popular plugin for this is Checkout Field Editor.
User accounts at checkout
There are a number of options for user accounts at checkout.
Should they create an account?
Commonly businesses want to offer account creation at checkout if they are hoping to have repeat business. If what you are selling is one-off type of item, then you frequently don’t want to allow account creation.
Another scenario is if you’ve tied in additional functionality like eLearning to your website. If so, you probably want to force people to create an account at checkout.
Is an account required prior to checkout?
Requiring an account for checkout is used by some businesses. For example, if you are wholesale supplier you may want only people you have approved to be able to purchase through your website.
Do you need to integration with a 3rd party account system?
For some websites you may need to integrate with a 3rd party system to either authenticate an account or actually login with it.
There are a number of extras that are possible to add to your cart page, both displayed on the page and as added functionality.
A lot of merchants have heard of abandoned cart emails. Basically what happens is a guest visits your website, adds a product to the cart and then doesn’t purchase it. You may have even received emails like this from merchants before.
Abandoned cart emails can be useful, and they can also be a big waste of time. If you are a skin care vendor with a lot of regular repeat business, then your guests most likely have accounts with you and are logged into your website. In this case, you already have the email address of the person with the abandoned cart and therefore you can remind them.
Another situation is a one-off type of business. For example, if you are a furniture maker. For the most part, people buy the piece, and then are done. I have a beautiful Catskill Craftsmen kitchen island that I bought about a decade ago. But, abandoned carts probably wouldn’t be very useful as a lot of their products are a one-time purchase.
For abandoned carts to be useful to your business, you need to have visitors who are logged in when they create the cart. Otherwise you don’t have the ability to send them an email because you don’t have their email address.
The part of your eCommerce store you’ve been waiting for, products! There are a LOT of options available when it comes to products.
Categories, Tags, & Attributes
One of the first decisions when setting up your products is how to organize them. As a general guideline:
- Categories are for broad organization
- Tags are for details
- Attributes are for identifying useful/necessary information about a product.
To show how that all works out, I’ll give a simple example with a store selling t-shirts:
- Categories: plain, graphic. In this example there are only two categories, t-shirts are either plain or have graphics on them.
- Tags: christmas, retro, etc. In this example we’ll use tags to describe the themes of our t-shirts.
- Attributes: sizes, colors, fabrics. All of the details related to purchasing a t-shirt. People need to select their size, and what color they want. Additionally, t-shirts may have additional attributes like what kind of fabric they are made from. If you want to do detailed filtering based on attributes, then check out the FacetWP plugin.
Within WooCommerce you can set up a section called “Linked Products”. In here you can place your Up-sells and Cross-sells.
Up-sells are products similar to the product, but that you may want to buy instead of it. In many themes, these are shown on the individual product page.
Cross-sells are normally displayed on the cart page. They are products related to what was place in the cart. An example is if you are selling dance shoes, then a cross sell may be a carrying bag.
Related products are displayed on the product page by some themes. They are items, well, related. These are normally items which share the same category or tags as the current product. Depending on your theme, there may be options for configuring these, or setting them may require custom code.
For more information on what is available within WooCommerce, see their article.
Variable vs Simple Products
Some stores will have simple products and some stores will have variable products. Which is appropriate depends on your business.
Variable products have attributes which need to be selected in order to make a purchase. Simple products don’t.
Example: If your store sells t-shirts and people need to pick a size before adding to cart, then that’s a variable product.
Physical vs Digital products
Another question is whether your store will sell physical goods or digital goods. Some stores sell just one, some sell both.
In WooCommerce you can set up both virtual products & downloadable products (and of course a product can be both). If you set up downloadable products, the product will automatically have a download that is available once the person has purchased the product.
Since March 2020, much of the world has discovered that auto-ship is an essential emergency preparedness item. Didn’t have your vitamin’s on auto-ship? Well, stores were sold out for months.
Auto-ship is just another name for a subscription product. You subscribe to purchasing it on a set basis.
Subscriptions can be great for small businesses as they mean regular recurring revenue. But before you go offering it, make sure that your customers would actually want it.
If you’re a bookkeeper, your customers probably you want you keeping the books every month, and so would purchase a subscription. If you sell primarily one-time purchase products, then subscriptions won’t be useful.
One additional aspect is whether or not you want your website to actually sell the subscription. In some cases the business model may require additional vetting of the customer prior to purchase, so you may not to actually handle the payments through your website. In that case, you would probably display subscriptions on your website, but not actually sell them through your website.
There are a lot of plugins out there which offer “extras” on products. These could be something like engraving on a necklace, or gift wrapping.
A few common extras:
- Lightbox after add to cart
- Checkboxes or dropdowns for additional options (the difference between an additional option and a variation is that a variation is required to purchase, an additional option is optional)
- Product swatches
- Name your own price
- Calculators for prices depending on inputs
- Grouping of products
- Dynamic pricing conditions
- Many, many, more.
But the rule you need to remember: the more you add, the more complex things will be to manage long term. Also, many extensions can slow down your website on both the front end & back end.
How will they be entered/updated?
An always important question to ask is: who will enter your product information & who will update it? For some sites, this information rarely changes, for some it changes a lot.
Some people will need integrate with various 3rd party systems for product changes. Some people will want a custom “easy” approach for editing products (like a Google sheet which then connects with Zapier to WooCommerce for updating product details).
Another popular option is using CSV files to bulk import and/or update products. There are several plugins which allow for this depending on your needs.
Sales tax & VAT
The first thing you need to know about sales tax & VAT is whether or not you as the seller need to charge it. The answer is to ask your tax professional who is familiar with your country’s laws as well as the countries that you sell in.
Once you have talked to your tax professional, the next step is to actually charge your sales tax (if needed).
For most businesses in the US who don’t deal with selling physical goods the answer may be you don’t need tax calculations and you can just turn it off.
In the US, sales tax is generally collected on most physical goods and not collected on digital goods. But laws can vary and seem to be in a state of constant flux. For example, many states exempt clothing from sales tax, but not all, and not all clothing.
Charging tax in US
In WooCommerce there is a checkbox for turn on tax calculations. If you are going to be charging tax, you likely want this checked.
Tax rates can change regularly, and you do not want to be constantly sourcing tax rates and trying to update them. So for sales tax I recommend getting a plugin which will get rates for you.
- WooCommerce Services – this is a basic plugin from WooCommerce and is free to use for ONE state. For a number of small businesses they only have nexus in one state, so that is enough.
- Avatax – this is a paid service (they usually offer a free trial period) that can calculate taxes for many states. Pricing varies by usage. Typically, Avatax will charge you less for smaller businesses than TaxJar.
- TaxJar – this is a paid service which is what I recommend to larger clients as it offers a rather nice Accuracy Guarantee. They also offer Filing services and a Filing Guarantee. They offer a 30 day trial.
Charging tax on SOME products
If you have an online store with both taxable and non-taxable products, then you will need to setup multiple tax classes.
By default WooCommerce will set up a “Reduced rate” and a “Zero rate” tax class for you. You can go ahead and keep these and use them as needed. “Zero rate” is useful when you have some items which don’t get taxed anywhere. Just assign the product to that tax rate and you’re done.
Charging tax to SOME customers
Depending on the size of your business and who you sell to, you may need to deal with selling to tax-exempt organizations/customers. Depending on tax laws and your business status, you may need to deal with charging tax depending on the type of customer.
Out of the box, WooCommerce has a number of basic coupon functionalities. For a lot of stores, this will be plenty. But some stores need more robust coupon handling.
The standard WooCommerce functionality allows for a number of controls on coupons:
- Percentage or fixed amount discounts (ie: 10% off or $10 off)
- Coupons to expire on a certain date
- Coupons to begin on a certain date
- Minimum purchase for coupon
- Maximum purchase for coupon
- Individual use only (allow only this coupon to be used on the cart)
- Limit to specific product(s)
- Limit to specific product categories
- Limit to specific email address (you have a specific individual that you want to give a coupon for their exclusive usage)
- Limit number of total times a coupon is used
- Limit number of items that it can apply to in cart (for example allow someone to get 50% off only one item)
- Limit number of times someone can use it (ie: a given person using billing address firstname.lastname@example.org could only use once)
Special Coupon Uses
Some stores want more complex coupons. Frequently for those Smart Coupons is used to handle these more complex conditions.
- Free gift with product (automatically add an item to the cart)
- Automatic unique coupon codes for people who subscribe to mailing list (frequently this needs tie-in with your mailing list provider)
- Coupon with purchase (automatically give purchaser a coupon for next visit)
- Product giveaways
- Apply coupons to subscription products
Along the theme of coupons, some stores want to offer gift cards for either in person or online redemption. Before you go down the gift cards rabbit hole, you need to know exactly what you need in a gift card.
- In store and/or online redemption
- If using in store – how will the value card be redeemed?
- Use all at once or split (hint: most customers expect to be able to split)
- Do you need printed certificates or QR codes?
Website SEO & speed
Website speed is a rather important ranking factor for both search engine rankings, and more importantly, visitor experience.
A lot of people think that adding an SEO plugin means you’re done. When it comes to eCommerce, adding a plugin is only the tiniest tip of the iceberg. In fact, if you fail to configure it right, the SEO plugin could actually hurt you.
Most WooCommerce websites need a specific eCommerce SEO plugin, as well as correct configuration for things like schema data.
RankMath has a very good (and detailed) guide on WooCommerce SEO.
eCommerce schema data
Schema data is the information that search engines use to create pretty results in their listings (ie: the rating stars and price info displayed right in search results). Many plugins can do it, the question is how well and with how much configuration.
I personally use and recommend RankMath’s Pro plugin (the free version does have a LOT more than other free plugins).
For more information, read the detailed FAQ post on schema.
One of the first things you need to do is get your images optimized. There are several quality image optimization plugins out there, and while each has their pros/cons, the important thing is getting your images optimized.
I’ve had people who couldn’t decide between plugins and ended up with no plugin. And then when I took over management of their site I ran one on it and took over over 2.5GB of content – literally reducing their image library by 70%.
They had gotten stuck in analysis paralysis and done nothing debating which might be better. The difference between top plugins would have been whether they got 70% or 71% or maybe 72% improvement. Any of the options would have gotten them over 70%.
So my point is, pick one. It doesn’t have to the absolute best. Any of them are going to do a good job, and a good job is a heck of a lot better than nothing.
Now, a quick note about all of the following – they require some sort of subscription. They will also be optimizing ALL of your image sizes. So if your WordPress install has 10 image sizes defined and there are 20 images in your library, then you are likely going to be shrinking 200 images total.
- Shortpixel – You need an API key, your first 100 images per month are free. They have monthly plans and one-time plans. Most website owners end up with a one-time plan.
- Imagify – You need an API key. They have monthly plans and one-time plans. Most website owners end up with a one-time plan.
- TinyPNG – You need an API key, but your first 500 images per month are free. You are charged by your use, so you are just billed for what you use.
- Smush – Don’t use their free plugin, they’ve stripped a lot of important features like full size image compression out. Monthly prices are similar to Shortpixel & Imagify, except they don’t have monthly limits like the other two do.
Caching & Optimization
Now that your images are shrunk (that is seriously the #1 biggest thing I do on any site I optimize), time to cache & optimize!
Caching is basically saving a copy of your webpage fully loaded.
Optimization is compressing and combining all of your page resources to reduce the size and number of resources it has to load. Think about it this way: it’s faster to put your groceries in a bag and just carry the bag than to try and juggle 15 different little items. Same is true of your website.
When working with WooCommerce sites, the best optimization plugin I’ve found is WP Rocket. There are others which can do a bit, such as Autoptimize, Cache Enabler, and Breeze. But the reality is, WP Rocket has produced better results on every site, and it plays particularly well with WooCommerce.
Anywhere you don’t want to cache? Absolutely. You don’t want to cache your cart or checkout pages. By default WP Rocket doesn’t cache them. If you are using another plugin, you may need to specify where you don’t want to cache.
Removing un-needed scripts
Another item for eCommerce stores that can help with speed, but can also lead to a lot of problems if not used carefully is un-loading scripts. For example, if there are a number of pages on your site that don’t need to load the WooCommerce scripts, then not loading those scripts can speed up those pages.
Similarly, not loading scripts for something like an image gallery plugin on your WooCommerce pages can speed up your eCommerce pages.
The sky is the limit on customizations that are possible, but remember the rule: the more you customize, the more you have to maintain going forward.
Here are some of the most common customizations that I get asked for.
Many people want their order emails to match their company’s branding. For basic overall customizations I frequently use the Branda plugin (as this also allows for some convenient options like a cookie notice).
For more detailed customization, you can copy the WooCommerce templates into your custom child theme. For a more detailed discussion on what is available, please see the post.
Generally speaking, email customization doesn’t require a lot of maintenance going forward. The email templates are not regularly changed.
A lot of people want to customize the display of their products on their website. There are a lot of plugins which offer additional display options, and there are a lot of themes for WooCommerce which have specific features for customizing various WooCommerce pages.
If you want more customization, you can copy the plugin templates to your child theme (make sure to copy from your parent theme if your parent theme has overridden the file). For more information, see the template structure.
Product filtering is a request that a lot of eCommerce stores have. They want customers to be able to select options similar to big name stores like Target and Amazon. For this filtering I generally recommend FacetWP.
Bulk purchasing is offering discounts for large volume purchases (or only allowing large volume purchases). For some people
Depending on your business model, you may want to offer certain people with pre-approved accounts to have special pricing, or even access to a special list of products for purchase.
Affiliates or Vendors
Do you have anyone that you need to pay when a customer makes a purchase? These are commonly either affiliates or vendors.
Affiliates get paid when they refer you business. If you need to pay affiliates, then you will need to give out special URLs to these affiliates so that their sales can be tracked and you’ll need to have an affiliate plugin on your website to appropriate pay them.
There are several affiliate plugins to choose from, but AffiliateWP is a well known and popular one.
Vendors are popular for marketplace type of websites. If you have other people selling their products on your website, then you will typically take a commission from each sale. In this case your vendors all need to be able to log into the website and manage only their products.
You’ll need to compare various vendor plugins to make sure that they meet all of your needs. I recommend testing out a couple of solutions on staging websites as they can have idiosyncrasies which don’t show up initially.
3rd party Integrations
If you have a simple store, you probably don’t need to integrate with anything. But, if you have other websites or systems you may.
Accounting and/or Financial systems
Many people need to integrate their online ordering with their accounting system. This is particularly important for people who have a dedicated bookkeeper or who have offline sales that they need to keep track of with their online sales.
A number of the more popular accounting applications have integrations with WooCommerce, for everyone else you end up using an integration like Zapier.
Some common plugins which integrate with WooCommerce are eLearning, Event, and Membership plugins. These frequently grant access to private areas of your website based on purchases.
Zapier, IFTTT, etc
Another common situation is needing to send purchase information to a 3rd party service. Services like Zapier and IFTTT (and others) have the ability to send order information elsewhere.
A common use would be if you had an eLearning site setup and you needed to create members on it based on WooCommerce purchases.
You can also input data into your eCommerce website via 3rd party services and their integrations.
eCommerce Checklist & wrap up
Congratulations on making it to the end of this very long article! As you can see, there are a lot of things that you need to think about before you even start to build your eCommerce store. Most people find for building their store that they want to get a professional developer involved.