DataMosaic

Blog · Fix a sync

Shopify inventory not updating: 9 causes, and how to catch the next one

Locations, sync intervals, untracked items, and the one nobody checks: an error the connector logged and moved past.

#Start here

Pick one product that is wrong and write down three things: what Shopify shows as available, what the ERP shows as available, and when the connector last ran. Most of the causes below can be ruled in or out from those three.

SKULocationShopifyERPDifference
TEE-BLK-MWeb warehouse1495
TEE-BLK-LWeb warehouse22220
TEE-BLK-LStore 014660

Invented figures. One size of one shirt is five units apart; the rest agree.

#The 9 causes

#1. The variant isn't tracked

If Track quantity is switched off for a variant, Shopify does not count its stock at all, so nothing the ERP sends changes it.

How to see it: open the variant and look at its inventory settings.

#2. The stock sits at another location

Shopify keeps a count per location. The ERP may be updating a location the online store does not sell from, or a location where the variant is not stocked at all. A location that does not fulfil online orders shows its on-hand count but no quantity available to sell.

How to see it: compare the count per location, not the total, and check which locations fulfil online orders.

#3. The connector hasn't run yet

Most connectors copy stock on a schedule rather than the moment it changes. A difference that disappears within the hour is timing, not a fault.

How to see it: note when the connector last ran, and look again after its next run.

#4. It copies the wrong number

On hand, committed to open orders, and available to sell are three different figures. A connector that sends on hand into Shopify's available overstates what can be sold.

How to see it: check which ERP field the connector maps to Shopify's available quantity.

#5. The SKU doesn't match

Connectors match items on SKU. A trailing space, a SKU renamed on one side, or the same SKU on two variants breaks the link without an error anyone sees.

How to see it: list the SKUs that exist on one side only.

#6. Open orders are holding stock

Orders that are paid but not yet fulfilled are committed in Shopify, and may not have reached the ERP yet. Until they do, the two available counts differ by exactly those units.

How to see it: compare committed as well as available. The difference matches the open orders for that SKU.

#7. An error nobody read

The connector failed on one item, logged it, and carried on with the rest. Every later run fails the same way, so the item stays stuck while everything around it updates. This is the one nobody checks.

How to see it: read the connector's error log for that SKU, not only the time of its last run.

#8. Two apps write the same count

An inventory app and the ERP connector both set the same number, and whichever runs last wins. The count flips back and forth between runs.

How to see it: list every app with permission to change inventory, and look at the variant's inventory history for adjustments from more than one source.

#9. Returns restocked on one side only

A return restocked in Shopify but not in the ERP, or the other way round, leaves a difference that no sync will ever close, because each side believes it is right.

How to see it: check the SKU's recent returns in both systems.

#Catch the next one

Every cause above is found the same way: put Shopify's available count next to the ERP's, per SKU and per location, and look only at the rows that differ. Do it once by hand. Shopify can export its inventory from the Inventory page, and your ERP can export the same day's stock.

Then do it every night, so the first person to notice a stuck item is you, not a customer who ordered something that is not there.

A check that runs on its own each night does the same against the systems themselves, and keeps the history, so cause 7 shows up as the same SKU differing three nights running. In DataMosaic a check only reads both systems; if you want it to act, say by sending the item to Shopify again, that is a workflow you build.

The same pattern, comparing at a grain both systems keep, is how POS and ERP sales are checked every night.

#Questions people ask

#Why is my Shopify inventory not syncing with my ERP?

Usually the connector is copying a different number from the one you expect (on hand rather than available), matching on a SKU that differs, or failing on one item and logging it. Compare the two counts per SKU and location, and read the connector's error log for the items that differ.

#Why does Shopify show a different stock level from my warehouse?

Shopify keeps a count per location and subtracts what is committed to open orders. The warehouse system may show on hand for the whole site. Compare the same figure, available, at the same location.

#How often do connectors update Shopify inventory?

It depends on the connector and how it is set up: some react to each change, many run on a schedule. Its settings or documentation say which, and a difference that clears after the next run is timing rather than a fault.

#Can Shopify sell stock it doesn't have?

Yes, if Continue selling when out of stock is on for the variant, or if the count Shopify holds is higher than the real one, which is what the nine causes above produce.

Stop comparing exports by hand.

DataMosaic checks the systems themselves overnight, tells you why they differ, and fixes it before anyone else notices.