For anyone interested in selling WooCommerce products, I wanted to share some thoughts on the process.
Coming Up With A Product
The extension idea originally came out of a client project. A company I worked with acquired a lot of their new customers through Facebook advertising, and they wanted a way to offer those new customers a big discount on their first purchase.
The first version of the extension took a couple days to build. It simply added a checkbox to the coupon editor for marking coupons as “new customer only” and validation on checkout. From that basic idea, I then started to add other restriction options I thought would be useful.
WooCommerce client work is great source of extension ideas because it requires solving a real need for a customer (and is something they’re willing to pay for).
To get the extension idea accepted to the WooCommerce Marketplace, I also had to prove that others wanted this functionality. Luckily, a number of people had also requested this on the WooCommerce idea board as well.
I’ve been working with a “Trial Product” in a WooCommerce store which needs to be the only item in the cart during checkout due to shipping requirements (and because it doesn’t make sense to order a trial if you’re also going to order the actual product).
To make this clear to the customer, I’ve restricted what can be added to the cart in specific situations:
1) If the “Trial Product” is already in the cart, additional products should not be added. WooCommerce will instead display a notice asking the customer to remove the “Trial Product” from their cart if they wish to add different products.
2) If products are already in the cart, and the customer attempts to add the “Trial Product”, a notice will display asking the customer to remove the other items from their cart first.
WooCommerce sites are made up of a complex set of integrated parts. There’s WordPress, WooCommerce itself, other third-party plugins, and a theme. Each of these components require frequent updates and has the potential to break critical functionality on your site. This is why it’s critical to have automated tests.
For a WooCommerce site I used to work with, we had a checklist of items we would manually run through after any major update:
Verify products on home page look correct and load
Test “Add to Cart” button
Test removing item from cart
Verify all product on /shop page look correct
Test complete checkout with Stripe for guest checkout
Test complete checkout with PayPal for guest checkout
Test complete checkout with Stripe with coupon for guest checkout
Needless to say, this took a lot of time. Thankfully, tests like this can all be automated using Ghost Inspector.
In WooCommerce subscription products and standard products can’t be combined. For example, if you’d like to offer customers the option to purchase coffee as a one-time sale or as a convenient monthly subscription, you’ll need to create two separate products on the backend (even though it’s essentially the same product and SKU).
If you’re SEO focused, this might be a concern in terms of duplicate content and splitting page rank. For customers, this also isn’t a great experience. If a customer lands on the one-time product page, they might not know about the subscription option (and vicea versa).
A better example of subscription user experience is Target. If a product offers a subscription option, there’s a radio button toggle with a discount clearly highlighted. Turns out, with a little work, this is also possible to do in WooCommerce. Continue reading →
A former client contacted me this week because they were thinking about switching platforms for their ecommerce store. The site had originally been built on WooCommerce but they were now considering a switch to Shopify. The main issue is they didn’t want to have to rely on a developer for site updates and wanted a solution they could more easily manage themselves.
To answer their questions, I signed up for a Shopify account and then went through the technical and business requirements one by one. If you’re trying to decide between Shopify and WooCommerce, hopefully some of these notes are useful.
I am completely new to PHP unit testing, but I decided it was time to learn after discovering a critical bug in a small WooCommerce extension I had built for a client.
The extension I built added a feature that allowed administrators to limit specific coupons to new customers only. I had done some manual testing and made sure that new customers could use the coupon and existing customers could not. But there was a logic bug I missed that prevented existing customers from using any coupons, even ones that did not have the “new customer” restriction.
After finding the bug, I knew there were several use cases I would need to check every time an update was made to the plugin:
New customer should be able to apply a coupon
New customer should be able to apply a coupon with a “new customer” restriction
Existing customer should be able to apply a coupon without a “new customer” restriction
Existing customer should *not* be able to apply a coupon with the “new customer” restriction
Obviously, checking this manually each time would be rather tedious- which is why I turned to unit tests.
One of the most difficult decisions I face when building a new theme is which customization options to include.
It’s an incredibly difficult feature to balance. Customization options can make it possible for a single theme to be used for a greater variety of websites (which is good from a sales perspective), but it can also make a theme more complex to set up and customize.
Many of the best-selling commercial WordPress themes are ones that allow non-developers a huge amount of customization choices. Avada, Canvas, Divi, Make, Total and X Theme all have hundreds of settings. The big website platforms like Squarespace and Wix also provide a huge amount of design control.
Options Are Both Popular and Complex
I understand why customization is important. One of the main purposes of a website is to express a brand or identity. Customization of fonts and colors can be hugely important. When I helped my wife set up her first WordPress site years ago, I installed Canvas by WooThemes because I knew she’d want something that could be altered to fit her specific design aesthetic (and I didn’t have time at the time to customize it for her).
But even with a thousand options, there’s no way that everything can be customized. And adding many options has a downside: it increases the complexity of the user interface and code. Continue reading →
Zenith was the best selling theme on DevPress, so it may seem like an odd move to retire it. However, we’re introducing a new theme today called Zelda designed to take its place.
Everyone who has an active license for Zenith now has access to Zelda if you’d like to switch. You can also choose to stay with Zenith if you’re happy with it (DevPress will continue support for a year and release updates as needed). Continue reading →