Shopify logo

Integration between Ongoing WMS and Shopify

Table of contents

Introduction

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.

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.

Features

Article registry

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 is 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. Click the following button to see the field mapping:

Show field mapping

Ongoing WMS field Shopify field
Article definition ⇒ Article name<Product ⇒ Title> - <Variant ⇒ Title>*
Article definition ⇒ Article numberVariant ⇒ SKU
Article definition ⇒ BarcodeVariant ⇒ Barcode
Article definition ⇒ Country of origin codeInventory item ⇒ Country of origin code**
Article definition ⇒ Is activeTrue if Product status is Active
Article definition ⇒ Link to pictureProduct ⇒ Image ⇒ Src
Article definition ⇒ MainSupplier ⇒ Supplier nameProduct ⇒ Vendor
Article definition ⇒ PriceVariant ⇒ Price
Article definition ⇒ Customer price OR purchase price***Inventory item ⇒ cost
Article definition ⇒ Product codeVariant ⇒ Id
Article definition ⇒ Statistics numberInventory item ⇒ Harmonized system code**
Article definition ⇒ WeightVariant ⇒ 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.

Filters

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

Orders are automatically transferred from Shopify to the WMS. Click the following button to see the field mapping. When orders are fulfilled a fulfillment in Shopify is created with the delivered quantity per order row and tracking number. Partial delivery is supported.

Show field mapping

Ongoing WMS field Shopify field
Order info ⇒ Customer priceOrder ⇒ Total price
Order info ⇒ Customs ⇒ Customs value currency codeOrder ⇒ Currency
Order info ⇒ Delivery instructionOrder ⇒ Shipping lines ⇒ Title (from the first shipping line)
Order info ⇒ Goods owner order idOrder ⇒ Id
Order info ⇒ Notification ⇒ EmailOrder ⇒ Customer ⇒ Email OR Order ⇒ Email
Order info ⇒ Notification ⇒ Mobile phoneOrder ⇒ Shipping address ⇒ Phone OR Order ⇒ Phone
Order info ⇒ Notification ⇒ Notify by SMSOrder ⇒ Shipping address has a valid phone number
Order info ⇒ Notification ⇒ Notify by emailOrder ⇒ Customer ⇒ Email has valid email
Order info ⇒ Order numberOrder ⇒ Order number
Order info ⇒ Order remarkOrder ⇒ Note
Order info ⇒ Order service point codeInfo from app
Order info ⇒ Order typeBased on integration setting
Order info ⇒ Way of delivery typeInfo from app or Shipping lines*
Customer ⇒ AddressShipping address ⇒ Address
Customer ⇒ Address2Shipping address ⇒ Address2
Customer ⇒ CityShipping address ⇒ City
Customer ⇒ Country codeShipping address ⇒ Country code
Customer ⇒ Country state codeShipping address ⇒ Province code
Customer ⇒ Customer numberOrder ⇒ Id
Customer ⇒ EmailShipping address ⇒ Customer ⇒ Email
Customer ⇒ Mobile phoneShipping address ⇒ Phone
Customer ⇒ NameShipping address ⇒ First name + last name**
Customer ⇒ Notify by SMSBased on integration setting
Customer ⇒ Notify by emailBased on integration setting
Customer ⇒ Post codeShipping address ⇒ Zip
Customer ⇒ RemarkOrder ⇒ Customer ⇒ Note
Customer ⇒ TelephoneShipping address ⇒ Phone
Order line ⇒ Article nameLine item ⇒ name
Order line ⇒ Article numberLine item ⇒ SKU OR Line item ⇒ Variant id
Order line ⇒ Currency codeOrder ⇒ Currency
Order line ⇒ Customer line priceLine item ⇒ Price x Number of items
Order line ⇒ DiscountSum of Line item ⇒ Discount allocations ⇒ Amount
Order line ⇒ External order line codeLine item ⇒ Id
Order line ⇒ Number of itemsLine 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.

Filters

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:

Show filters

Shopify field Default filter
Financial statusAuthorized
Fulfillment statusUnshipped
Order statusOpen

Fulfillment locations

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.

Fulfillment locations in Shopify

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:

How to activate quantity tracking in Shopify

Returns

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.

Default settings and considerations

The integration provides default settings which are suitable in most cases. However, there are some possibilities for customization.

  1. Synchronization interval. How often should information be transferred?
    Default: Every 15 minutes. It is usually a suitable balance between responsiveness and band-width usage.
  2. Do you have any variant of your articles without unique article numbers? For example, colors, sizes, packaging.
    Default: No.
  3. Should stock synchronization be activated?
    Default: No.
  4. Which status should an order have in Shopify to be transferred to the WMS?
    Default: Order status "open", financial status "authorized" and fulfillment status "unshipped".
  5. Should fulfilled orders be automatically reported to Shopify as fulfilled and the delivered numbers of items per order line be set?
    Default: Yes. If yes, please answer the following questions:
    1. When during the order handing process should the order be reported as fulfilled in Shopify?
      Default: When a tracking number has been received from the shipping platform (e.g. nShift Delivery)
    2. Should tracking numbers be transferred to Shopify?
      Default: Yes.
    3. How should the customer be notified about the delivery? Can be done from the warehouse or from Shopify. Using Shopify creates possibility for customization.
      Default: Shopify.
  6. Should order fulfillment locations be used to only sync orders assigned to this warehouse location?
    Default: No.
  7. Should an order that have been cancelled in Shopify also be cancelled in the WMS?
    Default: Yes.
  8. It is possible to automatically map carrier alternatives from Shopify to Ongoing WMS when retrieving orders. This must be done from cases to case.
    Default: Not included.
  9. Do you want returns to be automatically refunded in Shopify?
    Default: No.

Preparations

For us at Ongoing WMS to implement the integration for the specific Shopify store we need the following operations to be performed by you:

Please see this guide on how to set up an integration between Shopify and your Ongoing WMS.