When a large furniture retailer approached Endertech, their current e-commerce website was in a state of disarray. The site had been built using Magento, which is a leading php framework for e-commerce. 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.
Here’s the story of how Endertech developed a new solution for this client.
Our client managed all their internal inventory with STORIS, which is the leading integrated retail solution for the furniture business. It enables furniture companies to handle POS operations while simultaneously managing inventory control, and tracking purchases throughout the supply chain. It provides a just-in-time inventory management workflow, which enables companies to be able to identify which piece of furniture lives in which location, and to be able to handle any replenishment needs.
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, but links an entire business efficiently, as it uses an Electronic Data Interchange (EDI) to allow communication between all partners within the supply chain, and handle any logistics regarding inventory delivery.
Needless to say, it is embedded deeply into the business operations of our client.
One thing that STORIS lacks, however, is a strong e-commerce component, so it is necessary to connect it to an ecommerce platform to provide these functions at a high level. STORIS data, while well-suited for managing retail furniture operations, is anemic from the point of view of creating an online presence. The data was not structured well for the merchandising needs of a modern e-commerce site.
As part of our initial planning phase with the client, we determined that the existing system, Magento, was over-complicated for our client’s needs. We came to the consensus that Shopify would be more in-line with the sort of e-commerce operation they wished to maintain.
Shopify is a user-friendly SaaS e-commerce platform with a built-in web application which allows for easy online store creation. It has thousands of available templates and add-ons which make many store design and management tasks possible for 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 some in-depth consultation, we came to the consensus that integrating STORIS with Shopify would be the optimal long-term solution for our client.
In order to accomplish this, we would need to connect the Shopify API with the STORIS API. The main 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.
We quickly noticed that there were no pre-existing STORIS-Shopify API integrations in the marketplace, so we endeavored to create our own. One aspect of this process that was crucial was that we could not just blindly import all products from STORIS into Shopify; not every item available in the database was suitable for online sales, so to make sure the correct data was transferred required some curation to identify which items belonged in Shopify, and which ones didn’t.
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 these systems remained synced, was that both needed to share a common unique identifying ID.
In this case, STORIS stores each product associated with a specific product ID, while Shopify uses SKUs for its own identifier. To resolve this we mapped the two systems together, linking product ID with SKU.
The critical fields of data that needed to be automatically imported from STORIS were product price and inventory count. It was necessary that we ensure that the data in Shopify was correct and coincided as a subset of the data in STORIS.
We then created a system which takes the Shopify SKU, looks it up in STORIS (based on the aforementioned product ID), and took the price (both normal price and sale price), the inventory count, and the inventory location ID of each item.
It is important to mention here that location ID is extremely important for the shopping experience. Our client had certain rules, partially based upon location, that determined whether a given item would be available for sale, so the application needed to be “inventory/location aware.” Each location has a different set of inventories, and each needed to be analyzed according to the rules.
Furthermore, as furniture purchases are typically big-ticket items, consumers often wish to be able to physically see their couch or dining room set prior to purchase, so Shopify needed the information to be able to let consumers know at which showroom a product is available. We created a feature in our middleware which, for each item listed, would provide the Shopify API with data allowing customers to be informed that “you can see this item at <product location>.”
To handle communication between the two applications, Endertech built middleware hosted on a cloud server that manages communication between both the Shopify REST API and the STORIS REST API.
Several mapping rules needed to be created, where we would retrieve the currentPrice from the STORIS API and send it to the Shopify API as “price” and then normalPrice from the STORIS API to the compare_at_price in the Shopify API.
Also necessary was the ability to have good error handling to handle poorly entered SKUs (these were of course manually entered, so there’s always a chance for a mistake), to identify any inconsistencies.Once this was built, creating orders was relatively seamless.
Customers were also linked into both systems. This process followed the following steps.
1. The system would search for a customer based on their phone number as a unique id. If they existed, that customer account was used. If not, a new customer record would be created.
2. Create order via REST API call
- Load the item
- Attach item to Customer id
- Either request or add in shipping information
3. Apply payment
- The customer id was associated with the payment and with the item on both systems.
The data in both systems are in sync within about 30 minutes of each other and would be updated with a cronjob. The end result is that updates would occur by a customer in Shopify, the cron would run and send the information to STORIS, which would then handle any fulfillment. Similarly, if there were changes to inventory in STORIS, this data would be updated into Shopify.
The code that Endertech created for this communication is essentially middleware. It lives on its own server and has its own administrative features. One of the primary features of this software is 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.
One instance that occurred was that an order came through from Shopify that was located outside of the business area, so that STORIS could not process the fulfillment. This was by design, and the rules were set in STORIS. By seeing these errors, we were able to create a new set of rules for Shopify to recognize that purchases from outside of the country were not allowed and could prevent someone from attempting to buy something from an area which could not be fulfilled.
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 could be handled. Through the implementation of Endertech’s custom middleware solution, this client was able to vastly improve their online sales to coincide with in-store fulfillment processes.