Skip to main content

Why isn't inventory syncing from Xero to WooCommerce?

Inventory syncs from Xero only when the Xero item changes after your product is mapped. What to check, how to bring a stock level across now, and why turning the setting off and on only looks back 3 hours.

Inventory levels sync from Xero into WooCommerce on a schedule, and only for Xero items that have changed since we last checked. That second part is the reason behind almost every inventory question we get: if a Xero item has not changed recently, we are not asking Xero about it, so its stock level in WooCommerce will not move.

Here is what needs to be in place, and how to bring a stock level across right now.

What has to be true before stock will sync

All four of these need to be in place. If any one of them is missing, no stock arrives, and you will not see an entry for it in MyWorks Sync > Log.

  • Inventory is checked in MyWorks Sync > Settings > Automatic Sync, in the Xero > WooCommerce section under Data Types.

  • The Xero item is tracked. In Xero, the item needs I track this item enabled, because Xero only reports a quantity on hand for tracked items.

  • The product or variation is mapped in MyWorks Sync > Map. Unmapped products are skipped entirely. See Mapping WooCommerce products, variations, and categories to Xero.

  • Manage stock? is enabled on the WooCommerce product, under Product data > Inventory. If a variation does not manage its own stock, we update the parent product’s stock instead.

We only ask Xero about items that have changed

Each scheduled check asks Xero for items updated since our previous check, rather than for your whole catalog. Items that have not changed are not returned to us at all, so their stock levels are never looked at or compared.

That has one consequence which catches people out: mapping a product does not pull its current stock level. Mapping links the two products together for everything that happens from that point on. It does not go back and fetch the quantity Xero holds today.

So the most common version of this problem looks like this: you map a product, its Xero item was last edited weeks ago, and its stock level never arrives. From the moment you mapped it we are only asking Xero for items that changed, and that item never changes again.

How to bring a stock level across now

Change the item in Xero. Any edit updates the item’s last-changed date, which puts it into the results of the next check.

A stock adjustment in Xero is the cleanest way to do this, because it also sets the quantity you are expecting. Open the item in Xero, adjust its quantity, then wait for the next scheduled check and look in MyWorks Sync > Log for an Import Inventory entry for that item.

Turning Inventory off and back on only looks back 3 hours

Unchecking Inventory, saving, and then checking it again does reset our checkpoint. It only resets it to 3 hours back, though, and not to the beginning of time. It is not a full inventory sync.

So it will help if the item changed in Xero within the last 3 hours. It will not do anything at all for a product whose Xero item last changed last week. For those, change the item in Xero as described above.

Good to know

  • There is no button that re-syncs all of your inventory. The Pull page brings Xero products into WooCommerce and sets the stock level on products it creates, but it does not update stock on products that are already mapped.

  • How often we check is set in the dropdown beside Inventory. The shortest interval available depends on your plan: every 5 minutes on Grow and above, every 30 minutes on Rise, and hourly on Launch.

  • Xero can hold decimal quantities and WooCommerce cannot. A Xero quantity of 19.8 becomes 19 in WooCommerce. We compare whole numbers, so this will not cause the stock level to be rewritten on every check.

  • Inventory syncs from Xero into WooCommerce only. When an order syncs from WooCommerce to Xero, Xero reduces the item’s own stock as soon as the invoice is created there.

Did this answer your question?