Developing Henrys.co.nz with Craft Commerce

This project was completed while working at Plato Creative

It was March 2020 and the entire country (New Zealand) has just gone into lockdown. A busy time to be a web developer as businesses were scrambling to get whatever they could online. Henrys came to us with the brief of getting their stores online quickly so that they could continue to provide products to their customers.

I worked closely with the team to provide Henrys with options, all with varying investment costs and timeframes. We explored options like Shopify, Big Commerce, Woocommerce but ultimately landed on Craft Commerce.

There were a few reasons as to why this was our suggested solution. The first being that our team has plenty of experience using Craft CMS. Another reason was that we knew whatever system we suggested needed to be very secure and highly customizable as the client had internal systems to integrate with and required a custom checkout experience for their customers.

The Build

The frontend was built with Vue.js which allowed for an interactive experience e.g. instant cart updates and store picker. The rest of the site is fully powered by Craft CMS + Commerce.

I could go into detail about each of the following but time is precious so i'll keep each one short:

  • Nightly sync with SAP system
  • Custom product import script using queues/background jobs
  • Custom pricing per store required the use of product variations
  • Custom Vue.js components with Vuex for state management
  • Customised checkout process with pickup slots and delivery cut off times per store
  • Craft Commerce plugin developed to support Windcave payments
  • Utilizes Craft events to send order payloads to SAP
  • Utilizes Craft Commerce events to manipulate cart calculations. For example buy 2 get 20% off
  • API endpoints to allow for payment to be taken once order is confirmed
  • 5000+ products required custom MySQL queries to increase performance
# An example of how simple events are in Craft
Event::on(
    ShippingMethods::class,
    ShippingMethods::EVENT_REGISTER_AVAILABLE_SHIPPING_METHODS,
    function(RegisterAvailableShippingMethodsEvent $event) {
        self::$app->shipping->getShippingMethodsForStore($event);
    }
);

This was a great project to work on as it really utilized all of the Craft Commerce features. If you would like to know more on any of the above feel free to reach out.

The Results

This project is a great solution for the client as well as a cost effective one. The website processes thousands of orders each month, espcially during Covid-19 lockdowns.

The client now has a platform where they can easily build new features, manage content and process orders. Already, new features are planned like gift card integration and abandoned carts.

Product category
Product category
Checkout
Checkout