Connect Shopify to Zenventory

Prerequisites:

  • Before they can sync to Zenventory, all Shopify products must have a unique SKU assigned (including variants).  If some of your products are missing a SKU in Shopify, you can add them easily using the Bulk Editor described in this article.  Inventory synchronization will fail for any item missing a SKU in Shopify.
  • All Shopify products must be marked as available and the option to track inventory in Shopify must be enabled.  Inventory synchronization will fail for any product where these two settings are disabled in Shopify.
  • Requires the use of the free Shopify Flow app installed within your Shopify account.

Shopify Integration Functionality  (updated 6/27/2023)

This can be a technical setup that requires quite a few settings adjustments in your Shopify account and an understanding of location priorities, shipping origin locations, and order routing with the free Shopify Flow app for anyone that uses more than 1 location for fulfillment in Shopify.   

  • Pulls items, their details (sales price, shipping weight, UPC, cost) and quantities from Shopify into Zenventory during initialization (unless a matching SKU already exists).  Once the item has been downloaded to Zenventory, then any changes made to the item details in Shopify will not automatically carry over to Zenventory.  
  • Pulls new fulfillment orders into Zenventory that have been assigned to the Zenventory fulfillment app location within Shopify.   NOTE:  In order to properly create fulfillment orders, the newly created Zenventory App Inventory location must have inventory numbers.
  • Pushes updated inventory stock levels from Zenventory to Shopify for matching SKUs
  • Pushes order status update when completed, shipped, or canceled from Zenventory to Shopify.  If a fulfillment order is cancelled, then the order will transition from In Progress to Unfulfilled status in Shopify.
  • Pushes shipment data from Zenventory to Shopify

Update interval (maximums):

  • All actions:  15 minutes

Configuring the integration

To begin the integration process, you must have a Shopify subscription active.

  1. Start by logging in to your Shopify store.
  2. Navigate to the apps page on the left hand menu.
  3. Click on “App and Sales Channel Settings".  shopifydevelopapps2
  4. Click on "Develop App" and then click  “Create an app”.shopifydevapps3createappshopify

  5. Set a name for your private app that makes it easy to identify, then click "Create App."zenventoryshopifyname-600x350-1
  6. Click "Configure Admin API Scopes"  apiscopesshopify
  7. Make sure the following checkboxes are selected, and leave ALL of the rest unchecked.ShopifyAppPermissions
  8. Click "Save" (1) to save the permissions you just selected and then select the "API Credentials" tab (2).saveshopifypermissions-1536x262
  9.  Record your API Key and API Secret Key values as you will need them to finish the setup in Zenventory.apikeyandsecretshopify
  10. Click the "Install App" button. installappshopify-1536x182
  11. Go back to the API credentials tab.  Click "Reveal Token Once" to obtain the Admin API Access Token.  You will need this to set up the integration in Zenventory.  NOTE: You will only be able to reveal this token one time, so make sure to record it and save it for future use.  Copy and paste these into a document you can temporarily save as you will need them in a future step in this setup process. shopifytoken
  12. OPTIONAL FOR SETTING LOCATION PRIORITY:  Navigate to Settings -> Locations and select "View or Edit Location Priority".  If you want the Zenventory app to be the highest priority location for order fulfillment, then move it to the top spot in the list.    
  13. Next, log in to your Zenventory account and navigate to Admin -> System > Integration.  Have the Admin API Access Token, API Key, and API Secret ready as you will need them to follow the next steps.
  14. While under the “Marketplace” tab, click the “Add Marketplace” button, select “Shopify”, then "Add".8
  15. You will see a prompt to open the install guide.  Simply click this link, and then you can close the new window/tab if you already have the guide open.9
  16. All fields necessary for initializing the Shopify integration will be displayed:
    • Shop - This is the store name embedded in your admin.shopify.com URL address. It may differ from your actual Shopify store name.  See highlighted example below, in this case you'd use "darin-newest-store-11-30-22" for Shop (without the quotes).shopifyurlupdated
    • Admin API Access Token - obtained one time from step 11 above.
    • Client - For 3PL providers, this will link the store to a specific 3PL client in Zenventory.
    • Shop Name - This will be used to identify your shop name locally within Zenventory and can be different from Shop (optional).
    • Stock Warehouse - Choose the warehouse that will be sending stock updates to Shopify. If more than one warehouse is selected, the quantity will be the combined sum of all selected warehouses. 
    • API Key - This can be obtained from the private apps page in Shopify. Refer to step 8 for more info.
    • Warehouse - This will be the default warehouse used for inventory allocations for orders from this channel.
    • Stock Update Mode -
      • Do Not Update Stock Levels - If enabled, only orders, order status updates, and shipment information will pass from Zenventory to Shopify.  Zenventory will not pass stock level updates to Shopify with this enabled.
      • Use Sellable Quantity - will update shopify with the item sellable quantity.  Sellable is calculated by total in stock minus allocated items minus non allocated items on orders.  This setting prevents overselling of a product.
      • Use In-Stock Quantity - will update shopify with the item in-stock quantity.  This setting can allow for over sale.
    • API Password - This can be found on the private apps page in Shopify. Refer to page 8 for more info.
    • Importing User - This will be the user associated with imported data, any user can be selected for this.  NOTE:  If no importing user is selected, no automatic imports will take place (you'll have to run them manually from the Actions menu).
    • Integration Settings -
      • Update Stock Levels Only - will not import orders from Shopify, only updates the item stock levels.
      • Always Send Fulfillment Receipts to Customers in Shopify - allows the integration to always enable emails to be sent to the customer once the order has been fulfilled.
  17. Once you have filled in all the integration information, click “Save” then “Initialize”.  This will activate your integration and begin transferring data between Zenventory and Shopify.  Once initialization is complete, you are finished with the setup process.

 SET THE NEW FULFILLMENT APP LOCATION/SHIPPING PRIORITIES

  1. Now that the migration process has been completed, there are just a few more steps that need to be taken on the Shopify side of things to get this fully set up to be as hands free as possible. 
  2. The first step we need to take is to change your location priority in Shopify. This can be found in your Shopify account under Settings > Locations > Edit Location Priority. NOTE: If you have additional order routing logic setup in your account already, you will not see this location priority section and instead will be navigated to the Settings>Shipping and Delivery Page(if that is the case, move to step 4 below).     

  3. If Zenventory is your primary order fulfillment system, you’ll just need to drag Zenventory to the top of the list and click "Save". This will make it so all incoming orders will look to prioritize your Zenventory stock keeping location so that they can be used to request fulfillments. This is what allows Zenventory to continue to import your order data.

  4. If you were navigated to the Shipping and Delivery page from the Locations Page, then click "Manage" in the order routing section.orderrouting
  5. Now click on "Manage" in the used ranked location box.  managerankedlocations
  6. Adjust the location routing hierarchy so the "Zenventory" app is the first priority.  It should look like the below screenshot.rankedlocationsZenattop
  7. If you have shipping rates set up, then you need to assign the new Zenventory location for use with those shipping rates in order for orders to be processed properly.  If you don't have any shipping rate profiles setup, then you can skip this step 9 & 10 and move to step 11 below.  Go to the Settings>Shipping and Delivery page and click "Manage" in your shipping rates.  You might have more than one shipping rate profile depending in your setup.
  8. After clicking "manage" scroll down to the bottom of the page and notice the Unassigned Locations section.  Assign Zenventory to the shipping rate profile from there.
  9. The only task remaining is to remove stock from your old Shop location in Shopify. Zenventory is pushing up inventory counts to the new Zenventory Location, and that location is now the main priority to be used for fulfillment. Depending on how your Shopify storefront is configured, it may still be accounting for the Shop Location counts in your displayed inventory counts.
  10. This is done by navigating to Products > Inventory in Shopify. Make sure to select the correct location to clear using the dropdown at the top of the page. ***IT IS HIGHLY RECOMMENDED TO EXPORT YOUR INVENTORY COUNTS FOR THIS LOCATION PRIOR TO PROCEEDING IN THE EVENT THAT YOU NEED TO REVERT***. The button to do so can be found in the top right hand corner of the screen on the inventory page.ShopifyInventory
  11. After selecting your items, you can click update quantities and set all quantities to zero for any selected SKU in a single action.

    shopifysetto0
  12. Your inventory counts should now be displayed correctly in your Shopify storefront and any new incoming orders should automatically create a fulfillment order request to be imported into Zenventory for shipping and fulfillment.
  13. Setup a new workflow within the Shopify Flow app that will allow for the fulfillment requests to be automatically created if the item's on the order are fulfillable (have enough inventory).  The trigger will be Order Created, the Condition is "When Fulfillable is equal to True" and the Action is "Send Fulfillment Request."  See the picture below.  Make sure to turn on the workflow once you have created it.
    shopifyworkflowtoZen

ASSIGNING EXISTING SHOPIFY ORDERS TO ZENVENTORY FOR FULFILLMENT

  1. Select any orders that need to be converted to have a fulfillment request and click the ellipsis (...) at the bottom of the page to expand the actions. After doing so, click Change Fulfillment Location.
  2. After doing so, you should see a new popup where you’ll want to select Zenventory from the dropdown and click change location.FULFILLLOCATION
  3. Your final step will be to keep those same orders checked and click the ellipsis button one more time at the bottom of the order grid. This time you’ll want to click Request Fulfillment.
  4. These new fulfillment orders will downloaded into Zenventory on our normal automatic order pull within the next 15 minutes, or you can manually pull them in by hitting the "Refresh" button on the Open Orders page in Zenventory.