Multistore Sync

Real-time WooCommerce inventory sync across multiple stores

Multistore Sync connects your WooCommerce stores and keeps stock levels, product details, and order data in sync automatically. Whether you run two stores or twenty, every site stays up-to-date the moment a sale is made — no spreadsheets, no manual updates, no overselling.

Who is this for?

Multi-store operators

You run 2 or more WooCommerce stores and need inventory to stay in sync without manual work or spreadsheets.

Agencies managing client stores

You build or maintain WooCommerce stores and need a reliable, hands-off sync solution for multi-store setups.

Wholesalers with B2B and B2C stores

Your retail and wholesale stores share the same inventory pool and need to update each other the instant a sale is made.

Features

Real-time stock sync

Stock changes on any connected store trigger an instant webhook to all others. Updates happen within seconds of a sale, refund, or manual stock edit — no polling, no cron jobs.

Bi-directional or one-way sync

Choose whether stores sync with each other or designate one store as the source of truth. Configure the sync direction per store pair.

Sync on any stock event

Triggers fire automatically on WooCommerce stock events — new orders, refunds, manual admin edits, and REST API updates are all captured.

Per-product sync rules

Enable or disable sync per product. Define exclusion rules by category, tag, or product type to keep certain products independent from the sync.

Variable products & variations

Full support for variable products — each variation's stock level is tracked and synced independently across all connected stores.

Full sync log

Every sync attempt is recorded with its status, the trigger event, and any error details. Failed syncs are automatically retried and can be re-triggered manually.

Webhook-based, no middleman

Communication between stores uses WooCommerce's built-in REST API and webhooks — no third-party services, no external dependencies, no SaaS subscription required.

Any number of stores

Connect two stores or more. Add as many stores as your licence allows and manage all sync connections from a single admin screen.

Installation

  1. 1
    Download the plugin zip

    After purchase, your license key and a download link are emailed to you instantly. You can also download from your account page at any time.

  2. 2
    Upload via WordPress

    In your WordPress admin go to Plugins → Add New Plugin → Upload Plugin. Choose the pacificp-multistore.zip file and click Install Now.

  3. 3
    Activate the plugin

    Click Activate Plugin after upload, or activate it from the Plugins list.

  4. 4
    Enter your license key

    Open the plugin settings and paste your license key into the License Key field. Click Save — the key will be verified and your site activated automatically.

  5. 5
    Configure the plugin

    Go to Multistore Sync to complete setup. See the Configuration section below for a full walkthrough.

Configuration

Multistore Sync uses a primary/child model. The primary store is the stock source of truth. Child stores receive stock from the primary and push orders back. Both sites have the plugin installed — the role is determined by how you configure it after activation.

Primary Store

Connected Stores

Multistore Sync → Connected Stores

This is where child stores are registered. For each child store you add:

FieldDescription
Store NameA friendly label, e.g. "Sydney Store"
Store URLThe full URL of the child site
Auth MethodOAuth (automatic, requires HTTPS on both sites) or Manual API Keys (works on HTTP/local)
Consumer Key / SecretManual auth only — generate on the child site via WooCommerce → Settings → Advanced → REST API, set to Read/Write

After adding, each store shows its status (Connected / Pending / Error), last sync time, and actions: Sync Settings, Check Connection, Remove.

Sync Settings

Multistore Sync → Sync Settings

Configured per connected store. Select which product categories from the primary are synced to each child.

  • Initial / force sync — products in selected categories are created or updated on the child (matched by SKU)
  • Ongoing — only stock quantities update automatically; product data is not changed after the initial sync
  • Force Sync All Categories — triggers an immediate full sync across all selected categories
  • Per-category Sync — triggers a sync for that category only

General Settings

Multistore Sync → General Settings

SettingDefaultNotes
Stock buffer 0 Units withheld from each child. E.g. 10 in stock with a buffer of 2 means children receive 8.
Variable product sync Enabled Syncs variations (SKU, stock, attributes, price) during a force sync.
Delete sync Disabled Permanently deleted products on the primary are deleted on child sites too. Moving to trash does not trigger this.
Auto-purge logs after 90 days Log entries older than this are deleted once per day. Accepts 1–3650 days.
Delete all data on uninstall Disabled If enabled, uninstalling drops all plugin tables, options, logs, and SKU maps. This is irreversible.

Maintenance actions available on this page:

  • Purge All Logs — immediately deletes all activity log entries
  • Reset to Pending — only shown when stuck processing queue rows exist (e.g. after a server crash or fatal error). Resets them so the next sync picks them up.

Activity Log

Multistore Sync → Activity Log

View all sync events with timestamp, action type, status (Success / Error), and message. Display only — no settings to configure here.

Child Store

Connection to Primary Store

Multistore Sync → Connection

FieldDescription
Primary Store URLThe full URL of the primary store

Enter the primary store URL and click Save & Authorise. The child redirects to the primary store to complete the OAuth handshake. On return, the connection is active. Once connected, the page shows the connected primary URL and a Disconnect button that stops all sync.

Sync Status

Multistore Sync → Sync Status

Read-only monitoring dashboard showing:

  • Primary Store Connection — Connected & Reachable / Unreachable / Not Connected
  • Last Stock Sync — timestamp and message of the most recent stock sync received
  • Last Order Sync — timestamp and success/error status of the most recent order push
  • Errors (last 24h) — error count with recent log entries (time, action, message)
  • Recent Activity — full recent log table

Usage Guide

Setup Order

  1. Install and activate the plugin on the primary store
  2. Install and activate the plugin on each child store
  3. On the primary: go to Multistore Sync → Connected Stores and add each child store using the Add Store wizard
  4. On each child: go to Multistore Sync → Connection, enter the primary store URL, and click Save & Authorise to complete the OAuth handshake
  5. On the primary: go to Multistore Sync → General Settings to configure stock buffer, variable product sync, delete sync, and other options

Add Store Wizard

The wizard on the primary walks through four steps:

StepAction
1 — DetailsEnter the store name and URL of the child site
2 — AuthChoose OAuth (recommended, requires HTTPS) or Manual API Keys (for HTTP/local environments). For manual, paste the Consumer Key and Consumer Secret generated on the child site via WooCommerce → Settings → Advanced → REST API with Read/Write permissions
3 — CategoriesSelect which product categories from the primary are synced to this child store
4 — ConfirmReview and save. The store is added with a Pending status until the first connection check completes

How Sync Works

Stock sync

Stock levels are pushed from the primary to all connected child stores automatically every 5 minutes via Action Scheduler. When stock changes on the primary (sale, manual edit, or order), the update queues immediately and dispatches on the next scheduled run. Children always reflect primary stock minus any configured buffer.

Order sync

Orders placed on a child store are automatically pushed back to the primary store. This keeps inventory accurate on the primary regardless of which storefront the sale came from.

Product matching

SKU is the key used to match products between stores. Products without a SKU will not sync. Ensure all products you intend to sync have a unique SKU set on the primary before running an initial sync.

Initial vs. ongoing sync

  • Initial / force sync — creates or updates all product data (title, description, price, attributes, images, variations) on the child, matched by SKU. Run this when first setting up or after product data changes on the primary.
  • Ongoing (automatic) — only stock quantities are updated. Product data on the child is not overwritten by routine stock syncs, so local edits (e.g. translated descriptions) are preserved.

Technical Notes

  • OAuth requires HTTPS on both the primary and child site. For local or staging environments without SSL, use Manual API Keys instead.
  • Action Scheduler must be running on the primary store. If WooCommerce is installed, Action Scheduler is already present. Verify it is processing under WooCommerce → Status → Scheduled Actions.
  • REST API must be enabled on child stores. Confirm under WooCommerce → Settings → Advanced → REST API.
  • Stuck queue rows — if a server crash or fatal error leaves queue entries in a processing state, use Reset to Pending in General Settings to unblock them.
  • Logs — all sync events are written to the Activity Log. Check there first when troubleshooting unexpected behaviour.

Pricing

2 Sites
2 sites
USD $197/yr
Get 2 Sites
3 Sites
3 sites
USD $297/yr
Get 3 Sites
4 Sites
4 sites
USD $397/yr
Get 4 Sites

14-day money-back guarantee.

Also from Pacific Plugins

Wholesale Customers for WooCommerce Free

Free wholesale pricing, discounts and customer management for B2B

  • Simple customer assignment
  • Global percentage discount
  • Per-product wholesale price
View
Plugin details
Version
v1.0.0
WordPress
5.8+
PHP
7.4+