Although WholeCell doesn't have a direct Shopify integration, customers can connect to their Shopify stores using third party tools.
Our current recommendation is to use Stock Sync (a Shopify app that imports your SKU quantities from the WholeCell API) and our ShipStation Order Import integration to bring your Shopify orders into WholeCell. With these two systems in place you will have a fully functional e-commerce integration between WholeCell and your Shopify store.
In this article I'll cover the setup and configuration of the Stock Sync app. For details about our ShipStation Order Import integration, see our help article.
Shopify Stock Sync
Once you've installed the Stock Sync app in your Shopify store, you'll need to set up your WholeCell API feed. Click on "Setup New Feed" wherever you see that on the main Stock Sync page:
On the first step, choose "Update existing products in store".
You'll need a paid subscription for this type of feed. Stock Sync's subscription levels vary based on the number of product variations you are syncing and the sync frequency.
We recommend choosing a plan based on how often you receive Shopify orders and how complex your multi-channel business is. If you receive a lot of orders on Shopify and you're also using WholeCell to sync with other e-commerce channels, you may want to choose a higher plan with frequent imports to avoid overselling.
Once you're on the template selection page, search for "REST" and click the "Customize" button on the "Rest API" tile:
You'll need to create an API app in WholeCell from the API Apps Settings Page to get API credentials that you'll use to connect to this data feed in Stock Sync. Create an API App by clicking on the "New" button from this page:
Give your app a name, I used "Shopify Stock Sync". Then make sure the app has permissions on the Stock Levels endpoint. Then hit save:
Once saved, click on your app's name. You'll need to fill out our API Application Approval Request form to get the app approved. Please fill out this form and then contact us on live chat or email at firstname.lastname@example.org -- we'll expedite the review for you.
The Stock Sync Feed will not work correctly until your WholeCell API Application Form has been approved.
When your API Application has been approved, you'll see a green Approval banner like this:
Once your API Application is approved you can begin to fill out the Stock Sync Rest API Feed details:
Endpoint (URL): https://api.wholecell.io/api/v1/stock_levels
Authorization Type: Basic Auth
Username: Use the "App ID" from your WholeCell API Application
Password: Use the "App Secret" from your WholeCell API Application
Header Params: don't use
Query Params: only use if you want to filter your stock levels by specific WholeCell statuses
Body Raw: leave blank
HTTP Method: GET
File Format: JSON
JSON Data Key: data
Variant Note: leave blank
Once you're finished, hit "Next" and you'll arrive at the Field Mappings page. This is where we'll map WholeCell's API response to the necessary attributes for Stock Sync.
You'll need to have at least one SKU with quantities in WholeCell for this to work.
Click on the field mapping input for the SKU and a dropdown should appear with options -- these are example results that have come from YOUR WholeCell account so the values will look different. Choose "sku" from the dropdown.
**If the dropdown does not appear, you likely made a mistake on the previous page. Go back and make sure your setting match exactly what we've provided.
Now, click the large blue button that says "Add field (e.g. Inventory Quantity, Price)". Choose "Inventory Quantity" from the store fields. Then, from the mapping options, choose "available":
Your "available" quantity of inventory is equal to your "on_hand" quantity (however many items of this SKU that you have in non-sold statuses in WholeCell) minus your "outstanding" quantity.
"available" = "on_hand" - "outstanding"
*NOTE* the outstanding quantity retrieved via WholeCell's API only counts open orders that are within 90 days old. If you see a discrepancy between outstanding quantity in your WholeCell account and the outstanding quantity retrieved by the API, this could be the reason.
Once you hit "Next" on Field Mappings page, you'll see a page of Advanced Settings. These mostly apply to how your Shopify store is configured. You can leave these as they are -- or update them if they apply to your store -- and hit "Finish".
Congratulations! You've finished the configuration. Now you can click "Start Process" to run a test sync. Please note -- if any of your SKUs in your Shopify store match your SKUs in WholeCell this will update them to the WholeCell quantities.
You may want to rename your feed from "REST API 1" to something more recognizable like "WholeCell Stock Feed" as I've done in the screenshot above.
If your test sync runs as expected, you can enable a scheduled sync by clicking "Turn on here":
My subscription is limited to a sync frequency of every 12 hours. If you want a more frequent sync schedule you'll need to choose a higher subscription.
And that's it! You've now enabled the Shopify Stock Sync with your WholeCell inventory. If you have any questions please reach out to us on our live chat or via email at email@example.com.
Adding Status Filters
By default, the "available" and "on_hand" quantities returned by WholeCell's API include SKU quantities from all non-sold inventory statuses.
You may want to filter your SKU quantities by inventory statuses in WholeCell. For example, if you have a "Repair" status, you may not want to include inventory counts from that status on your Shopify store.
To add status filters in Stock Sync:
Open your Feed Settings and find the "Query Params" section.
For the Key attribute, enter inventory_statuses
For the Value attribute, enter the exact name of the status you want to enable the filter for
Add an additional Query Param for each status you want to include
Save your Feed settings
In the screenshot above I've added a filter for only the "Available" status in WholeCell. Now when Stock Sync updates my quantities, only inventory that's in "Available" status will contribute towards my quantities.