This morning, I participated in Jason Tucker‘s WPWatercooler podcast program. The topic of discussion was e-commerce plugins for WordPress.
I’ve worked with several shopping carts for WordPress. These are all complicated plugins, just due to the fact that shopping carts are not easy. They require a large amount of code just to make the products show up on the page. You need to be able to handle variations on products (a T-shirt size, color, style and so one — all of which could effect the final price of the product being purchased), different types of products (shipped products, digital downloads, seats at a conferences, subscriptions), the ability to search for products, categorize them, etc. All this before you get to payment gateways, shipping modules and interactions/messages to your customers. There’s just a lot of work that goes into them. So it’s no surprise that every shopping cart solution have their own areas where they work well or have limitations.
I’ve done enough work with the Shopp Plugin to know my way around it now. For the most part, I’m pretty happy with it. I’ve used their internal APIs that allow you to programatically create products, add pictures to them, update prices, taxonomy, and more. They also have their own events that get fired off during the purchase process, so you can do things at certain points such as when a product is purchased, or just added to a user’s cart. There’s a lot in there and they give you access to everything so you can build your own plugins and extend Shopp’s capabilities. This makes Shopp, in my opinion, one of the more extensible shopping cart plugins. I haven’t worked enough with the WooCommerce plugin yet to know what APIs are available, but I imagine they have them — I just don’t have as much experience with them to know that they are well documented. (Looking on the WooCommerce site, I don’t easily find a lot of documentation like this.)
The availability of these APIs and their documentation are what I look for first. This is because almost any customer I work with is likely going to need things that are not available in the standard shopping cart. If they were available, they’d just download and install the plugin themselves — they wouldn’t need me. They’re contacting me because they need non-standard, custom work added to their shopping cart. And if this custom work is going to be difficult to create because the APIs are not available or are poorly documented, making these customizations becomes very difficult and time consuming, and therefore expensive.
So you might read this and think I’m a big fan of the Shopp Plugin. I am, but I don’t look at any one solution as the only solution that I use. I often use the phrase “use the right tool for the job.” In this case, knowing what the limitations of a plugin are can be a big deciding factor in which plugin a customer needs. And I recently ran into a very big limitation with Shopp: subscription products.
The Shopp plugin itself does understand subscription products. You don’t need to buy an extension to enable this functionality like you do with WooCommerce’s Subscriptions Extension. The problem comes in with the payment gateways. Shopp offers 32 different payment gateway options. But I have only found one of these that work for subscription type products: the PayPal Standard gateway. And the problem with that is, it requires your customers to go through the PayPal web site in order to process their payment. This can be confusing to some users. An on-site solution, where the user never leaves your site and goes to another payment processor’s web site is a better solution. Worse than that, if you have a payment gateway installed and your customer purchases a subscription product, it happily processes the transaction. Nowhere do you or your customer get any indication that a subscription isn’t created. So you get paid for the first month of the subscription and you think everything is fine, but the following month you could be sending new products or delivering new material to your customers and they’re not paying for it. This kind of “silent fail” is just not acceptable as far as I’m concerned. It’s bad enough that it doesn’t work, but it acts as though everything is working correctly.
Knowing that one e-commerce solution has some deficiencies may make you want to look more closely at the alternatives. A natural conclusion. So you might start looking at WooCommerce. But you need to be aware of WooCommerce’s business model. The shopping cart itself is free, you pay for the extensions. That makes sense and might make you think that because it’s free it will be cheaper. The problem with WooCommerce is that it’s stripped down. A simple site can probably use just get the free shopping cart and purchase a payment gateway extension and be ready to go. But as soon as you need to add anything, you’re looking at buying extensions. And everything is an extension: Subscriptions, Limited time deals, Email Marketing, Wish Lists and many more. For a typical set of features you could end up requiring several of these extensions totaling hundreds of dollars. Okay, sure – these costs are passed on to your customer. But it’s a harder sell to your customer when you need to purchase an Extension to the shopping cart only to find out that it doesn’t really solve the problem you need because of some unique requirement that your customer has. I don’t mind paying for add-ons and extensions to the shopping cart as these can save a lot of time. But often times you won’t know whether or not the extension is really going to solve the need you’re trying to address. I’d prefer a try-then-buy kind of approach. But these guys need to recoup the time they’ve put into building the shopping cart. I get that.
As I said, shopping carts are a lot of work. Not only do they often require lots of customizations in order to fit with your customer’s business model and processes, but they’re very complicated. This means a lot of code has to be written and that code needs to work well with the current version of WordPress as well as future versions. So it needs to be extremely well thought out and well written and employ all the best practices of writing good plugins for the WordPress platform. It’s bad enough when your email marketing plugin doesn’t work after an upgrade, but to have your shopping cart shutdown after an upgrade makes customers very unhappy.
I don’t think there’s any one shopping cart that will work for every situation. There are just too many variables. Depending on the customer’s needs one may be a clear winner but you might also fine a clear looser and therefore need to go with a shopping cart that might not otherwise be your first choice. I wish there was an easy answer as to what the best solution would be, but that’s not the case. Your best bet is to become as familiar as possible with as many of these plugins as possible so you have a better idea of where their strengths and weaknesses lie and therefore be better able to help your customers make a good decision on which one to use.