E-Commerce: SAAS or Self-Hosted

There’s lots of information on the Web about how to dive in and open an e-commerce shop. But there’s not much information about what the consequences are if you follow one option rather than another. Read on and you’ll see what I mean.

For the self-hosted option, I am only going to talk about WordPress and WooCommerce. There are other e-commerce solutions for WordPress (such as Ecwid, WP eCommerce, Cart 66), and there are other non-WordPress e-commerce systems (such as Magento) but the principles are the same for any self-hosted option.

A Domain Name And A Website

To run any website, including an e-commerce shop, you need an address (a domain name) and you need the software to run the e-commerce. You can do that by using ‘software as a service’ (SAAS), or you can run it self hosted. 

They each have their strongpoints and disadvantages.

Option One: Software As A Service (SAAS)

With SAAS, you pay a provider a monthly or yearly subscription to rent space on the provider’s servers using their e-commerce software.

Your subscription gives you access to whatever e-commerce features and layout and design choices the provider offers.

The SAAS provider takes care of the behind-the-scenes stuff. That includes looking after the e-commerce software; looking after the payment system so customers can pay you; looking after the server and the server software that underpins the e-commerce software; and looking after the security features shielding your shop and all the other shops on the server from getting hacked.

One of the downsides of SAAS is that if the provider doesn’t provide the feature you want, then you can’t have it.

You cannot get to the code that powers the service. It belongs to the SAAS provider. You cannot modify it or add to it. You can only take it or leave it. Of course, if the provider has thousands of customers like you then it probably has all the features you want.

Or maybe not. What if you are an edge case? What if in your particular market it is standard for all products to be sold in sixes, and to disallow a customer to buy four or five or a particular product?

If the SAAS provider doesn’t give you the ability to choose this feature, you can’t.

Examples of e-commerce SAAS providers

Shopify, Squarespace, Big Commerce, Paddle, SupaDupa, BigCartel, Create•Net, StoreEnvy, TryKong, nuMonday, and the WordPress-dot-com Business Plan.

The last time I made a list of SAAS providers was October 2017, and Highwire was on the list. Their server is down at the moment, or maybe they went out of business.

I will check again before posting this, but it highlights one of the problems with SAAS providers: What have you got left if the provider goes out of business? Answer: Nothing. 

You’ve got nothing because the provider owns the e-commerce software, and if they stop then you don’t have a shop.

Maybe I am blowing this up too much, because Shopify and Squarespace show no sign of disappearing.

Looking at the other side of the coin, what happens if you stop paying your subscription? If you stop, then your shop shuts down. You cannot take it with you because the software is the property of the provider, located on the provider’s servers.

A side note

I work on the principle that if there are any free e-commerce services out there where I can set up an additional outlet, then why not?

I had a shop on Tictail. I shut it down because I found the back end confusing and more trouble than it was worth. 

I am mentioning it because I just took a look and Tictail is now part of Shopify. For me that’s another example of danger of the ground shifting under your feet when you run your business on someone else’s system.

About Domain Names

I have heard people say that they still have the domain name and it is true. But a domain name is just an address: It is not the working shop itself.

Where You Buy Your Domain Name

If you do want your own domain name (and why wouldn’t you?) then I advise that you buy your domain name from a domain registrar and not from whichever e-commerce web host or SAAS service you sign up to.

Buying from a domain registrar is cleaner – as long as you pay the registration fee each year (typically around $15.00 a year) you can change services (SAAS or self-hosted web host) without having to negotiate the transfer of the domain name.

SAAS with an ‘export’ option

The WordPress-dot-com Business Plan is an SAAS service like Shopify or Squarespace, or Big Commerce – with one difference.

Because the e-commerce is powered by WooCommerce, you can export is to a self-hosted site if you want to do that later on.

That’s because WooCommerce, as well as being owned by Automattic, the company that owns WordPress, is available for self-hosted sites. It’s the most popular e-commerce solution by far, and the one I am really familiar with.

With the WordPress.com Business Plan you can use your own domain name, use any of their premium themes, add plugins, change the CSS, set up WooCommerce, and set up Google Analytics. It also offers unlimited storage, but I can’t see that being an issue because it would take a huge shop with many thousands of products to make storage an issue.

The WordPress.com Business Plan didn’t exist when I started, but if I was starting now I would consider it.

Option Two: A Self-Hosted Site

The advantage of a self-hosted sites are that it’s yours. You rent space on a web host, and if you want to move to a different web host you can take your shop with you. If you take regular backups, you can move at any time.

The second advantage is that because the code is yours, you can change it, add to it, and do anything you want. And if you don’t have the technical expertise to add some code then you can hire someone who can. And, there are many plugins and extensions that already exist that will enable you to do pretty much anything you want.

Setting up a site is very easy now with one-click scripts to set up WordPress, and wizards to walk you through setting up WooCommerce.

The Downsides To A Self-Hosted Site

So what are the downsides to a self-hosted site running WooCommerce?

If I was starting today, I would chose a good web host that specialises in WordPress. I would pick a plan with that host that allowed me to run a few shops.

Then I would buy a domain name to practise on, any name will do, and set up a shop. And practise. If I made a mess, I would strip all the software out and start again. Once I felt confident, I would start to build the real shop.

With practise, you can have a shop up and running in half an hour. Then you can start adding products.

And if you want to sell wholesale, there are extension to WooCommerce that enable you to do things like restrict access to approved buyers, etc.

But security is your responsibility. Download a dodgy plugin or a theme you saw on some dodgy site – and you run the risk of getting hacked.

Forget to update the themes and plugins promptly, and you run the risk of getting hacked. 

Use easily-guessed simple passwords and you run the risk of getting hacked.

It sounds worrying, but the solutions are straightforward. Stay away from dodgy stuff, keep the site up to date and protected with strong passwords, and ring fence your site with a good security plugin like WordFence.

Option Three: Headless E-Commerce

With headless e-commerce you have a site of your own (the front end or presentation layer, as it is sometimes called) but in the back end you connect to a SAAS such as Shopify. A visitor clicks on a product they want to buy and that takes them through to Shopify to complete the purchase.

That system gives you freedom to design your site without thinking about how it has to tie in with an e-commerce system built into the site. It’s still the case that if you stop paying the subscription to the e-commerce provider then you only have a nice-looking site but no way to do business on it. But you do have something that looks like a shop, and you can perhaps switch e-commerce providers.

Web Hosts

A good web host will help your site load fast; take regular backups; and make backups available so you can copy them somewhere else – on your hard drive and on something like Backblaze or AmazonAWS.

A good web host will have a good support system with people who run the business and understand their own hosting setup.

A bad web host will overstretch resources, fail to guard your site from having its resources hogged by another site on the same server, and even let in a hacker via the level above your site on the server.

One of your most important decisions is the web host you choose. To find a good host, look at the benchmark tests and the recommendations on Review Signal.

Please note those are affiliate links to the WordPress.com Business Plan

Adding A Second Business To A Stripe Account

When you log in to your Stripe website and go to add a second (or third) business to your Stripe account in WooCommerce, you are asked to activate it.

You might wonder why that is when it is tied to the same Stripe account. In fact, that’s the way to do it.

You input your business name and address. And then it comes to the part where you input your bank account details.

The question is, what happens if you want to use the same bank account as for your other account?

To put it in context: If the new business is in the same line as the existing business, then it fulfils the criteria for the bank.

And when starting a new business, there is no way you would want to open a new bank account for something that might come to nothing. 

So you want to use the same bank account. Does Stripe allow it?

The answer is yes, and you will find the information in the documents at ~/docs/multiple-accounts 

Payouts to separate bank accounts
Each additional account can use a separate bank account for payouts (although you can use the same bank account if you wish)

Running The WooCommerce Setup Wizard

If you skip the setup wizard when you activate WooCommerce, a number of pages will not be created. If you go to WooCommerce/Status you will see that the following pages are not set:

  • Shop base
  • Cart
  • Checkout
  • My account
  • Terms and conditions

They are all special pages designed with WooCommerce shortcodes. If you skipped or missed the setup wizard when you first downloaded and activated the plugin, you can restart the wizard at any time by going to:

~/wp-admin/?page=wc-setup

WooCommerce Bot Purchases

I haven’t had this problem, but I saw it reported. The problem is bots making purchases using invalid credit card credentials. The poster wondered how this could be mitigated and the reply was to use the plugin Advanced noCaptcha & invisible Captcha with invisible captcha enabled.

It is directly on the checkout page and blocks orders that it registers as bots.

I looked up the plugin (it is the WP repository) and it describes itself as being able to show noCaptcha or invisible captcha on various pages, including WooCommerce, Login, Register, Lost Password, Reset Password, etc.

Hide Product Categories

admin on January 11, 2019

If you want to pre-approve your customers (such as in a trade-only shop) then you might want to disable the visibility of pricing as the ability for visitors to buy your products.

Catalog Visibility Options

The Catalog Visibility Options plugin will do this and also let you choose which user roles can see products and product categories. 

Therefore, if you want to take a category out of the shop, use the plugin to do that.

PHP code

Otherwise there is this code that I saw on Business Bloomer but the code was in the comments, and is from Jonathan from Inspired Earth

function custom_pre_get_posts_query( $q ) { $tax_query = (array) $q->get( 'tax_query' ); $tax_query[] = array( 'taxonomy' => 'product_cat', 'field' => 'slug', 'terms' => array( 'CATEGORY-TO-HIDE' ), // Don't display products in the this category on the shop page. 'operator' => 'NOT IN' ); $q->set( 'tax_query', $tax_query ); } add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );

Here is the raw code

Where to put the code

I use the Code Snippets plugin (it’s in the WordPress repository) to contain snippets of php.

Sorting WooCommerce Products

Using the Gutenberg plugin on a blog is one thing: Using it on a WooCommerce site is another. So while I have been using Gutenberg since January 2018, it was only couple of months ago that I activated Gutenberg  on a WooCommerce test site.

I did it when the people at WooCommerce released the WooCommerce Gutenberg Products block plugin.  It was clear how to use Gutenberg to import product images into posts and pages.However, there was no ‘Gutenberg action’ on Product pages.

I thought it might be that the theme I was using was not yet G’berg compatible but it was the same on the 2017 theme, so I switched back.

I asked in the Facebook WooCommerce Help and Share group and was directed to what Mike Jolley said back in May:

Since WooCommerce is not optimised for the Gutenberg editor we’ve decided to keep the old editor for now so sites do not break when WordPress 5.0 is released. Products are not content focussed so using Gutenberg with our meta box placed awkwardly at the bottom is not ideal.

And back in February, Cladiu Lodromanean said:

It’s just temporary until we develop nice Gutenberg-compatible screens for Products/Orders/etc. When Gutenberg is merged into WP core and released we will be ready with the Products block in WooCommerce 3.4 but editing products and orders in Gutenberg will come in a future WooCommerce release.

It won’t be until next year that the people at WooCommerce will be working on using the block editor for products.Meanwhile, even on normal posts and pages, what you still cannot do is order the images with drag and drop. We are restricted to the old ordering system.

If you ask why drag/drop and the ability to move images around is important, look at it from the point of view of the site owner and a customer.

The site owner wants to present the products in the way he/she wants – maybe arranging by colour. And the customer wants to see the most relevant presentation according to the product.

The ‘old’ (current) ordering system allows site owners to list product images by:

  • default sorting (custom ordering + name)
  • Popularity (sales)
  • Average rating
  • Sort by most recent
  • Sort by price (asc)
  • Sort by price (desc)

You can change the order of display under custom ordering by going to WooCommerce > Settings in your WordPress admin. On the Products tab, the Display settings should be set to Default sorting (custom ordering + name). If it is not, then change it to that first.

Then, in the Products admin panel, select Sorting (see the image at the top of this article) and then drag and drop your products in the order that you’d like.

If you have got a lot of products, then it’s not realistic to drag a product up or down hundreds of rows to where you want to place it.

An alternative is to order the products in the Quick Edit menu by changing the order value. The default is zero. Change the numbers and the custom order will display the lower numbers first (negative numbers are allowed).

You can also edit the order value in the Product Data > Advanced tab on the product edit page.

Sounds good, but you have to hold the numbers in your head while you sort them.

There’s a bigger problem though, and that is that custom sorting is applied against all items and not against separate categories, and in all places where the products show.

That may not be what you want. You may want products to show up in a different order in different sections of your site.

For example, you may want to showcase eight products in a blog post and you may want to arrange them in a specific arrangement so that the order complements your text. You can do that, but then that order will apply everywhere the products show.

Only being able to arrange products by date uploaded or the ones with the most sales, etc. is a limitation that doesn’t fit with what store owners want and need. And custom ordering has its own shortcomings.

I asked James Koster of WooCommerce about the capability to drag images around. He replied saying that eventually drag/drop will be a feature, but as it had only recently been added to Gutenberg core,  they are yet to work on their own implementation for the products block.