Title: Mountaineering Labs Multi-Store Stock Sync for WooCommerce
Author: mountaineeringlabs
Published: <strong>July 23, 2026</strong>
Last modified: July 23, 2026

---

Search plugins

![](https://ps.w.org/mountaineering-labs-stock-sync/assets/banner-772x250.png?rev
=3620098)

![](https://ps.w.org/mountaineering-labs-stock-sync/assets/icon-256x256.png?rev=
3620094)

# Mountaineering Labs Multi-Store Stock Sync for WooCommerce

 By [mountaineeringlabs](https://profiles.wordpress.org/mountaineeringlabs/)

[Download](https://downloads.wordpress.org/plugin/mountaineering-labs-stock-sync.zip)

 * [Details](https://wordpress.org/plugins/mountaineering-labs-stock-sync/#description)
 * [Reviews](https://wordpress.org/plugins/mountaineering-labs-stock-sync/#reviews)
 *  [Installation](https://wordpress.org/plugins/mountaineering-labs-stock-sync/#installation)
 * [Development](https://wordpress.org/plugins/mountaineering-labs-stock-sync/#developers)

 [Support](https://wordpress.org/support/plugin/mountaineering-labs-stock-sync/)

## Description

Run several WooCommerce stores that sell the same products — for example a domestic
and an international site — and keep stock quantities in sync automatically.

**How it works**

 * One site is configured as the **hub**, the authoritative source of stock levels.
   The other sites are **spokes**.
 * When stock changes anywhere (a sale, a refund/restock, or a manual edit in wp-
   admin), the change is picked up via WooCommerce’s stock hooks and sent to the
   hub.
 * The hub updates its own stock **atomically** (safe under concurrent sales on 
   different sites) and broadcasts the resulting authoritative value to all spokes.
 * Products and variations are matched across sites by **SKU**. Works with both 
   simple and variable products.

**Reliable by design**

 * Outbound messages are written to a local queue (a fast database insert) — customer-
   facing requests never wait on network calls to other sites.
 * A background worker delivers queued messages within seconds and retries with 
   backoff if a peer site is temporarily unreachable. Temporary outages cause delay,
   not data loss.
 * Every message carries a unique id; receivers ignore duplicates, so retries can
   never double-apply a stock change.

**Secure**

 * Sites communicate over a dedicated REST endpoint authenticated with an HMAC-SHA256
   signature over a shared secret — no WooCommerce API keys needed.
 * Stale requests are rejected and duplicate message ids are ignored (replay protection).

**Languages**

English admin UI, fully internationalized. Translations are managed through translate.
wordpress.org and delivered automatically.

## Installation

 1. Install and activate the plugin on **every** site that should participate.
 2. On the hub site: go to _WooCommerce  Stock Sync_, set role **Hub**, choose a Site
    ID, generate a shared secret, and list the spoke URLs (one per line).
 3. On each spoke site: set role **Spoke**, choose a Site ID, paste the **same** shared
    secret, and set the Hub URL.
 4. On the hub: click **Run full resync** to push current stock levels to all spokes.
 5. Test: change a stock quantity on one site and confirm it updates on the others.
    The **Recent events** log on each site’s settings page shows exactly what was sent
    and received.

Corresponding products/variations must share the same SKU on every site, and have“
Manage stock” enabled. For variable products the SKU on **each variation** is what
counts.

## FAQ

### Do all products have to exist on every site?

No. Products that only exist on some sites are simply not synced — unknown SKUs 
are ignored by the receiver. However, every product you want synced must exist on
the hub, since all sync flows through it.

### Does a spoke work if the hub is down?

Yes. Orders complete normally — stock reports are queued locally and delivered automatically
once the hub is reachable again.

### Why is sync slow on my site?

Delivery runs on WP-Cron, which is triggered by site visits. On low-traffic sites,
configure a real server cron job to hit wp-cron.php on each site.

### My sites are on the same server and I see timeouts in the log

Ask your host about loopback requests and the number of concurrent PHP workers. 
The queue retries automatically, so changes still arrive — just with delay.

### Can I map different SKUs to each other across sites?

Identical SKUs are strongly recommended, but the `wcss_resolve_sku` filter lets 
developers map incoming SKUs to local product IDs in code.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Mountaineering Labs Multi-Store Stock Sync for WooCommerce” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ mountaineeringlabs ](https://profiles.wordpress.org/mountaineeringlabs/)

[Translate “Mountaineering Labs Multi-Store Stock Sync for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/mountaineering-labs-stock-sync)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/mountaineering-labs-stock-sync/),
check out the [SVN repository](https://plugins.svn.wordpress.org/mountaineering-labs-stock-sync/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/mountaineering-labs-stock-sync/)
by [RSS](https://plugins.trac.wordpress.org/log/mountaineering-labs-stock-sync/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.4.1

 * Display name now includes “Multi-Store” to better describe what the plugin does.

#### 1.4.0

 * Renamed to Mountaineering Labs Stock Sync for WooCommerce for a distinctive name.
 * Admin settings script is now enqueued via wp_enqueue_script instead of inline
   output.
 * Removed bundled translation files; translations are handled by translate.wordpress.
   org.

#### 1.3.0

 * Renamed to Mountaineering Labs Stock Sync for WooCommerce (trademark compliance).
 * Hardened SQL statements and cleaned up coding-standard warnings.

#### 1.2.0

 * Added German, French, Spanish, Danish and Swedish translations.

#### 1.1.0

 * English admin UI with Norwegian (bokmål and nynorsk) translations.
 * Replay/duplicate protection: every message carries a unique id; retries can no
   longer double-apply a change.
 * uninstall.php: cleans up all plugin data on deletion.
 * Schema migrations now run on in-place upgrades as well as activation.

#### 1.0.0

 * Initial release: hub/spoke stock sync with signed messages, durable outbound 
   queue with retry, and full resync.

## Meta

 *  Version **1.4.1**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [inventory](https://wordpress.org/plugins/tags/inventory/)[multistore](https://wordpress.org/plugins/tags/multistore/)
   [stock](https://wordpress.org/plugins/tags/stock/)[synchronization](https://wordpress.org/plugins/tags/synchronization/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/mountaineering-labs-stock-sync/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/mountaineering-labs-stock-sync/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/mountaineering-labs-stock-sync/reviews/)

## Contributors

 *   [ mountaineeringlabs ](https://profiles.wordpress.org/mountaineeringlabs/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/mountaineering-labs-stock-sync/)