Are you one of the thousands of Australasian companies harnessing the power of MYOB Exo (formally known as Exonet) to manage your day-to-day business and accounting processes? If so, then this web development project will be one for you to follow as it unfolds…
Updated: June 18, 2018
We’re working with an Auckland-based company, a well-known brand in their industry who is a strong performer in the local market, and who is also selling their products to an eager, global market.
The goal is to automate customer orders from an easy to use online portal and plugged straight into Exo.
Self-described as large-ish cottage industry, our client produces high-end products for the sport and recreation sector. Some flagship elements in their range are hand-made in their factory, and in the busy season work assembling components is also farmed out to homes around the city in order to meet demand.
They are one of New Zealand’s success stories trading on an international stage. With raw materials as well as finished products sourced from as far abroad as Africa and Japan, the company is going from strength to strength both here and overseas. Committed to driving the business forward, this client has teamed up with Hart Design to produce a new web design to replace their out-dated look. And most importantly create an online ordering website, where their customer base and product range is integrated from MYOB Exo into WordPress.
The goal is to automate customer orders from an easy to use online portal and plugged straight into Exo, where order fulfilment continues as normal. Fax orders from Geraldine or hand-written notes from sales reps will soon be a thing of the past!
We’ve selected WordPress for this Exo website integration, as one of the world’s leading web platforms. WordPress is open source (you can can take it anywhere, unlike this customer’s previous proprietary website CMS) and is renowned for its ease of use for website owners/administrators. And as in this case, WordPress can be highly customised to develop a solution specific to your needs.
Exo-Wordpress Plugin Features
Our WordPress-Exo Integration plugin will allow you to sync your Catalog data (Products, Options, Categories, Customers) over to your WordPress website. With your products and Debtors now online, you can capture orders right on your website and send them into Exo.
We’ll walk you through the steps needed for your website to access your MYOB Exo Database, and input the correct user credentials needed to import your catalog into WordPress.
If you use another CMS, a WordPress site can be created solely for the purposes of creating your Exo integration.
You will need an excellent MYOB accredited partner to help you ensure your Exo database is optimised for a seamless website integration. Acclaim have been great to work with.
Our plugin can be customised to meet your requirements. Here is an overview of what we have developed for our client.
- We can customise the page design to suit your needs
- Simply, attractive navigation
- Mobile friendly layout
- Search by SKU
- Deactivated clients: these are your debtors who will not have access to online ordering directly, but are imported so that your sales staff can raise orders on their behalf
- Clients: full online ordering privileges
- Salespeople: your sales team has the ability to place orders for any client within their stable
Sync your product catalogue with your website. Raw materials and items not for sale are omitted from the sync process. Includes:
- Product details: title, SKU, prices, images, variations etc
- Discount and promotion calculations
- Order history is recorded online by Debtor. All users connected with a debtor can see that company’s orders
- Order confirmation emails are sent to Store admin and to the customer
- Past orders can be copied to the current shopping cart
- Past orders can be downloaded as a PDF or printed
- Orders can include a PO number, comments and even a digital signature
MYOB Exo and Woocommerce
One option would be to integrate MYOB Exo with Woocommerce – a popular ecommerce plugin for WordPress. However, we’ve avoided the temptation and instead we have developed our own ecommerce solution to work seamlessly with both WordPress and MYOB Exo.
The logic behind this is that Woocommerce is a system designed to easily add shopping cart functionality to WordPress, but in order to achieve this goal, it is necessarily rigid in its structure. This makes it harder to customise Woocommerce to achieve the specific outcomes required when integrating with a third party software like Exo.
And importantly, at this time, there is no commercially available plugin (or at WordPress plugin directory) that automatically syncs MYOB Exo with Woocommerce.
So rather than try to jam a round peg in a square hole, we’re developing our own ecommerce solution for WordPress where we have full control over how it talks to Exo. And importantly, our client ha specific goals in mind in terms of how they envisioned EXO “talking” to the website. To meet the brief, building a custom WordPress ecommerce plugin meant a better end result.
Progress Report #1
Currently we are round-tabling the research and development phase with the client and their MYOB Exo support team, Acclaim Group. Matt, Ashton and the team at Acclaim are helping our client to tweak their Exo configuration to get the absolute best out of the software. The better the input from Exo, the better the output on the website which in turn will feed back into Exo.
Work has also commenced on the front end design and our developers have laid the foundations for the custom WordPress development.
This website will be developed to meet the needs of their New Zealand and Australian customers. Their long-term view is to expand this system into international markets.
Progress Report #2: Straight Lines
A Deep Dive into the Variables and Challenges Faced During the Exo-Wordpress Development
At this point the website development phase has largely been completed and is undergoing rigorous, extensive testing to ensure fidelity. Here we take a look at what’s gone into the development of this project up to this pre-live state.
While there were many examples where clear, straight lines could be drawn between the Exo data and the website endpoint, this was not always the case. There is no greater example than with the Mixed Quantity Discounts.
It must be said that this was no ordinary A[EXO] = A[WEB] integration. While there were many examples where clear, straight lines could be drawn between the Exo data and the website endpoint, this was not always the case.
There is no greater example than with the Mixed Quantity Discounts (MQDs). Of course, it is not unusual for companies and their sales teams to run promotions where if you buy X number of Widgets, you will receive Y number of Wigglets. And such promotions are available to only specific Geozones and then to only specific customer groups. Only for a limited time. *This MQD is not available in conjunction with any other offer.
Simple enough for human brains to comprehend with the help of our centuries-old written communication skills. The challenge is in writing this in clear, logical lines of computer code that follows all of the ordained rules and produces the correct end result. This task initially fell to Acclaim Group, our client’s Exo support crew, because before we could work the calculation into the website, it first needed to be calculated within Exo, automatically, using a series of if/then statements. Once that development was done, Acclaim provided a version of the Exo coding that has been converted into an SQL equivalent, which has been bolted on to our website database to drive the calculations.
Additionally, each time a new MQD is created (or one is edited or expired) in Exo, the daily Exo-Wordpress import script will update the website database with the relevant calculations to ensure that the website is always presenting the correct discounts and free items to the correct customers.
Apart from scripting the daily import, our role here was map these calculations from the SQL data into PHP scripts – that is, what’s actually displayed on the website itself – so that the website would present the correct promotions as users were placing an order. As with the SQL calculations, the PHP calculations needed to return the correct result under all conditions, too.
Grouping SKUs Into A Variable Product
Another, albeit less complicated, example of the lack of “straight lines” was around the Product-Category structure.
The first piece of this puzzle was where our team worked closely with the client to ensure that 2000+ individual SKUs were correctly tagged with appropriate “styles”. In this way we were able to collate separate SKUs into one Variable product. For example, if there were 20 SKUs representing different colours and sizes, but all variants of the same type of product, e.g. metal jig, there needed to be a method for which we could accurately group these SKUs together.
The benefit of all of this is improved UX (user experience).
Imagine trawling (forgive the unintended pun – remember, we’re talking about a fishing industry business here!) through a list of hundreds of individual items in a particular category – t-shirts for example – looking for the specific colour and size you wanted.
Now instead, consider the difference if you were to browse the same category and this time you were presented with a dozen styles. From there you choose your preferred style, and then select the colour/s and size/s you want to order.
Ecommerce 101, right? Right. But in order for the website to be able to present the the 2000+ SKUs as approximately 280 variable products, there needs to be a reliable method to group them together.
At the time of developing the website, this level of “housekeeping” was not present in the EXO database. That’s not a criticism of our client – their Exo database has evolved organically over more than 20 years of using MYOB and, until this point, there was no need to group SKUs using computer logic; only human logic which was working just fine!
From our side this involved human analysis of a 2000+ line spreadsheet and devising a strategy to be implemented in Exo. Apart from creating a system that is workable for the website, we had to ensure that whatever changes were made in Exo would not disrupt other internal reporting functions that the business relies on; reports which are very significant to the daily operation of the business but totally irrelevant to the website.
Once we had ironed out the process, our client would implement the strategy in Exo while we would review/give feedback on the changes to ensure there were no gaps in the data.
In an additional benefit to implementing this level of housekeeping, it has futureproofed their Exo database. Should the client ever wish to, they can with greater confidence and efficiency “push” their product database into other digital spaces beyond their own website: eBay, Trademe, PriceSpy websites and apps, for example. More on this idea later…
Grouping Products Into Categories
When it comes to grouping Products into Categories, more manual/human intervention was required. While there existed a clearly defined grouping of products into categories within the Exo database, the number of categories totalled 85.
Obviously this is not conducive to a good user experience or easy navigation: we needed a set of Parent Categories with which to group related Categories together.
There were a number of factors at play here. Firstly, the way Exo is constructed and the way in which our client is using Exo to manage their all-important reporting, any attempt to create Parent Categories would have meant a disruption elsewhere. And any disruption to existing Exo reporting was simply not going to work for our client (understandably so).
By implementing Parent Categories, we were able to reduce the entry-level Products page to show a more user-friendly 18 Parent Categories as opposed to the original 85 Categories that were defined in Exo.
Secondly, to aid human visitors to the website, some Categories needed to be shared between two or more Parent Categories. For example, the category Trout Hooks needed to appear under the Freshwater and also Hooks Parent Categories. This gives users the opportunity to easily locate the product they’re looking for, regardless of whether they’re approaching the website with an “I’m looking for freshwater fishing products,” or “I’m looking for fishing hooks” mindset.
The mapping of Categories into Parent Categories was performed by a script built only on the website, i.e. external to Exo. By implementing Parent Categories, we were able to reduce the entry-level Products page to show a more user-friendly 18 Parent Categories as opposed to the original 85 Categories that were defined in Exo.
For those ahead of the curve, you will have already had the thought that – while most other process are automated between Exo and the WordPress website – this will mean we as web developers will need to be called upon if in future there are more Parent Categories to be created. Or if more child categories are created in Exo, they will need to be accounted for the Parent Category structure defined on the website. This is true; but in the case of this client, this scenario was accepted and in fact necessary. Manually creating a Parent Category structure may not be required for another Exo user; it all depends on how Exo is being utilised and the volume of product in the database which is to be published on the website.
And to add another few layers to the Category structure, there were two parent categories which were to be displayed only to logged-in users – our client’s salespeople and wholesale customers – and not to the general public. These included items that were not for retail sale (e.g. signboards and stickers) as well as items that were set as Clearance Items and sold as such to our client’s wholesale customers, but not necessarily available to the general public as “clearance” or promoted items.
Clearance Items. We created a sudo-Parent Category which collated all SKUs marked in Exo as Clearance Items, so that logged-in users could easily locate and browse any items available at run-out prices.
A daily Exo-to-Wordpress import script ensures the website is automatically up-to-date with changes to products: which are approved (or otherwise) to be listed on the website, any new SKUs that need to be imported, new product types/styles, new categories (except Parent Categories, as noted above) as well as changes prices etc.
In the case of this client, product descriptions, product images, PDF downloads and Youtube links are not maintained within Exo; but are manually edited using the WordPress CMS. This allows greater layout control and no specialised HTML skill required on the part of their admin staff. However for those who have the internal skillset or perhaps a less complicated product range, Exo has the ability to push all required product data to WordPress with no manual intervention necessary.
Q: When Are Debtors Not Debtors?
A: When they’re not allowed to be! Our client wanted complete control over which Debtors listed in Exo we’re allowed access to the website to place orders – and then which staff within each organisation were allowed to.
For our client, it was important that their wholesalers applied to have online ordering privileges via their website. Once permission was granted, a box was checked in Exo and their access to the ordering function in the website was duly made available.
Our client’s sales team obviously needed access to the website’s online ordering system, and the ability to raise orders on behalf of any one of the Debtors on their roster.
Our client’s admin staff needed to be able to create orders for any debtor on their books.
To facilitate all of this we had created a series of user roles in WordPress, and then working with Acclaim and our client, we had to ensure that there were flags in Exo that defined who was a “web customer” (those debtors who were allowed to order themselves) and which debtors who are passive (those who were not), who was a salesperson and which debtors fell into their stable. (Salespeople were not allowed to see or create orders for Debtors outside of their jurisdiction).
Initially, the plan was to import only New Zealand and Australian Debtors into the website, however this was later expanded to include those buying in US dollars and Euros.
We’ve created a daily Exo-to-Wordpress import script to maintain an up-to-date account of all Users and their respective roles.
Admin users are few and changes occur less often, so rather than defining more users in Exo solely for this purpose, Administrators are manually set up and managed directly in WordPress.
WordPress allows for manual intervention of any User’s access rights, if immediate action is ever required; however any changes made directly in WordPress will later be overridden by whatever is set in Exo, upon the next data import. This way, Exo is always the bible for what happens in WordPress but there is the opportunity for a manual override in that 0.01% chance that this is required.
Creating Orders in WordPress, and Patching Them Into Exo
For our customer, Exo is not run in the cloud. They maintain their own server on-site which provides the central hub for all Exo activity. They are located in a part of Auckland that was not-so-long-ago a rural outpost. Despite that suburbia has increasingly encroached on the surrounding paddocks, to the point where it is literally knocking on their doorstep, the strength of their internet connection is yet to catch up to that of the speedier parts of the city.
This created two challenges for this project: Overloading and Internet connection reliability.
While maintaining Exo offline is reliable for them on a day-to-day basis, it is susceptible to overloading. On occasion, if the server is experiencing an unusually high demand, it can slow to a crawl.
The website did not want to unnecessarily contribute towards overloading, and so all of the price calculations are done over on our web server, and with one final call to Exo at checkout time, we are able to verify that we have the correct, current pricing for this particular Debtor, including all relevant discounts and free items. The alternative would be to make a call to the Exo server each time a product page is loaded and again for every item that is sitting in a User’s cart; each time a page on the website is loaded. So you can appreciate the difference in methodology here.
As the Autumn storms pulverised Auckland, our client’s suburb lost power and Internet for three business days. Website orders were safe and sound, stored in the website until a connection with Exo was re-established.
When it comes to Internet connection reliability, this hazard was played out to an extreme following the Autumn storm that pulverised Auckland in April this year. As with many parts of Auckland, our client’s suburb lost power and Internet services, and they remained offline for three business days – a lifetime in anyone’s terms!
To combat a server outage, or an Internet connection problem at the client’s end, the website will save an order on the website prior to pushing it through to Exo. If a connection to Exo is made, then the order is pushed through and the website has completed its role; dispatch continues as normal back at head office.
If for any reason a connection cannot be made to the Exo server, the order is stored on the website and a new attempt to connect to the Exo server is made every 6 hours until a successful connection is made and the order has reached Exo.
Should this happen, the customer is completely unaware of any connection problems; they’re still presented with the “Success!” message so as not to breed a lack of confidence in the system. As for the client, regardless of whether the Exo server is online or offline, the website will send an email copy of the order to selected Admin staff. This means that wherever the Exo server is offline, head office is still aware that they have a new order requested by Client X. Of course, access to email is also subject to a reliable Internet connection, but in this day and age, you don’t need to be at the office to see your mail.
So here we are, with the development phase largely complete and ready for rigorous testing. I say “largely complete” because, while we had a short list of known development tasks yet to be complete, we could hand over the website to the client to give it a thrashing and see where the gaps are.
To our client’s credit, they truly tried to “break” the Exo-Wordpress plugin that we’d laboured over – and as well they should! With a large, complex and very unique project such as this, bugs are to be expected at this time.
While bugs were indeed found, our client managed to discover an obscure sequence of events which effectively undid the highly complicated MQD calculations.
With the benefit of their perspective, our client has thought of scenarios we couldn’t imagine. Now confident that all possible bases have been covered, this plugin was indeed tested rigorously and as a result is all the more robust for it.
Progress Report #3: We’re Live
Cautious as ever, our client released the final product in stages. First they “deactivated” all Debtors in the website, allowing online ordering to be done only by their own sales and admin staff on behalf their customers. This became another level of testing, albeit in the real world with real orders and real customers.
Satisfied that the system functioned as expected over the period of a few weeks, an announcement was made to their entire Debtor database to say that online ordering was now available – sign up today!
The initial uptake was an impressive 30% of all customers opted in to the system. Designed to replace printed catalogues, fax machines and phone orders, this MYOB Exo-to-Wordpress integration is seeing an increasing number of orders processed on a daily basis.
There’s no hiding this is a long and complicated project with many challenges faced and overcome along the way. Any web integration project such as this is no different. Long-term, there is no doubt that the result will more than earn its keep as time savings and ease of use are enjoyed by both our client’s sales and admin staff and also their clients – the people using the plugin every day. In time, a printed catalogue will be a thing of the past; one less big expense for our client.
As with any software, there is a wishlist of improvements compiled by both our client and our developers. The idea is to continually improve upon the initial launch and create more feature-rich offering to its users.
Beyond that, there are a number of exciting opportunities for expansion available to our client.
Currently, everything is driven from Exo. To order from this website you must be an approved Debtor registered in our client’s Exo database. This fits in with our client’s business model at this time and into the foreseeable future.
Should their model ever expand to sell to directly to the public, Exo and our WordPress plugin can be expanded to capture account registrations on the website and send the account details through to Exo, and offer RRP level pricing to retail customers.
It is important to note that our client has no intention of taking their business in this direction at this time: we’re simply outlining the possibilities of what can be achieved with Exo and our WordPress plugin.
Another exciting idea is the potential for a mobile app. The refined structure of the Exo database and the way in which we’ve built our plugin means that we could redeploy our website plugin as a stand alone app.
This would allow for purchasers to draft orders wherever they are. Out of mobile range? Schmoozing customers on a fishing trip offshore, or in some remote corner of Australia? An app would allow you to create an order and send it through to Exo the moment you’re back in cell phone range. Not to mention the improved usability that can be delivered in a purpose-built app. This alone would be a welcome upgrade for regular users of this online ordering system.
Looking for your own Exo-Wordpress integration?
We can help. And the good news is, if the specifications detailed above don’t match your needs, our plugin is incredibly flexibly. It can be customised to match your specific needs. We can work in additional features if, for example, you need inventory control to be maintained between online and offline sales.