TABLE OF CONTENTS
- Required Item Sync Settings
- Inventory Sync Methodology
- Cloning Shopify Items (and duplicate SKU values)
Inventory adjustments made in WOS can be pushed to Shopify. This can simplify efforts to keep the two systems aligned, but an understanding of the processes can help eliminate potential problems.
Required Item Sync Settings
In order to make an inventory adjustment, Shopify requires a Location ID and the variant's inventory_item_id. Shopify doesn't currently have a simple way of looking up variant details based on a SKU value. During the Item download from Shopify to WOS, the Item's inventory_item_id is mapped into an Item's CustomField. This field is then used to push adjustments to Shopify when they are made in WOS.
There are two main potential issues with this setup:
- If an Item doesn't come from Shopify or the download wasn't setup right, the inventory_item_id doesn't make it to WOS and adjustments in WOS can't be pushed up to Shopify.
- Cloning an Item in Shopify can result in two different Items in WOS pushing adjustments to the same variant in Shopify. See the section below about cloning items to learn more.
Inventory Sync Methodology
Inventory between WOS and Shopify is never "synced". Syncing inventory implies a system that ensures both systems have the same total quantity. WOS actively avoids a process that tries to sync inventory because it often results in errors. Shopify and WOS handle inventory differently. Shopify decrements available inventory as soon as an Order is placed. WOS commits inventory to calculate an "available" quantity but inventory is not decremented until an Order is picked. Because of these differences, unless every Order has already made it to both systems, an inventory sync can often add inventory back to Shopify that has already sold and result in problems with overselling.
WOS instead takes an approach of an "inventory transaction sync". As Puts, Pulls, or Cycle Count adjustments are made in WOS, the delta quantities are pushed to Shopify. This ensure that both systems are moving inventory in the same direction, but it does not guarantee that both systems will always have the same inventory.
Note: Performing a Cycle Count in WOS will not "correct" inventory discrepancies. WOS does not use the "new quantity" of a cycle count to "set" the Shopify quantity to match. 1. Shopify tracks "available" inventory. If WOS cycle counts a location down to 8, there could be 5 Orders already looking for inventory in that location and the quantity that Shopify should be set to is 3, not the quantity counted in the cycle count. But the quantity of committed Orders is not known at the time of counting the on hand values so this isn't possible. 2. Cycle counts are done against a single Location. Shopify typically needs to know the quantity of an Item against the entire system. Using the Cycle Count "set" the Shopify quantity would result in a micro-focused adjustment that would exclude items existing in other Locations. Performing a Cycle Count in WOS will ensure that there is an accurate, known quantity for the Items. This can then be used to compare against Shopify and manually make adjustments where necessary after factoring in any necessary details.
- A Cycle Count is done in WOS. The original quantity is 10 and the Cycle Count is 8. WOS decrements 2 from inventory and a -2 adjustment is pushed up to Shopify
- If both WOS and Shopify have the same available quantity at the time of the adjustment, both systems are still in sync
- If Shopify had 15 before the Cycle Count was made, it will have 13. The discrepancy between WOS and Shopify was not corrected with the Cycle Count, but it was kept the same so the issue doesn't become larger.
Cloning Shopify Items (and duplicate SKU values)
Shopify has made it easy to create new products by cloning an existing item. This has the potential of causing inventory problems with the WOS integration but it can be mitigated by making an update to the original product, the one that the clone is based on.
The potential problem:
- Assume item 20A642-XL is cloned to create a new Item, 20B611-XL
- At the time that the Item is cloned, Shopify creates a new product and variants in their system. The SKU value is copied as part of that clone and there are now 2 items in Shopify with the same SKU value.
- 20A642-XL has not been changed. A new variant for 20B611-XL has been created but the SKU has not yet been updated so it still says 20A642-XL.
- The WOS integration picks up that a change was made, but only on the newly created item.
- The SKU on this new Item matches the existing WOS item 20A642-XL. An update is made and the inventory_item_id on the WOS item (used for inventory integrations) is updated to point to the new Item instead of the old one
- In Shopify, the new item has the SKU updated. There are no longer multiple items with the same SKU. Shopify correctly shows both a 20A642-XL and a 20B611-XL
- The WOS integration picks up the update that the SKU was updated on 20B611-XL. Because this is a new SKU, a new item is created in WOS.
- The first update made in step 4 is not corrected. Only the new Item has been updated so all updates have been focused around the SKU that exists on that new Item.
- Because of the initial update and then the creation of the new Item, WOS now shows both 20A642-XL and 20B611-XL with the same inventory_item_id.
- Because they share the same inventory_item_id, adjustments against both Items will adjust the same Shopify variant.
- In this condition, 20A642-XL will never see an inventory adjustment in Shopify because no WOS Item is pointing to that item. But Shopify variant 20B611-XL will be updated with the inventory adjustments of both 20A642-XL and 20B611-XL in WOS because they are both pointing to that variant.
- At some point, 20A642-XL will be updated in Shopify. The WOS integration will pick up on that change and update the WOS item 20A642-XL with the correct inventory_item_id and the problem will correct itself.
Tip: To correct any potential problems with cloning an item in Shopify, update the original product that the clone is based on AFTER updating all of the SKUs on the newly cloned product. This ensures that an update is made after everything has its final values and the WOS integration will ensure that everything lines up as it should. The longer it takes for the new SKUs to be updated and the original product to be update, the longer a window for potential problems is opened.
Optional Integration Flows
The standard integration flows for items coming from Shopify is to let Shopify control all of the details that WOS is using. This flow is simpler and uses less resources on the account. If there is a reason to change this, there are a few options.
- Values not in Shopify
- Some item values need to be placed in WOS and Shopify doesn't have a place to control those
- The integration can make sure WOS values don't get overwritten
- Values controlled by WOS
- In some cases, like the inventory_item_id mentioned above, it is better to not let the value be updated each time Shopify sends an update
- A selective list of fields can be setup in the integration. This list will make sure WOS maintains its original value even if updates are sent from Shopify; basically allowing a field to be set by Shopify the first time but controlled in WOS thereafter.