A source warehouse has 16 units while the Shopify store shows zero; inspect the connection between them.
Journal
Shopify Development & Integrations · 7 min read

Shopify inventory not syncing? Trace one product from source to store

Your warehouse says an item is available. Shopify shows zero. Or you correct the quantity, and the old number comes back after the next sync.

Start with one affected variant at one location. Compare its identifier, stock state, and last update in both systems before changing quantities or reconnecting the app. That gives you a specific failure to investigate instead of a store-wide reset to undo.

This guide is for merchants whose existing inventory connection has stopped behaving as expected. If you're moving to Shopify for the first time, use our multi-location inventory migration guide for the cutover work.

Capture one mismatch before editing

Choose a product you can identify in the warehouse system, integration app, and Shopify. A variant is a specific option, such as a navy T-shirt in medium; the product name alone may cover several variants.

Record its SKU, Shopify variant identifier, source item identifier, location, quantity label, quantity, and observation time. Use the same time zone for both records. Add the app's last successful sync time and any error message. Exclude customer details from screenshots you send to support.

If orders are still arriving, two screenshots taken several minutes apart may describe different stock positions. Check what happened between them before treating the difference as an error.

1. Check what the app uses to match products

A SKU is your stock keeping unit: an internal code for an item. Shopify allows products without SKUs, but many connected apps depend on them. A connection that matches by SKU needs an exact match; case, spaces, duplicate values, and missing variant SKUs can cause problems. Shopify's SKU guidance [1] describes these checks.

Compare the identifier the app actually uses. It might be the SKU, a stored Shopify identifier, or an explicit mapping in the connector. Don't assume the barcode or product title is the matching key.

For a SKU-based connection, TEE-NVY-M and tee-nvy-m need attention. A second variant carrying the same SKU also needs investigation. Correct the mapping deliberately across the systems that depend on it; renaming codes in Shopify alone can leave the source still sending the old value.

What to retain: one source item matched to the intended Shopify variant, with the matching rule written down.

2. Check the location behind the number

Open the affected variant in Shopify and inspect its inventory locations. Confirm tracking is enabled and that the connector writes to the location you intend. A warehouse total and the quantity for one Shopify location are different comparisons.

This setting can be specific to the integration. For example, Extensiv's troubleshooting guidance [2] asks merchants to check both inventory tracking and the SKU's assignment to the location configured in its Shopify connection. Follow your own provider's equivalent instructions.

If Shopify's quantity looks correct but the product still appears sold out, check whether that stock can serve the customer's destination. Shopify's fulfillable inventory rules [3] connect availability to locations that ship to the customer's shipping zone. Test the affected destination, not just your own address.

For a dropshipping app, missing shipping rates at the app location can also cause an apparently stocked product to show as unavailable. Shopify provides a specific shipping-rate check [4].

Illustrative location mismatch: TEE-NVY-M has 16 available at source Warehouse A, but the connector maps A to B. Shopify shows A at zero and B at 16. Check the location mapping before changing quantities.
Illustrative location error: both systems total 16 available units, but the connector writes them to B instead of A. The arrows show the configured data destination. Verify the approved location mapping before changing quantities.

3. Compare available stock with available stock

“Inventory” isn't a single number. In Shopify, On hand includes units that are Available, Committed, and Unavailable. Available is the quantity you can sell. Incoming stock is separate until received and moved into an appropriate state. See Shopify's inventory-state definitions [5].

Suppose a location has 24 units on hand, with six committed and two unavailable. That leaves 16 available. This is an illustrative example, not a merchant result. A source reporting 24 physical units and Shopify reporting 16 available units may both be correct.

Illustrative stock calculation: 24 units on hand contains 6 committed and 2 unavailable, leaving 16 available. Compare a physical source count with On hand, or a net sellable source value with Available. Do not deduct commitments and holds twice.
The same 24 physical units can correctly produce an Available value of 16. Compare physical counts with On hand and net sellable counts with Available; do not deduct the same commitments and holds twice. Incoming stock remains separate until received.

Ask the provider which source field it sends and which Shopify state it updates. Check whether reservations and safety stock have already been deducted. Applying the same deduction in two systems understates what can be sold; ignoring it can overstate availability.

Don't overwrite Available with the warehouse's physical count simply to make the screens agree.

4. Find the last successful update

Read the app's sync log for the affected item. Look for when it received the source change, which quantity it tried to send, the target location, and whether Shopify accepted it. Save the actual error and run identifier if available.

Then inspect Shopify's inventory adjustment history [6]. The date, activity, and “Created by” information can help you connect a change to an app, staff member, or sales channel.

What you findWhat to investigate next
No record of the source changeThe source export, trigger, or scheduled job
A rejected updateThe recorded error, permissions, mapping, or retry queue
An accepted update at another locationThe connector's destination mapping
An accepted update followed by another changeOrders, staff actions, or a competing app

There is no useful universal waiting period for every Shopify connector. Check the provider's documented schedule and compare it with observed successful runs. An old “connected” badge doesn't prove that this product's latest change was processed.

If the app uses webhooks (messages sent when events occur), ask how it handles repeated deliveries and missed changes. Shopify's webhook delivery guidance [7] recommends duplicate-safe processing and describes periodic reconciliation. Those are implementation checks for the provider, not a reason to keep pressing “sync” yourself.

5. Find out who can overwrite the quantity

If the number changes and then changes back, compare the sequence of adjustments. A manual edit, warehouse connector, bundle app, or another process may be writing to the same record. Legitimate orders and returns can change stock too, so identify the action before calling it a conflict.

Agree which system owns the stock calculation for this variant and location, and how other systems submit changes to it. Have the integration owner pause a conflicting write only after checking the effect on orders and fulfillment. Uninstalling an app is a broader change; use the app exit checklist if removal is actually needed.

For a custom connector, ask the developer whether absolute stock updates protect against changes that happened after the stock was read. Shopify's inventorySetQuantities documentation [8] describes a quantity comparison check and reserves this operation for a system acting as the inventory source of truth. Bypassing that protection can overwrite newer information.

Illustrative conflicting updates for TEE-NVY-M at Warehouse A: at 10:00 the primary connector writes Available 16; at 10:01 another app writes 8; at 10:02 Shopify displays 8. The first sync succeeded, but a later writer replaced its value. Inspect Created by and the event before changing ownership.
Illustrative sequence: the primary connector writes 16, another app later writes 8, and Shopify then displays 8. Identify the later actor and event; a successful earlier sync does not rule out a conflicting update.

Verify the fix on a small, controlled test

Once you know the cause, correct it for one test variant and location. Use a test environment or a carefully controlled, authorized live test that won't create an unintended customer order or fulfillment.

  1. Record the starting quantity and state in both systems.
  2. Make one known stock change through the agreed source system.
  3. Confirm the intended Shopify variant, location, and state changed as expected.
  4. Check availability for the affected customer destination.
  5. Watch the following scheduled sync for an unexplained reversal. Confirm how repeat processing is handled before testing a retry.

Retain the before-and-after values, timestamps, log references, and person responsible for follow-up. Expand the fix only when that example behaves correctly. A matching number once is less useful than a change you can trace and explain.

Questions before changing the connection

Should I enable “Continue selling when out of stock” while I investigate?
Only if accepting orders without available stock is an intentional business decision with a clear fulfillment plan. The setting allows overselling; it doesn't repair the connection. Check Shopify's out-of-stock selling guidance [9] before changing it.
What should I send the app provider if I can't access its logs?
Send the checklist with the values you can inspect and one example of what you expected to happen. Ask the provider for the received source value, mapped Shopify variant and location, attempted update, and result for that specific run. Mark unavailable fields as unknown.

Inficial can help review the mapping, stock ownership, and ongoing support your Shopify integration needs. Bring one affected variant and its evidence checklist to start the discussion.

Sources

Manish Vasaniya, Shopify Expert, Migration, CRO & AI Commerce Specialist
About the author
Manish Vasaniya
Shopify Expert, Migration, CRO & AI Commerce Specialist

Manish Vasaniya helps ecommerce founders and teams migrate to Shopify, improve conversion, and manage the long-term evolution of complex storefronts. His work connects commerce strategy, UX, engineering, analytics, integrations, and practical AI adoption, giving brands a technical and commercially grounded path from platform decision to post-launch growth.

Shopify integrationsInventory mappingCommerce operationsLong-term Shopify support