# Shopify

Orderwave is pre-integrated integrated with the Shopify APIs to provide a seamless connection between your Shopify stores and Orderwave.

# Private App

Orderwave is integrated as a "Private App" that has access to your store. If you have not enabled private app development in your Shopify store, you will need to do so in the Shopify admin (opens new window). Create a private app for your Orderwave connector with the following permissions.

# Private app permissions

The following are the permissions that are needed for the Orderwave private app:

  • Assigned fulfillment orders
  • Customers
  • Draft orders
  • Inventory
  • Locations
  • Order editing
  • Orders
  • Product listings
  • Products

# Creating a Shopify connector

In order for Orderwave to connect to your Shopify store, you will need to create a Shopify Connector in Orderwave. Take note of the API Key and Password for the private app, and head to Settings > Ecommerce > Shopify Connectors in Orderwave. Select the ➕ button to create a new connector. Fill in the fields to create the connector.

Field Description
Ecom Connector Code This is the main (unique) identifier for this storefront in Orderwave, and will be linked to orders, products, inventory and more. Consider a short, all-caps name for this store, like "MYSTORE".
Ecom Connector Description This is a brief description of this storefront for your team members in Orderwave, in order to correctly identify this connector.
Currency Code The currency that your storefront will be taking orders in.

# Configuring your Shopify connector

After creating your Shopify connector, supply your web-service API credentials that you took note of when creating the private app in Shopify.

Field Description
Shop Name This should be your lower-case shop-name that is the first-part of your Shopify store URL. For example, if your store is http://mystore.myshopify.com/, then your shop name is mystore.
API Key The API key from the Shopify private app that you have created.
API Password The password from the Shopify private app that you have created. This password will be securely stored in Orderwave.

When you click "Save", Orderwave will attempt to connect to Shopify and create all of the integration requirements for your Shopify store in Orderwave. If we're unable to connect to the store API, double check your shop name, API key, and password and try again.

After your connector has successfully communicated to Shopify, you will be shown the automated tasks that have been created for this storefront. They are enabled by default, so if you are still testing, and do not want Orderwave to perform any of these operations, you can uncheck them and save the settings.

# About a Shopify Connector

A Shopify connector is a combination of a web service, data transformation templates, ingress transformation templates, Shopify location mappers, and a Shopify payments connector. Each of these elements is named with the prefix that you chose as your Ecom Connector Code, so that they can be enabled/changed independently of other storefront connectors.

# Shopify Web Service

Orderwave lets you create connected web services in your Orderwave instance, that facilitate API communication between systems. Your Shopify connector creates a web service for each store you connect.

# Data transformation templates

Orderwave will facilitate pushing data to Shopify for you: Current inventory quantities, tracking numbers and shipment updates, and updates about canceled orders. To push the data to Shopify successfully, we need to transform Orderwave data to Shopify versions of that data, and data transformation templates help us do that.

# Ingress transformation templates

Orderwave will load lots of data from Shopify, including data about orders, products, and inventory. In order to take that Shopify data, and put it into a format that Orderwave understands, we include ingress transformation templates to transform that data.

# Automated tasks

Orderwave is configured to automated the operations that keep your Orderwave instance and your Shopify store in sync. This is done with pre-configured automated tasks app jobs.

Automated task Description
{CODE}-GET-CATALOG Get the product catalog from the MR Shopify store.
{CODE}-GET-ORDERS Get orders that were placed on the MR Shopify store.
{CODE}-SEND-TRACKING Send tracking/shipment data updates to the MR Shopify store.
{CODE}-INVENTORY-SYNC Send current inventory quantities to the MR Shopify store.
{CODE}-CANCELED-ORDERS-SYNC Send cancel-order requests for canceled orders in the MR Shopify store.

WARNING

Your automated tasks will not run if your Shopify connector does not have "enabled" turned on, and it is off by default. Edit your Shopify connector by clicking the ✏ button, and turn on "enabled".

# Shopify payments connector

Orderwave can interact with payment gateways directly, but for the Shopify integration, Orderwave calls Shopify APIs to process payments. Not only does this keep Orderwave and Shopify in sync, but it allows you to process transactions with Shopify Payments (Shopify's most popular payment processing option) directly in Orderwave.

# Shopify Locations

Orderwave needs to load and map Shopify locations into your Orderwave instance in order to facilitate inventory sync tasks. Make sure that your Shopify locations are mapped to your Orderwave warehouse by clicking the ✏ button on the Shopify Connector page, and making sure that the fields for the Shopify locations are filled in properly. When these are mapped properly, we can update inventory quantities for that Shopify location based on the linked warehouse quantities in Orderwave.

# Loading the catalog

Similar to orders, Orderwave does not attempt to load every product that you have every created in Shopify (but it can if you need it to). Orderwave queries the product data in Shopify by a start-date and an end-date of when the products were created, so that it can constantly load up new products for you. You can edit these fields in your Shopify connector to load the products.

Field Description
Product fetching start date The earliest date that Orderwave will query Shopify for new products to import.
Product fetching end date The latest date that Orderwave will query Shopify for new products to import.

If you need to do a full catalog sync, there is a button for each Shopify Connector called "Full Catalog Load". This button will trigger Orderwave to query and import your entire product catalog. If you have just created your Shopify Connector in Orderwave, it may be the best place to start to get your entire catalog synced up.

# Products, variants, and inventory

Orderwave's catalog is similar to Shopify, in that both Shopify and Orderwave have products, and those products relate to individual SKUs. Where Shopify products relate to variants, Orderwave products relate to inventory.

Products cannot be created in Orderwave unless the inventory exists first, so the automated tasks are setup by default to import the inventory (variants) first, then the products. If running these tasks manually, you will want to run the following automated tasks in this order, to make sure that inventory is imported first, then the products:

  1. {CODE}-GET-CATALOG Get the product catalog from the MR Shopify store. This task gets the Shopify product catalog data, and saves the data to the feed section.
  2. PARSE-INVENTORY-IMPORT Parse and prepare inventory data in the inventory items feed section.
  3. INVENTORY-IMPORT Import inventory (SKUs) that are ready in the inventory items feed section. This task does the actual import process of new inventory records.
  4. PARSE-PRODUCT-IMPORT Parse and prepare the product data that is loaded into the product feed section. Now that the inventory has been loaded, we can parse the product data to import.
  5. PRODUCT-IMPORT Import the product data that that is ready in the product feed section.

# Getting orders

For the very first import job, Orderwave does not attempt to grab all of the orders from your Shopify store that were ever placed. Instead, it uses fields from your Shopify connector that specify a start-date and an end-date of dates to query Shopify. These dates are designed to increment as run as automated tasks locate and import orders.

Field Description
Order fetching start date The earliest date that Orderwave will query Shopify for new orders to import.
Order fetching end date The latest date that Orderwave will query Shopify for new orders to import.

Once orders have been loaded the first time, Orderwave keeps track of the last order-ID from Shopify that was loaded, and stores it in the following field. When Orderwave again tries to query orders from Shopify, it will query orders that were placed after this ID.

Field Description
Order Since Id The last order ID loaded by Orderwave. Further requests to load orders will request orders that were placed after this order ID.

# Order data mapping

Your Shopify orders are mapped to Orderwave using the ingress transformation template named {CODE}-SHOPIFY-ORDER-INGRESS-TEMPLATE. You can edit the template to meet your needs, but here are some things to look out for.

# Phone numbers

By default, Shopify collects either an email address for the customer, or a phone number — not both. Shipping carriers (like FedEx) require a recipient phone number. So, if customers are not supplying a phone number to you in your Shopify order data, you will want to provide a phone number, even if it is your customer service number, in the shipment data oms/shipments. You can either do this with a rule that provides a default phone number when the phone number is empty, or you can edit the ingress transformation template to provide a default there. A template edit may look like this:

"phoneNumber": "{{#if shipping_address.phone}}{{jsonFormatter shipping_address.phone}}{{else}}8001234567{{/if}}"

# Syncing inventory

Orderwave can send the current inventory quantities to Shopify. This is performed in the automated task called {CODE}-INVENTORY-SYNC. This process only sends inventory quantities mapped to your Shopify location, which is mapped to a warehouse in Orderwave.

Additionally, to keep the process lightweight and not run into Shopify's API rate-limits, this process only sends deltas (changes) to inventory quantities. For example, if we had previously sent a quantity of 5 to Shopify, and the current quantity is 5 in Orderwave, we will not send that quantity again until the quantity changes in Orderwave. If you need to do a full-push of inventory quantities to Shopify, you can delete the Delta Controllers wms/deltaControllers in the Admin > Data Browser > Delta Controllers that match the current Shopify connector code.