e-Commerce building blocks

I’ve been working in e-commerce for a good few years now, for very similar companies (early stage, fast fashion focussed) and there’s always the same sorts of problems to solve. Here’s a very basic, very generic guide to the things you need to get up and running. Each bit has a ‘too long / didn’t read’ summary at the end, so you can just look for those if you don’t like reading. Please note that this is entirely my opinion, I don’t get paid by any of the companies I mention (although I am totally open to bribery. Seriously guys, hit me up.)

I’m going to split this up into a few different sections:

Your website

Your logistics (warehouse etc)

Your customer service

Internal IT / infrastructure

Data / Reporting

First up…..

1: Your Website

For a pure play, online only e-commerce company your website is your only source of revenue and yet so many companies don’t pay enough attention to this during the early, start up days. A bad decision here can mean months of lost ground as you migrate from one solution to another. As it stands today (January 2018) there’s only really 2 major players in the ‘ecommerce platform’ game, ‘Magento’ and ‘Shopify’, but there’s some fundamental differences between the two that you need to understand before picking one.

Magento

What is magento?

Magento is an e-commerce platform which has been available since 2008 and has a vast number of sites running on it. It’s available in 2 editions ‘community’ which is free and unsupported, and ‘enterprise’ which is the paid for and supported version. Many small ecommerce businesses choose to run Magento community as it’s free, but remember that you’re only getting the software for free… you still need to pay for (and find) hosting and you will definitely need in-house technical support for any customisations you want to do (see below). In 2015 Magento released v2.0 of their platform. Although it keeps the same name, Magento 2 is a completely different platform to Magento 1. Custom modules aren’t transferable, an upgrade from v1 to v2 is more of a . migration than an upgrade and in general it should be treated as a new and different platform. Having said that, the strengths and weaknesses of Magento 1 also apply to 2 (see below).

Customisation

One of the core strengths of Magento is that, as a self hosted open-source platform Magento is extremely customisable. You can change literally anything about how the system behaves, you can even use magento as a framework and build your own ecommerce platform on top of it. Another benefit of Magento is that many of these customisations are already available to you via the Magento Marketplace, an ‘app store’ for magento modules from which you can download and install thousands of different modules for your store. However, these modules aren’t verified or checked by anyone, so you need to be wary of performance problems which can result from a wild module installation rampage. You will, 100% definitely need an in-house magento developer if you want to run magento.

tl/dr: Magento is incredibly customisable, but you definitely need access to a magento developer.

Development / language

This is probably something you haven’t thought much about (unless you’re a developer, in which case you can probably skip this bit), but the language that a platform is written in, or at least the language you need to customise it, is hugely important. The popularity of that language amongst developers dictates how easy it is to find developers for example. Magento is written in PHP, one of the (if not the actual) most widespread and popular web development languages. Historically PHP has had its detractors, but in recent years its matured into a (relatively) decent language and its widespread adoption means that PHP developers of all levels of quality can be found everywhere. You’re probably within 100 yards of at least 2 php developers right now. Magento is built on top of a framework (Zend) that itself is built on PHP, but if you know PHP you can pick up Magento pretty quickly without worrying too much about the Zend framework…. what does all that mean? Well:

tl/dr: PHP developers are easy to find, and can learn Magento reasonably quickly.

Hosting

If you decide to use the community edition of Magento, you’ll need to arrange (and pay for!) hosting of your magento site yourself. If you decide to go for the Enterprise edition you can opt to include hosting in the price (see links and costs below) which might work out as a better deal once you factor in support for that hosting solution. If you decide to host yourself (and have in-house technical resource) Amazon web services is a good solution, you can configure your hosting to scale up / down as demand changes so you only ever pay for what you’re using….however, you really need a good infrastructure or dev-ops technician before you even think about setting up an AWS solution. Other hosting options I’ve dealt with in the past are UKFast (good support, reasonable pricing) and Sonassi (specialist magento hosts, support only available in office hours but very knowledgable). Hosting costs vary wildly based on your level of traffic, but in general Magento is quite a ‘heavy’ platform to run…expect to be paying between £500 and £1000 per month for a site handling 100 or so orders per day and anything up to £10k a month once you get into tens of thousands of orders per day.

Magento 1 or 2?

As I mentioned earlier, Magento has been available since 2008 and is now up to version 1.9. However, in 2015 the long awaited rebuilt and modernised ‘Magento 2’ was released. Currently both versions are available and supported with security patches and updates, although if you sign up to an Enterprise plan you’ll only be offered version 2. At the moment it’s difficult to know which version of magento to recommend. v1 will get security patches for ‘at least’ 18 months (although no firm timeline has been set yet), it’s a much more mature platform, with a much wider range of 3rd party modules and fewer unfixed bugs. v2 by contrast is still fairly new, with new bugs being found on a daily basis. Having said that, many people are running v2 and managing to avoid the bugs and, in theory, Magento 2 is a much more robust platform built around more modern development practices. If you’re setting up a new store from scratch, Magento 2 is probably the way to go given its longer term prospects…. but make sure you have competent technical support in place before making this decision!

tl/dr: Magento 1 & 2 both have their problems, but there’s more chance of the problems being fixed on version 2 as version 1 is being phased out.
If you’re determined to use magento, 2 is the way to go.

Shopify

What is shopify?

Shopify is a cloud based, ‘software as a service’ (SaaS) ecommerce platform. You pay a monthly fee for access to the platform and additional fees for using 3rd party payment gateways (so if you want to use ‘Stripe’ for example, there’s an additional charge for that). Even the most expensive plan at $299 per month comes in cheaper than decently powerful hosting for magento (community edition) though, and remember that you never have to worry about hosting issues as it’s all handled by Shopify…so you don’t need an infrastructure specialist / devops person in-house. That $299 does come with some downsides though, including….

Customisation

One of the downsides of a SaaS platform is always going to be a relative lack of customisation compared to a self hosted platform, open source platform. Shopify can’t avoid this entirely, and if you stick to the basic ‘Shopify’ product you’re extremely limited in what you can customise. If you only ever want to change the theme (look & feel) this is fine, but to implement more complex, custom business logic you’re going to have to look at ‘Shopify plus’, the enterprise version of the Shopify platform. Shopify Plus allows much more customisation, not quite down to the ‘bare nuts and bolts’ that magento allows but more than enough for most business cases (see link below). However this customisation comes at a cost, Shopify plus plans start at $2000 and go up from there based on expected traffic etc (That’s still cheaper than Magento Enterprise + hosting though!)

Development / language

Shopify isn’t written in PHP. Or it might be. The point of a SaaS platform though is that it doesn’t matter what it’s written in, you never get to see the application code so you can think of it as a black box. For basic changes to templates, there’s a built in ‘wysiwyg’ type editor that allows non-technical types to make simple changes. For scripts and template logic Shopify has its own ‘liquid’ templating language which uses special tags to pull dynamic data into your templates. For more involved customisation you can use special javascript tags to run remote code in your shopify templates…. going into more detail on this is probably outside the scope of this article, but in general..

tl/dr: You need a javascript developer (note: not a front end designer) for anything more than very simple customisation, and there’s going to be a learning curve there.

Vendor lock-in

Here’s where things get interesting, or a little abstract (depending on your perspective). If Shopify (the company, and the platform) disappear tomorrow, you’re up a proverbial creek without a paddle. All the code and data for ‘your’ store was on Shopify’s servers, you now have no way to access it. Compare this to Magento where, unless you’re paying for the enterprise hosting deal, if Magento (the company) disappeared tomorrow your Magento instance would continue running on your servers without a problem. That’s an extreme example, but it also applies to things like pricing (Shopify increases their prices by 1000% tomorrow, what do you do?) and on a related note even things like performance (Shopify platform speed drops by 50%, Shopify don’t acknowledge a problem… what do you do?). The basic concept here is control. With a SaaS platform you don’t have to worry about a lot of the underlying mechanisms of a web platform (servers, caching, language etc) but the trade off is that you lose some of the control over those things. That might be a problem, or it might not be… but it’s something to be aware of regardless.

tl/dr: If you go with Shopify (or any SaaS platform) be aware that you’re giving up some level of control.

Conclusion

Full disclosure time, I started this section confident in the knowledge that I was going to recommend Magento. I’ve been a magento developer for many years, I’m a big advocate of open source technologies and in general I don’t like the idea of running my mission critical sites on someone else’s platform. However…. I currently find it really hard to recommend anything other than Shopify. If you’re just starting out, go with the basic ‘Shopify’ platform, use the wysiwyg editing tools to make it look vaguely how you want and focus more on your product / marketing than your website. Once you start to scale, and hit the limits of Shopify’s customisation options switch up to Shopify plus, get yourself a developer and tinker to your heart’s content. At the moment, Magento just doesn’t have a compelling counter argument. Magento 2 is (still) pretty buggy, and Magento 1 is coming to the end of its life.

tl/dr: Magento has had its day, Shopify is what every new ecommerce business should be looking at.