1. SKU mismatch
This is the most common cause. Shopify and sync apps match inventory by SKU, not product name. If Amazon uses RED-SHIRT-L and Shopify uses red-shirt-l, many sync apps treat them as different SKUs.
- Case sensitivity differences between systems.
- Trailing whitespace or invisible characters from CSV imports.
- Different SKU schemes across Shopify, the 3PL, and marketplaces.
- Variants with no SKU at all.
- Duplicate SKUs across products.
2. Two apps writing to the same inventory
A 3PL app, sales channel app, inventory management app, subscription app, CSV import, or custom integration can all update Shopify inventory. If two of them both write counts, they can overwrite each other.
In adjustment history, this looks like rapid back-and-forth changes from different sources: one app sets stock to 100, another sets it to 95, then the first sets it back.
3. Sync app webhook failure
Inventory apps often depend on webhooks. Shopify tells the app something changed, and the app updates another system, or the other system notifies the app and the app updates Shopify. When that chain fails, both systems can silently drift.
- OAuth scopes changed and the app was not reauthenticated.
- The app server is down or rate-limited.
- A webhook subscription was deleted or expired.
- Network timeouts happened during peak volume.
4. Bundles and kits are not configured correctly
By default, Shopify treats each SKU independently. Selling a bundle does not automatically deduct child SKUs unless a bundle app or Shopify Bundles setup handles the component relationship.
- The bundle SKU is tracked but components are not deducted.
- Components are tracked and the bundle has its own stock count, causing double-counting.
- Child SKU relationships were not configured in the bundle app.
- Multi-location bundles do not account for component locations.
5. Multi-location misallocation
With multiple locations, Shopify routes orders according to order routing rules. If those rules do not match real fulfillment operations, inventory can look wrong even when total stock is correct.
- Orders route to a location without stock.
- Closest-location routing chooses the wrong warehouse.
- A paused or deactivated location still has products assigned to it.
- Inventory transfers were never completed.
6. API rate limits during bulk updates
Apps making large inventory updates can hit Shopify API limits. Some updates succeed, others fail or queue, and the result looks like partial desync. This is common during scheduled ERP pushes, large imports, and sale launches.
7. Reserved inventory does not clear
Checkout, subscription, B2B, or draft-order workflows can reserve stock. If reservations do not release as expected, available stock looks lower than reality.
8. Variant mappings changed
Migrations, bulk product changes, or some product updates can change the variant IDs an integration uses. If an app mapped to the old variant ID instead of the SKU, it may stop updating the right item.