Here’s the story of how Endertech developed a Shopify STORIS integration for a client here in Los Angeles.
When a local furniture retailer first approached Endertech, their existing e-commerce website was not performing as they desired. The site had been built using Magento, which is a leading PHP platform for e-commerce sites. Magento has a wide range of features and, while it is extremely powerful and well-suited for many enterprises, our client’s implementation had not been executed very well by their prior developer. As it stood, the site had a problem synchronizing inventory and orders.
Our client managed all their internal inventory with STORIS, which is the leading integrated retail solution for the furniture business. It provides furniture companies with both in-store POS and general warehousing features in order to manage inventory, sales, and operations across multiple locations.
STORIS also contains accounting and business intelligence modules to predict lead time and can also help provide some in-demand forecasting in order to have items available at the moment they are needed.
STORIS is designed specifically for retail operations, and links an entire business efficiently, as it uses an Electronic Data Interchange (EDI) to allow communication between partners within the supply chain, and handle logistics regarding inventory delivery.
Needless to say, it is embedded deeply into the business operations of our client, and of many other great furniture retailers as well.
While STORIS does also offer an integrated e-commerce platform, some retailers choose to use a separate e-commerce platform instead, like Magento or Shopify, and then want to integrate it with STORIS.
As part of the initial planning phase with our client, we determined that their existing system, Magento, was over-complicated for their needs. We came to the conclusion that Shopify would be a better solution for e-commerce operation were envisioning.
Shopify is a user-friendly SaaS e-commerce platform with a web front-end that allows for easy online store creation. It has thousands of available templates and 3rd party apps which enable many store design and management tasks to be performed by non-developers. Shopify’s advantages are that it is easy to use for non-technical users, while still allowing developers to get under the hood for more advanced customization purposes.
Its ease of use is demonstrable in that it is one of the most highly used e-commerce platforms on the internet, and (according to their site), boasts over 800,000 stores, 1 million users and over 1 billion in sales. It includes a payment gateway as part of the package but can also integrate with external ones.
After in-depth research and consultation, we established with our client that a Shopify STORIS integration would be viable, and an optimal long-term solution for them. But, since no such integration exists “out-of-the-box”, and since our client has some specific business rules they wanted to implement, we knew we’d have to craft the integration.
Fortunately, since both Shopify and STORIS have well-documented APIs, we could achieve the integration requirements by connecting the Shopify API and the STORIS API with the help of some custom middleware.
The primary functionality that we needed to achieve was to make sure that inventory and pricing data would feed from the STORIS API to the Shopify API, and that order data would feed from Shopify into STORIS.
One aspect of our client’s requirements that was crucial was that we could not just blindly import all products from STORIS into Shopify; not every item available in the STORIS database was suitable for online sales, so to make sure only desired products were synchronized, we decided to curate which items belonged in Shopify, and which ones didn’t.
Building Shopify STORIS Integration
Since our client’s product data needed to be enhanced for web merchandising purposes anyway, we suggested that they manually curate and post the products they wanted to sell into Shopify. The critical instruction, in order to make sure that the posted products remained synced with STORIS, was to ensure that they both share a common and unique identifying ID.
Quite simply, the Shopify SKU was set to match the STORIS product ID. Thus, this resolves the issue and we can map products in each system together.
With the mapping in place, we could now code our middleware to loop through products in Shopify, look them up in STORIS, and then update price and inventory counts appropriately. If any error conditions were encountered, such as a mismatch on SKU / Product ID, the middleware will log the discrepancy and alert an admin.
Another feature our client wanted was to ensure that Shopify was aware of which of their locations actually had stock. Fortunately, both Shopify and STORIS support multi-location inventory.
Our client had certain rules, partially based upon location, that determined whether a given item should be available for online sale, so we built the middleware to be “inventory/location aware.” Each location has a different set of inventories, and each needed to be analyzed according to the rules.
Besides controlling availability for online sale, this location-aware feature was also harnessed to let customers know what showroom they could go to to see and feel any big-ticket item they are considering to purchase.
As mentioned, to manage communication between the Shopify REST API and STORIS REST API, Endertech built middleware hosted on a cloud server.
The middleware is the place where custom business rules can be added. For instance, the location aware features described above, and our client also had special rules for how they wanted to handle sale pricing. These are but two examples, and virtually any business logic can be inserted at this layer.
It is important to highlight again the important of adding good error checking and handling into the system’s business rules. Mismatched SKUs will prevent all other operations from succeeding. With correct SKUs, all other processes, including order insertion work pretty easily.
For order insertion, the primary rule our client wanted to implement was to make sure that repeat customers had all their orders tied up to the same account if possible. Fortunately, the Shopify and STORIS APIs make this pretty easy.
We could look up a customer in STORIS, and relate the new incoming order if that customer exists already. If they are not found in STORIS, we will create the customer as new in a way that if they reorder later, next time, they would be found.
Another system rule involves the timing of synchronizations between the systems. The middleware runs in a Linux environment and we use the cron to control when synchronization loops begin. Sync process durations will depend on catalog size, and our client’s system works with about a 30 minute loop. Order sync and product sync can run independently, allowing different timings for each.
A last important rule, is to log everything. Our middleware implements a thorough logging system. Each activity, such as insert orders, purchases, and more, are logged. This enables us to be able to catch any potential errors, either due to human mistake, or potential system incompatibility for a specific item.
For our client, this logging system really helped to debug some odd situations early after deployment. In once case, an order came through from Shopify that was located outside of the United States, so that STORIS would not accept the order. This was by design, and the rules were set in STORIS. But no one remembered this setting when we were building the system initially. So, with our logs, we were able to detect the issue and implement a new set of rules to prevent Shopify from accepting orders STORIS would reject.
Concluding the Shopify STORIS Integration
The exciting part of this process was figuring out how to make two independent systems, both of which had their unique advantages, work together. With STORIS, all of the necessary inventory management and storewide systems are well supported. With Shopify, a great e-commerce frontend experience is with hands reach. And with Endertech’s custom middleware solution, the two speak together and our client was able to elevate their e-commerce system to improve sales and integrate fulfillment and back office operations.