ShipWorks Integration Setup

NOTE:  This can be a challenging technical setup process for any users who are inexperienced with the Actions features in ShipWorks.  If you would like assistance, contact our Support Team and we'll be glad to help you get it configured!

This article describes setting up the integration with Zenventory downstream from ShipWorks:  Zenventory serves as the master record of inventory, and receives orders and shipment data from ShipWorks.  Orders flow into Zenventory from ShipWorks after being imported from stores, and Zenventory either queues up the orders into a list for managed picking, or simply auto-deducts inventory and updates the counts (depending on what settings you choose for automation).  When the order is shipped from ShipWorks and a label is created, Zenventory receives an update communication from ShipWorks with the tracking information, letting us know that the order is complete and moving it into a completed status on our end.

ShipWorks Integration Functionality (8/7/2020):

  • Sends new orders from ShipWorks into Zenventory if not already present
  • Sends shipment information from ShipWorks into Zenventory (tracking number, carrier info) and marks orders as complete

Update interval:

  • Set within ShipWorks and flexible depending on preference:  Can be event-driven, set on a timer, or only run when a button is clicked.

Configuring the integration:

  1. If you haven't already, create a SecureKey for this integration by following these steps.
  2. Download the necessary setup files to your PC running ShipWorks:  ShipWorks Setup XML Files (zip)
  3. Extract both text files to your desktop or somewhere else that is easy to find.
  4. Open each text file and locate the line that reads "INSERT USER SECURE KEY HERE".  This line will have a placeholder field for your Zenventory Securekey that looks like "xxxxxxxxxxxxxxx".  Copy and paste your Zenventory SecureKey over the x's, leaving the quotes in place around the SecureKey.  Be sure to save the changes to the file when complete.
  5. Open ShipWorks and navigate to Manage -> Templates
  6. Select the existing "XML Source" template under System -> Utility, copy it and name the new template "sendOrder" (or other logical name of your choosing)
  7. Click the button for Edit -> Delete all current XML -> Paste in the XML from sendOrderXML.txt
  8. Repeat steps #5-#7, this time naming the template "sendShipment" and pasting in the XML from sendShipmentXML.txt
  9. Close Template Manager and navigate to Manage -> Actions
  10. Click the button for New Action and name it "sendOrder". Under "Settings" when you open the new action, be sure to check only the stores you would like to be associated with this integration or it will work for all stores by default.
  11. Use "When a custom button is clicked..." as the trigger initially.  This allows you to control the integration while you test it to confirm it is working as intended (you can change this later).  Check all options for "Show On"
  12. Require: "An Order to be selected"
  13. Add Task to be run: "Send Web Request"
  14. Send the request: Using "selected orders", and "Using results of processing a template" as a POST.  Select the "sendOrder" template you created earlier in the template dropdown menu.
  15. Request URL: https://app.zenventory.com/services/ims.php (for sendOrder) or https://app.zenventory.com/services/shipwidget.php (for sendShipment)
  16. Request Options: Both unchecked
  17. Repeat steps #9-#16, this time for "sendShipment"
  18. Close the Action Manager and navigate back to the Home tab.  Two new buttons should appear in the Home tab and function when orders are selected
  19. After testing sendOrder and sendShipment with a shipped order to confirm it is functioning as intended, you may change the action trigger from 'when a custom button is clicked' over to something event-driven, like downloading order, processing shipment, etc. Make sure the payload is "The order" or "the shipment" if doing this, or a filter with a manageable number of items (not a huge filter like "All Orders" that could overwhelm ShipWorks and your local connection). You may also use the "When a filter changes..." trigger for sending orders if needed, if you have certain filters you wish to send from while excluding others.