Inventory Sync
When you sell a product in-store, your WooCommerce store needs to reflect the updated stock level. The inventory sync feature automatically pushes stock changes from Brother POS to WooCommerce, keeping your online store accurate and preventing overselling.
How Inventory Push Works
Inventory sync is a one-way push from Brother POS to WooCommerce. Brother POS is the source of truth for stock levels, and WooCommerce is updated to match.
The push runs at your configured polling interval (default: every 15 minutes) and includes:
- All products that have a WooCommerce product mapping.
- Both simple products and variations.
- Stock quantity, manage_stock flag, and stock status (in stock / out of stock).
What Gets Pushed

For each product with a WooCommerce mapping, the following data is sent:
| Field | Value | Description |
|---|---|---|
stock_quantity | Integer | Available stock (current stock minus reserved) |
manage_stock | Boolean | Whether WooCommerce should track stock for this product |
stock_status | instock / outofstock | Based on whether stock is greater than zero |
Available Stock Calculation
The stock quantity sent to WooCommerce is the available stock, which accounts for reservations:
Available Stock = Current Stock - Stock Reservations
Stock reservations include items reserved for pending WooCommerce orders, pending wholesale orders, and other holds. This ensures your online store does not accept orders for products that are already allocated.
Simple Products vs. Variations
Simple Products
For simple (non-variable) products:
- Stock quantity is pushed directly.
manage_stockis set totrue.- Stock status is set based on the stock quantity.
Variable Products (Parent)
For parent products that have variations:
manage_stockis set tofalseon the parent. WooCommerce manages stock at the variation level.stock_statusis set toinstockif any active variation has stock, oroutofstockif all variations are out of stock.- The parent's stock quantity is informational only.
Variations
Each variation is updated individually through the WooCommerce Variations API:
- Stock quantity reflects the specific variation's available stock.
manage_stockis set totrue.- Stock status is based on the variation's individual stock level.
Batch Processing
To minimize API calls and improve performance, Brother POS uses batch updates for simple and parent products:
- Product updates are collected into batches of up to 100 products.
- Each batch is sent as a single API request using the WooCommerce Batch Update endpoint.
- If a batch fails, Brother POS falls back to updating each product individually.
WooCommerce does not support batch updates for variations. Each variation is updated with an individual API call. If you have many variations, inventory push may take longer.
When Inventory Is Pushed
Inventory push runs automatically at your configured polling interval. Stock is also pushed in these scenarios:
Automatic Triggers
- Scheduled sync -- Runs every N minutes based on your polling interval.
- After a sale -- Stock deduction triggers an update on the next sync cycle.
- After a return -- Stock restoration triggers an update on the next sync cycle.
- After a stock adjustment -- Manual stock changes are picked up in the next cycle.
- After order fulfillment -- When a WooCommerce order is fulfilled, stock deductions push back.
Manual Trigger
You can force an immediate inventory push:
- Go to Admin > WooCommerce > Monitor.
- Click Force Sync.
- Brother POS runs a full product sync immediately (categories, then products). This is a product sync, not an inventory-specific push.
Monitoring Push Status
Each WooCommerce product mapping includes a sync status:
| Status | Meaning |
|---|---|
synced | Stock was successfully pushed to WooCommerce |
error | The last push attempt failed |
After a push completes, Brother POS updates the last_synced_at timestamp on each product mapping. You can view this on the Health Monitor page.
Push Results
After each inventory push, Brother POS records detailed statistics:
| Metric | Description |
|---|---|
| Products Processed | Total products evaluated for pushing |
| Products Updated | Products successfully updated in WooCommerce |
| Products Failed | Products that failed to update |
| Products Skipped | Products without a WooCommerce mapping |
| Variations Updated | Variations successfully updated |
| Variations Failed | Variations that failed to update |
These metrics are visible in the sync log on the Health Monitor page.
Handling Push Failures
When a stock push fails for a product:
- The error is logged in the sync log with details about the failure.
- The product's sync status is set to
error. - Brother POS will retry on the next sync cycle.
Common causes of push failures:
| Error | Cause | Solution |
|---|---|---|
| Product not found | WooCommerce product was deleted | Remove the WooCommerce mapping in Brother POS |
| API rate limit | Too many requests in a short time | Increase your polling interval |
| Authentication failed | API keys revoked or expired | Re-generate WooCommerce API keys |
| Network timeout | Connectivity issues | Check your internet connection; Brother POS retries automatically |
Failed pushes are not lost. Brother POS includes every mapped product in every push cycle, so a failed product will be retried on the next cycle. You do not need to manually retry individual products.
Preventing Overselling
The combination of stock reservations and inventory push works together to prevent overselling:
- When a product is sold in-store, the stock count is immediately decremented.
- On the next sync cycle, the updated stock is pushed to WooCommerce.
- If a WooCommerce order comes in before the push, the stock reservation system ensures the in-store stock is not available for another online order.
There is always a small window (up to your polling interval) between an in-store sale and the WooCommerce stock update. During high-traffic periods, consider reducing your polling interval to minimize this window. Setting it to 1 minute provides near-real-time updates.
Inventory Discrepancy Handling
If you notice discrepancies between Brother POS and WooCommerce stock levels:
- Brother POS is always the source of truth. In-store sales and adjustments are recorded immediately.
- Force a sync from the Health Monitor to push current levels immediately.
- Check for failed pushes in the sync log -- a failed push means WooCommerce was not updated.
- Review stock adjustments in the admin panel to find when stock was changed.
- WooCommerce-side changes (manual stock edits in WooCommerce) are overwritten on the next push. Avoid editing stock directly in WooCommerce.
Best Practices
- Do not edit stock in WooCommerce directly. Always make stock adjustments in Brother POS. The next inventory push will overwrite any WooCommerce-side changes.
- Use a reasonable polling interval. 5 minutes is a good default. Set it to 1-2 minutes during sales events or high-traffic periods.
- Monitor the Health Monitor. Check for failed pushes regularly, especially after network issues.
- Enable stock management in WooCommerce. For inventory push to work, products must have "Manage Stock" enabled in WooCommerce.
What's Next?
- Freebie Sync -- Sync freebie campaigns to WooCommerce as coupon rules.
- Health Monitor -- Monitor push status and troubleshoot errors.
- WooCommerce Setup -- Review your integration configuration.