
WooCommerce stock sync works when one system is the single source of truth for stock and every other channel, your shop till, your website and marketplaces such as Amazon or eBay, reports sales to it and takes stock levels from it within minutes. Overselling happens when two systems each think they own the number, or when updates run too slowly at busy times. The fix is usually a clear decision about where stock lives, a reliable connector or custom integration, and a small safety buffer on fast-selling lines.
Key takeaways
- Pick one master system for stock, usually your EPOS or inventory system if you have a physical shop, and make every channel follow it.
- WooCommerce's own Manage stock setting reduces stock as orders are placed and adds it back on returns; it needs to be switched on for sync to mean anything.
- The WooCommerce REST API exposes stock fields and webhooks, which is what connectors and custom integrations use.
- Use buffers on low-stock, fast-moving lines rather than expecting instant sync everywhere.
- Match products by SKU across every system before you connect anything.
Why retailers oversell across channels
Picture a shop with one jacket left in medium. A customer buys it at the till at 11:02. At 11:03 someone orders the same jacket on your website, and at 11:05 a third person buys it through a marketplace listing. If each system keeps its own stock count and they only compare notes overnight, you now have two refunds to make and two disappointed customers, and cancellations that you then need to check against each marketplace's seller rules.
The underlying causes are nearly always the same:
- No single source of truth. Staff adjust stock in the till, the website and the marketplace separately.
- Slow or batch updates. A sync that runs every few hours cannot keep up with a busy Saturday.
- Mismatched products. SKUs differ between systems, or variations such as size and colour do not map one to one.
- Manual stock takes entered in one place and not the others.
- Returns and cancellations that restock one system but not the rest.
If you sell on marketplaces as well as your own site, our comparison of selling on your own website versus Amazon covers the commercial side. This guide is about keeping the numbers right.
Step one: decide where stock lives
Before choosing software, decide which system owns the stock figure. Everything else follows from that.
| Your set-up | Usual source of truth | Why |
|---|---|---|
| Physical shop with an EPOS till, plus WooCommerce | The EPOS or its back office | Deliveries, stock takes and most sales already happen there |
| Online only, WooCommerce plus marketplaces | WooCommerce or a dedicated inventory system | Keeps orders and stock in one admin |
| Several shops, warehouse and online | An inventory or order management system | Handles stock by location and transfers between them |
| Wholesale and retail from one stock pool | ERP or inventory system | Trade orders and retail orders draw on the same stock |
Once decided, write it down for staff: deliveries, adjustments and stock takes go into the master system only. In our experience, most sync problems we fix turn out to be process problems first.
How WooCommerce handles stock on its own
WooCommerce has inventory settings under WooCommerce, Settings, Products, Inventory, documented in its product settings guide. The ones that matter for sync:
- Manage stock turns on stock counts. WooCommerce then reduces stock as sales are made and adds it back when orders are returned. Without it, products only have a status such as in stock or out of stock.
- Hold stock (minutes) reserves stock for orders awaiting payment. When the time runs out, the pending order is cancelled and the stock is released. This applies to orders in Pending payment status, not On hold.
- Low stock and out of stock thresholds trigger email notifications and, at the out of stock threshold, mark the product out of stock.
- Out of stock visibility can hide sold-out items from the catalogue.
For sync, every product you sell across channels should have stock managed and a unique SKU.
In our builds, the out of stock threshold is a useful buffer. Setting it to 1 on a fast-selling line means the website stops selling while one item remains, leaving that last unit for the till.
WooCommerce EPOS integration: your options
1. An off-the-shelf connector
Many EPOS and inventory systems offer a WooCommerce connector, either built in or through an app store. These are usually the quickest and cheapest route when your set-up is standard: one shop, simple products and SKUs that already match. Check how often it syncs, whether it is two-way, how it handles variations, and what happens to stock when an online order is refunded.
2. A multichannel inventory platform
If you sell across WooCommerce, a till and several marketplaces, a multichannel inventory tool can sit in the middle and push stock to each channel. This adds a monthly cost but can save building many separate links.
3. A custom integration
Custom work makes sense when connectors do not fit: bundles and kits that draw on several stock items, stock across multiple locations, unusual product structures, trade pricing, or an older EPOS without a ready connector. A custom sync is built on the WooCommerce REST API, which exposes fields such as manage_stock and stock_quantity, supports batch product updates, and offers webhooks for events such as order.created and product.updated. Our guide to custom WooCommerce plugins explains when bespoke code is worth it.
| Need | Connector | Multichannel tool | Custom |
|---|---|---|---|
| One till, simple products | Good fit | Usually more than needed | Rarely needed |
| Website plus several marketplaces | Partial | Good fit | Possible |
| Bundles, kits or made-to-order components | Often weak | Varies | Good fit |
| Stock by location or branch | Varies | Often good | Good fit |
| Older or niche EPOS | May not exist | May not support it | Good fit if the EPOS has an API or export |
What a sync project involves
Whichever route you choose, the work tends to follow the same order. First comes a product data audit: exporting products from every system, matching them by SKU and fixing the gaps, which is often the longest step. Next is a short written specification covering which system owns stock, which events trigger an update, how returns and refunds flow and who gets alerted when something fails. Then the connector is configured or the integration built and tested against a copy of your shop, with real orders, refunds and stock takes run through it. Finally, go-live is timed for a quiet trading day, with a full stock count reconciled across systems on the morning of launch. Skipping the audit is the most common reason a new sync makes things worse rather than better, in our experience.
Sync stock with Amazon and other marketplaces
Marketplaces add their own complications. They have their own product identifiers, listing rules and order flows, and their own approach to cancellations. A few principles help regardless of which channels you use:
- Do not list your full stock everywhere. For low-stock lines, offer a share of stock to each marketplace, or hold a buffer.
- Pull orders in quickly. The sooner a marketplace order reaches your master system, the sooner other channels are updated.
- Treat marketplace-fulfilled stock separately. Stock held in a marketplace's own warehouse is not available to your till or website and should not be counted as if it were.
- Check each channel's rules on stock accuracy and cancellations in its seller documentation.
How to stop overselling: a sync design checklist
- Clean the product data. Every product and variation has one unique SKU, identical in every system.
- Name the source of truth and lock down stock editing elsewhere.
- Decide the direction of each flow. Stock levels go out from the master; sales and returns come back to it.
- Use event-driven updates such as webhooks where possible, with a scheduled full reconciliation as a safety net.
- Set buffers through out of stock thresholds or channel allocations for fast or scarce lines.
- Handle failures loudly. If a sync call fails, it should retry and alert someone, not fail silently.
- Log every change with the channel and time, so you can trace a mismatch.
- Test the awkward cases: refunds, part-refunds, exchanges, cancelled marketplace orders and stock takes.
- Plan for peaks. Black Friday and Christmas traffic should be tested in advance, not discovered live.
Frequently asked questions
Can WooCommerce sync stock with my shop till?
Yes, if your EPOS has a WooCommerce connector or an API. Many systems offer a ready-made integration for simple set-ups. Where there is no connector, or your products are more complex, a custom integration can use the WooCommerce REST API to update stock levels and pass online orders back to the till system.
How often should stock sync between channels?
As close to real time as your systems allow, triggered by each sale, return or adjustment rather than on a fixed timer. A full scheduled reconciliation, for example nightly, then catches anything missed. For scarce, fast-selling lines, a small buffer protects you during any delay.
What is the Hold stock setting in WooCommerce?
It reserves stock for unpaid orders for the number of minutes you set. If payment does not arrive in time, WooCommerce cancels the pending order and returns the stock. It applies to orders in Pending payment status. Leaving it blank disables the hold.
Why do my stock levels drift out of sync?
Usually because stock is edited in more than one system, SKUs do not match, returns are processed in only one place, or a sync failed without anyone noticing. Fix the process first: one master system, matching SKUs, logged changes and alerts on failed updates. Then look at the software.
Do I need a custom plugin for WooCommerce stock sync?
Not always. Standard connectors and multichannel tools cover many retailers. Custom work earns its cost when you have bundles or kits, stock by location, an EPOS without a connector, or business rules that off-the-shelf tools cannot follow, such as allocating stock between trade and retail customers.
Get your stock in step
Start by deciding where stock lives and checking every SKU matches across your till, website and marketplaces. If a connector will not handle your products or channels, our custom WooCommerce plugin team can build a sync around the way you actually trade. Start a project or contact us to talk through your set-up.