Inventory Sync
Use this page to understand how your in-store stock reaches your WooCommerce website, and what to do when the two don't match.
Quick steps
- Change stock in Brother POS only — sales, returns and stock adjustments. Don't edit stock in WooCommerce.
- Plugin push / pull: nothing to do. Stock goes out with the plugin's next catalog pull (at most every 15 minutes when your site gets visits).
- Legacy pull: make sure Push Inventory to WooCommerce is ticked in the WooCommerce settings. To send stock sooner, go to Settings > WooCommerce Integration and click Push Now on the Inventory Push card, or Force Sync on the Health Monitor.
- If something failed, click View All Logs on the WooCommerce Integration page and open the Inventory Push entry.
Common questions
Why does the website show 1 when I have 0.5 g? WooCommerce only holds whole numbers, so stock is rounded up. The product stays in stock.
Can an online order and an in-store sale take the same item? When an online order comes in, Brother POS sets that stock aside until the order is fulfilled. There is always a short delay before in-store sales reach the website.
I changed stock in WooCommerce and it changed back. Brother POS is the source of truth. On legacy pull the next push overwrites it; on plugin push / pull the WooCommerce edit changes your Brother POS stock too — so make stock changes in Brother POS.
More detail: how stock gets to WooCommerce
When you sell a product in-store, your WooCommerce store needs to show the new stock level. Inventory sync sends stock from Brother POS to WooCommerce so your online store stays accurate and you avoid overselling.
How Stock Gets to WooCommerce
How stock travels depends on your connection method.
Plugin push / pull (recommended)
Stock rides along with the catalog pull. Each product the plugin pulls carries its current Brother POS stock and whether it is in or out of stock. There is no separate stock push to run or fail.
- The plugin checks for changed products at most every 15 minutes when your site gets visits, so an in-store sale reaches WooCommerce on the next pull.
- The stock sent is the product's current stock in Brother POS, rounded up to a whole number (WooCommerce only holds whole numbers, so 0.5 g is sent as 1 and the product stays in stock).
Older versions of the plugin sent stock back to Brother POS when they saved a pulled product, when Brother POS updated WooCommerce, and when WooCommerce took stock off for an online order. That could overwrite your Brother POS stock and prices with WooCommerce's copy, or count an online sale twice. Version 1.7.20 and newer stop this. The plugin's Diagnostics page shows which version you have.
Legacy pull
Brother POS pushes stock to WooCommerce over the WooCommerce REST API. The push runs as part of the sync cycle, at most once per polling interval (default: every 15 minutes), when Push Inventory to WooCommerce is ticked.
Each push includes every product that is linked to a WooCommerce product, including variations. For each one it sends:
- The stock quantity, as a whole number.
- Whether WooCommerce should track stock for it.
- In stock or out of stock.
More detail: legacy pull — available stock, variations, timing and results
Available Stock (Legacy Pull)
For simple products and variations, the legacy push sends available stock:
Available Stock = Current Stock - Reserved Stock
Reserved stock includes items held for online orders that haven't been fulfilled yet. This keeps your website from selling stock that is already set aside.
Simple Products vs. Variations (Legacy Pull)
| Product type | What is sent |
|---|---|
| Simple product | Its available stock, rounded up to a whole number. WooCommerce tracks its stock. |
| Variable product (parent) | WooCommerce does not track stock on the parent. It is marked in stock if any active variation has stock, otherwise out of stock. |
| Variation | Its own available stock, rounded up to a whole number (0.5 g is sent as 1), the same as a simple product. WooCommerce tracks its stock. |
Simple and parent products are sent in batches of up to 100. If a batch fails, Brother POS tries each product one at a time. Variations are updated one at a time, so stores with many variations take longer.
When Stock Is Pushed (Legacy Pull)
Every push sends all linked products, so any change since the last push goes out on the next one: sales, returns, stock adjustments, and fulfilled online orders.
Products whose categories all have WooCommerce Sync switched off on the Categories page are skipped — their stock isn't pushed, since they are being kept off your website.
Manual Trigger
- Go to Settings > WooCommerce Integration.
- On the Inventory Push card, click Push Now.
This starts a sync cycle. Stock is only pushed if the last push is older than your polling interval; otherwise it waits for the next cycle.
The Force Sync button on the Health Monitor runs a sync cycle straight away and pushes stock even if the last push was recent. It only sends from Brother POS to WooCommerce; it never pulls stock back.
Push Results (Legacy Pull)
Each push is recorded as an Inventory Push entry in the sync logs. Open Settings > WooCommerce Integration, click View All Logs, then open an entry to see:
- Records Processed and Records Failed
- A Details breakdown: products updated, failed, and skipped (not linked to WooCommerce), plus variations updated and failed.
Handling Push Failures (Legacy Pull)
Failed pushes are not lost. Every push includes every linked product, so a product that failed is tried again on the next cycle.
| Problem | Cause | What happens / what to do |
|---|---|---|
| Product not found | The product was deleted in WooCommerce | Brother POS removes the broken link automatically and marks the product to be re-created in WooCommerce. |
| Rate limited | Too many requests to your website | Increase your polling interval. |
| Authentication failed | API keys revoked or wrong | Generate new WooCommerce API keys and enter them in the WooCommerce settings. |
| Timeouts or blocked requests | Your host or firewall is blocking Brother POS | Switch to plugin push / pull, which doesn't need Brother POS to reach into your site. |
More detail: preventing overselling and fixing stock differences
Preventing Overselling
- When a product sells in-store, its stock goes down in Brother POS immediately.
- On the next pull (plugin) or push (legacy), WooCommerce gets the new stock.
- When an online order comes in, Brother POS reserves the stock so it isn't sold again in-store before the order is fulfilled.
There is always a short window between an in-store sale and the WooCommerce update: up to your polling interval in legacy pull (minimum 5 minutes), or until the plugin's next catalog pull.
Fixing Stock Differences
- Treat Brother POS as the source of truth. In-store sales and adjustments are recorded there immediately.
- Check for failed pushes in the sync logs (legacy pull).
- Review stock adjustments in Brother POS to see when stock changed.
- Avoid editing stock in WooCommerce. In legacy pull, Brother POS ignores it and the next push overwrites it. In plugin push / pull, a stock edit in WooCommerce is sent back and changes the Brother POS stock.
Best Practices
- Adjust stock in Brother POS, not WooCommerce.
- Keep the polling interval reasonable (legacy pull). The default is 15 minutes, and the minimum is 5.
- Check the Health Monitor and sync logs for failures, especially after network problems.
What's Next?
- Plugin Sync (Firewall-Proof) — How stock rides along with the plugin catalog pull.
- Freebie Sync — Show freebie offers on your WooCommerce store.
- Health Monitor — Check sync activity and troubleshoot errors.
- WooCommerce Setup — Review your integration settings.