For today’s installment of the B2B E-commerce series we explore integrations between your WooCommerce storefront and your back-office systems. This is an area that greatly depends on what you are already using for those operations. Accounting and ERP systems are exceedingly complex, and every business has reasons for choosing the one they use that extend far beyond sales operations. For this reason, a comparison between the existing options is not as important as the question “What is available for my back-office platform?”
We’ve compiled a quick list for you here:
Existing Solutions
Accounting System | Plugin | Type of integration | Cost |
---|---|---|---|
QuickBooks | QuickBooks Sync for WooCommerce | Automatic two-way sync for orders, customers, products, inventory | $0-$69 per month (depending on transaction volume) |
Xero | Xero for WooCommerce | All product, shipping, discount, and tax data is sent to Xero. When payments are made, they are applied to the appropriate invoice to keep everything in balance. | $79 per year |
Sage | Web API or Zapier | Depends on the custom integration | $0-$599 per month (depending on transaction volume) |
NetSuite | NetSuite Integration for WooCommerce | Plugin synchronises Orders and Customers from WooCommerce to NetSuite in real-time. It also pulls the product’s stocks and prices from NetSuite to WooCommerce. | $299 per year |
FreshBooks | Zapier | Synchronizes Customers and Orders | $0-$599 per month (depending on transaction volume) |
SAP | SAP API | Depends on the custom integration | Depends on custom code costs |
Myob | Myob Integration for Woocommerce | Automatically creates products, customers and invoices | $99 per year |
Microsoft Dynamics | Power Automate for WooCommerce | create, find, update, or delete Customers, Coupons, Orders, Products, and Subscriptions | $199 per year |
Odoo | Odoo for WooCommerce | create, update, or synchronise invoices, products, customer records, coupons, inventory | $149 per year |
As you can see, there are a number of systems that pretty much require custom code be written to automate synchronizing data between WooCommerce and the ERP platform. This is not as scary as it might sound. Building such bridges is very manageable since most every system has its own well-developed API. WordPress is well-suited to connect to most any system with just a “little bit of typing” as a good friend of ours loves to say about custom code.
Ready to get Started?
Let’s just have a chat! We’ll give you a free assessment and set up a time to get things moving so that your new site can be up and running in no time.
What if I Need to Build or Adapt an Existing Connector?
It can be a little daunting to think about building a custom solution. You might be concerned about any number of things, but in our view the concerns can be addressed by focusing on three typical points of failure:
- Supporting all stakeholders of the sales process
- Ensuring future compatibility
- Securing communications
If you set off on the project considering these three points, you’ll be well-positioned to design the connector in a way that will work well for your specific operation and stand the test of time. It’s useful to include a WordPress Developer in the process of exploring these items if you can. If that isn’t possible, having a project leader do so may even help you identify a good developer for the job. Either way, the process will uncover the deliverables of the project and get you started on the right foot.
Supporting Stakeholders
We have found that many custom connectors happen because there is a very acute pain point, and that urgency can lead to a patchwork of data synchronizations. If a truly automated solution is to be made, identifying each and every stakeholder in the sales process is important. How do the variables in each purchase affect different departments? How does it flow to supply chain management? What key elements of the sale affect accounting for specific revenue accounts, liability accounts, or warranty exposure? How does customer support interact to assist a specific customer based on what they’ve purchased?
This doesn’t mean that the connector will need to include some piece of data important to every department in your organization, but if you don’t ask the question, overlooking an important element can become very painful. We like to start with an org chart and begin asking, “What information does this department need regarding sales?” This doesn’t necessarily mean from an individual sale, but also in aggregate. What system do they get that data from? How does that data get into that system? Does that data originate with each transaction? If so, we need to make sure it is on the list of data that needs to be exported from WooCommerce. We repeat this for each function in the company.
What if the system used for looking at the sales or transaction data is actually WooCommerce itself? Does that information come from or get altered in another system? If so, imported into WooCommerce. It seems simplistic, but it really is the best way to get a list of data items and which systems need to connect to Woo.
With this list, there is one other question. How quickly does this data need to be updated? If data needs to be instantaneously updated as it happens, your developer will need to identify a trigger for the update. Otherwise, regular batch updates can be scheduled to keep things running smoothly.
The final step we take is to look at all the data items and try to build the most efficient approach. If you are using an ERP platform, that can often be the central hub for business information. Why build multiple connectors when a connection between the ERP and Woo can cover all the bases at once?
Ensuring Future Compatibility
It can be tempting to shortcut the integration process using bulk data export plugins. Unless this is being done with the intention of providing a short-term solution, we discourage clients from doing so. Whenever possible, we use API connections to transfer data between systems for a number of reasons:
- Data fields change over time
- Data table structures can change
- Exporting and importing using bulk data exports adds another point of failure
- Exporting and importing can be a security risk
No solution can fully protect against changes in data structures. APIs, however, can help smooth things over. APIs are expressly meant to allow the hosting system to make changes under its hood without disrupting connections to legacy connectors. So even if a data field name changes or is moved to a new table, the data flow doesn’t have to break. And if there is an update, custom code to interact with an API can often isolate any disruptions and allow for an easy fix.
Exporting data and then importing data in bulk means static mappings in the best of cases and a lot of handholding and frustration at its worst. The process is inherently operated by a staff person who is not usually familiar enough with the technical details to adapt to changes. Further, export files lack a level of security that direct communication via an API can ensure.
Security
APIs usually require an authentication process. WooCommerce and WordPress are no different (for those systems pushing updates into WooCommerce). There are many different types of authentication ranging from including a secret code with each data transmission (essentially a password) to methods like OAuth that use a handshake process to establish a unique and secure encryption between the two servers.
We suggest using the most secure method available and being very diligent when configuring API connections to limit authorized connection sources. A poorly secured API configuration using a secret key may still be vulnerable to breaches if the code is stolen and access is allowed from any connection using that code.
Connections that are able to not only establish a unique key between servers, but also encryption keys on each of them that are not shared in during data transmissions can help better thwart security attacks.
Where are you struggling to make your systems interoperate? What tools are you using? Let us know about them in the comments!