Integration between Ongoing WMS and Shopify
Table of contents
Shopify is a popular e-commerce solution from Canada. At the time of writing, Shopify powers over 400 000 web-based businesses all over the world. The integration is the most popular integration to Ongoing WMS.
The integration might be used for your own warehouse or for you which outsource to an external fulfillment provider (utilizing Ongoing WMS). Integrating your Shopify-based shop with your third-party logistics provider via Ongoing WMS provides you with a seamless logistics experience while using Ongoing WMS for your own warehouse helps you optimize your warehouse processes.
The integration works well together with the Ongoing workflow. It uses the Shopify REST-API. Most functions run every 15 minutes, but some functions are based on user actions.
When an order is placed by your customer it is automatically transferred to the WMS for the warehouse workers to immediately start picking and packing it. When a shipment has been booked, the WMS creates a fulfillment in Shopify with the delivered number of items per order line together with the tracking information.
Ongoing WMS continuously pulls information about the products from Shopify and the available stock in the warehouse is continuously pushed to Shopify. This eliminates the manual and repetitive task of keeping two registers in sync and automates the information change in the logistics process.
For more information about Shopify see their website or developer pages.
Note that the information in this document might differ from your integration if any special requests were made during the implementation of the integration.
The article registry (product registry) is automatically updated in the WMS when it is changed in Shopify. Each product in Shopify has at least one variant, where both the variant and product data are used when creating articles in Ongoing WMS. Also note that the integration can be setup to fetch the Inventory item for each variant, which is needed if you want to sync country of origin and cost. Note that for the integration to function properly it is important that each variant in Shopify has a unique SKU. Click the following button to see the field mapping:
|Ongoing WMS field||Shopify field|
|Article definition ⇒ Article name||<Product ⇒ Title> - <Variant ⇒ Title>*|
|Article definition ⇒ Article number||Variant ⇒ SKU|
|Article definition ⇒ Barcode||Variant ⇒ Barcode|
|Article definition ⇒ Country of origin code||Inventory item ⇒ Country of origin code**|
|Article definition ⇒ Is active||True if Product status is Active|
|Article definition ⇒ Link to picture||Product ⇒ Image ⇒ Src|
|Article definition ⇒ MainSupplier ⇒ Supplier name||Product ⇒ Vendor|
|Article definition ⇒ Price||Variant ⇒ Price|
|Article definition ⇒ Customer price OR purchase price***||Inventory item ⇒ cost|
|Article definition ⇒ Product code||Variant ⇒ Id|
|Article definition ⇒ Statistics number||Inventory item ⇒ Harmonized system code**|
|Article definition ⇒ Weight||Variant ⇒ grams (converted to kg)|
* Example: Product title is "Hat", and the variant is "Green", then the name of the corresponding article in Ongoing WMS would be "Hat - Green".
** Setup the integration to fetch Inventory items to sync these this field.
*** Control which field is used to store the data from Inventory item cost in the integration setup.
By default, the integration will only sync those products and variants in Shopify that have been updated since the last time the integration ran.
Orders are automatically transferred from Shopify to the WMS. If an order has been cancelled in Shopify the corresponding order will be cancelled in Ongoing WMS as well. Note that it is only possible to cancel orders in Ongoing WMS if the warehouse have not yet started working on it!
Click the following button to see the field mapping.
|Ongoing WMS field||Shopify field|
|Order info ⇒ Customer price||Order ⇒ Total price|
|Order info ⇒ Customs ⇒ Customs value currency code||Order ⇒ Currency|
|Order info ⇒ Delivery instruction||Order ⇒ Shipping lines ⇒ Title (from the first shipping line)|
|Order info ⇒ Goods owner order id||Order ⇒ Id|
|Order info ⇒ Notification ⇒ Email||Order ⇒ Customer ⇒ Email OR Order ⇒ Email|
|Order info ⇒ Notification ⇒ Mobile phone||Order ⇒ Shipping address ⇒ Phone OR Order ⇒ Phone|
|Order info ⇒ Notification ⇒ Notify by SMS||Order ⇒ Shipping address has a valid phone number|
|Order info ⇒ Notification ⇒ Notify by email||Order ⇒ Customer ⇒ Email has valid email|
|Order info ⇒ Order number||Order ⇒ Order number|
|Order info ⇒ Order remark||Order ⇒ Note|
|Order info ⇒ Order service point code||Info from app|
|Order info ⇒ Order type||Based on integration setting|
|Order info ⇒ Way of delivery type||Info from app or Shipping lines*|
|Customer ⇒ Address||Shipping address ⇒ Address|
|Customer ⇒ Address2||Shipping address ⇒ Address2|
|Customer ⇒ City||Shipping address ⇒ City|
|Customer ⇒ Country code||Shipping address ⇒ Country code|
|Customer ⇒ Country state code||Shipping address ⇒ Province code|
|Customer ⇒ Customer number||Order ⇒ Id|
|Customer ⇒ Email||Shipping address ⇒ Customer ⇒ Email|
|Customer ⇒ Mobile phone||Shipping address ⇒ Phone|
|Customer ⇒ Name||Shipping address ⇒ First name + last name**|
|Customer ⇒ Notify by SMS||Based on integration setting|
|Customer ⇒ Notify by email||Based on integration setting|
|Customer ⇒ Post code||Shipping address ⇒ Zip|
|Customer ⇒ Remark||Order ⇒ Customer ⇒ Note|
|Customer ⇒ Telephone||Shipping address ⇒ Phone|
|Order line ⇒ Article name||Line item ⇒ name|
|Order line ⇒ Article number||Line item ⇒ SKU OR Line item ⇒ Variant id|
|Order line ⇒ Currency code||Order ⇒ Currency|
|Order line ⇒ Customer line price||Line item ⇒ Price x Number of items|
|Order line ⇒ Discount||Sum of Line item ⇒ Discount allocations ⇒ Amount|
|Order line ⇒ External order line code||Line item ⇒ Id|
|Order line ⇒ Number of items||Line item ⇒ Quantity - refunded quantity***|
|Order line ⇒ Order line total customs value||(Line item ⇒ Price x Number of items) - Sum of Line item ⇒ Discount allocations ⇒ Amount|
* If an app supported by the integration is used in Shopify the way of delivery is extracted from the meta data created by the app. Otherwise the way of delivery type is created based on the first shipping line on the order.
** If the address is connected to a company, the company name will be placed before the first name.
*** The refunded quantity is calculated on refunded line items where the restock type is either cancel, no_restock or return.
Note: If the shipping address on the order is empty, the customer information is extracted from the billing address.
The integration will only sync those orders in Shopify that have been updated since the last time the integration ran. Additionally, the following filters are used:
|Shopify field||Default filter|
Ongoing WMS supports order line fulfillment locations. Our integration always connects to a specific warehouse location in Shopify. With this setting activated, only order lines assigned to our location are transferred to Ongoing WMS. This means that orders and parts of orders can be fulfilled at different locations. Please note that Ongoing WMS fetches orders every 15 minutes, meaning that an order should have the correct location set when the order is created. Otherwise, it may be transferred to Ongoing WMS before the correct location is set.
Once an order has been picked by the warehouse and information about the order sent to a shipping platform the order can be fulfilled in Shopify. The integration will then update the delivered quantity and mark the order as fulfilled in Shopify. During this step it is also possible to add tracking information to Shopify, as well as trigger an email to the end-customer that is sent from Shopify. Partial delivery is supported. The fulfillment of order can be run automatically every time the integrations runs by configuring some filters for which orders should be fulfilled, or it can be triggered manually.
Stock balance updates
Ongoing WMS manages the stock balances and continuously synchronizes these with Shopify. Note that for the integration to be allowed to write the stock balance to the variants in Shopify each variant must have the flag "Track quantity" activated:
Note: It is important that each variant in Shopify has a unique SKU. The reason for this being that SKUs should be unique in Ongoing WMS. If there are multiple variants in Shopify with the same SKU this will lead to only one article in Ongoing WMS, and because of this all variants with the same SKU in Shopify will get the stock balance from the same article in Ongoing WMS.
Ongoing WMS contains support for efficient returns of goods. More information about the feature can be found at customer returns scanning page. When returns are performed in Ongoing WMS, they can be automatically reported as a refund to Shopify.
There are apps which can be installed in Shopify which allow the end-customer to select their preferred shipping method, and in some cases also select which pickup point they want the order to be delivered to. In some cases, this information can be automatically transferred to Ongoing WMS. You can enable support for these apps in the Administration ⇒ Integrations page in Ongoing WMS. Note that there might be some setup needed in Ongoing WMS if the app provides pickup point information.
Our Shopify integration has support for the following shipping apps:
- CLS Nordic Shipping Options
- Nordic Shipping
- Packrooster Shipping
- Porterbuddy. Note that you also have to set up an integration with Porterbuddy in Ongoing WMS.
- Smart Send
- Webshipper Shopify plugin
Shopify uses OAuth 2.0 in order to allow integrations to access the data needed. To setup the integration you will need to perform the following steps:
Install the app Ongoing WMS in the Shopify App Store.
When the app is installed you will be redirected to the Ongoing landing page:
Here you will be asked to provide credentials for the WMS where you want to setup the integration.
Username and Password corresponds to the user and password for the WMS.
In the box marked System you can provide either the URL of the WMS, for example https://demo.ongoingsystems.se/demo/, or you can provide the Ongoing customer ID which can be found using the info button at the bottom of the page when you are logged in on your WMS:
Once the correct information is provided and the login button clicked you will be redirected to Ongoing WMS.
- As the final step before creating the integration in your Ongoing WMS you can fine tune the integration settings. Once you are done click the Create button to create the integration.