Title: Skladify – Price &amp; Stock Sync for MoySklad
Author: skarb88
Published: <strong>August 22, 2026</strong>
Last modified: August 22, 2026

---

Search plugins

![](https://ps.w.org/skladify-price-stock-sync-for-moysklad/assets/banner-772x250.
png?rev=3661095)

![](https://ps.w.org/skladify-price-stock-sync-for-moysklad/assets/icon-256x256.
png?rev=3661095)

# Skladify – Price & Stock Sync for MoySklad

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

[Download](https://downloads.wordpress.org/plugin/skladify-price-stock-sync-for-moysklad.1.0.6.zip)

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

 [Support](https://wordpress.org/support/plugin/skladify-price-stock-sync-for-moysklad/)

## Description

Skladify – Price & Stock Sync for MoySklad updates existing WooCommerce products
from MoySklad without importing or creating products.

This is an independent integration. It is not developed, endorsed, sponsored by 
or affiliated with the owners of MoySklad or WooCommerce. Those names are used here
only to describe the services this plugin connects to, as permitted by nominative
fair use.

MoySklad is a trademark of its respective owner. WooCommerce is a trademark of Automattic
Inc. No trademark logo, wordmark or visual identity of either owner is bundled with
or displayed by this plugin.

The matching rule is explicit:

    ```
    WooCommerce SKU = MoySklad article
    ```

Free plugin scope:

 * Manual synchronization started by an authorized WooCommerce administrator.
 * Background batch processing after the manual start, using one-off WordPress queue
   events.
 * Stock from exactly one explicitly selected MoySklad warehouse.
 * WooCommerce regular-price updates.
 * WooCommerce stock quantity and stock-status updates.
 * Simple products and individual variations.
 * Dry-run mode and synchronization logs.
 * No plugin-imposed limit on the number of product cards.

This plugin does not register a recurring synchronization schedule. It also does
not contain multi-warehouse selection or cross-warehouse stock aggregation code.
Those capabilities can be implemented by a separately distributed add-on through
the public provider and settings hooks.

The plugin never creates or deletes WooCommerce products. Variable parent products
are skipped; put the MoySklad article on each variation SKU that should be synchronized.

### External services

This plugin connects to the MoySklad JSON API because prices, products, warehouses,
and stock values are stored in MoySklad and cannot be synchronized without that 
service.

Requests are sent to `https://api.moysklad.ru/` only when an authorized administrator
tests the connection or starts a manual synchronization, and while the resulting
one-off queue is processing.

Depending on the selected action, the plugin sends:

 * An authorization header containing the saved MoySklad access token, or Basic 
   authorization derived from the saved MoySklad login and password.
 * MoySklad product UUIDs needed for a stock-report request.
 * The one selected MoySklad warehouse UUID.
 * Product-list pagination and the configured stock-value type.

The plugin does not send WooCommerce customer, order, payment, or shipping data 
to MoySklad.

Service information and policies:

 * MoySklad website: https://www.moysklad.ru/
 * MoySklad API documentation: https://dev.moysklad.ru/doc/api/remap/1.2/
 * MoySklad privacy policy: https://www.moysklad.ru/upload/files/policy.pdf
 * MoySklad service terms: https://www.moysklad.ru/upload/files/oferta.pdf

Use of the external service is subject to MoySklad’s account terms, availability,
API limits, and privacy policy.

### Security and data storage

 * Administrative pages and actions require the `manage_woocommerce` capability.
 * Manual actions use WordPress nonces.
 * Settings are sanitized server-side; the Free warehouse setting accepts one scalar
   UUID only.
 * Secrets are stored in the WordPress options table with autoload disabled and 
   are not written to synchronization logs.
 * Log context recursively redacts common password and token keys.
 * The plugin retains at most 1,000 synchronization log records in its own table.

## Screenshots

[⌊The plugin screen under WooCommerce: status of the last run with its state, timing
and counters, followed by the synchronization mode and batch size.⌉⌊The plugin screen
under WooCommerce: status of the last run with its state, timing and counters, followed
by the synchronization mode and batch size.⌉[

The plugin screen under WooCommerce: status of the last run with its state, timing
and counters, followed by the synchronization mode and batch size.

[⌊Price and stock settings: the MoySklad price type with a fallback, the one selected
warehouse, the stock value source and WooCommerce stock handling.⌉⌊Price and stock
settings: the MoySklad price type with a fallback, the one selected warehouse, the
stock value source and WooCommerce stock handling.⌉[

Price and stock settings: the MoySklad price type with a fallback, the one selected
warehouse, the stock value source and WooCommerce stock handling.

[⌊Diagnostics options and the action buttons for synchronization, connection test
and log clearing.⌉⌊Diagnostics options and the action buttons for synchronization,
connection test and log clearing.⌉[

Diagnostics options and the action buttons for synchronization, connection test 
and log clearing.

[⌊Recent log table with one row per processed batch and the running counters in 
the context column.⌉⌊Recent log table with one row per processed batch and the running
counters in the context column.⌉[

Recent log table with one row per processed batch and the running counters in the
context column.

## Installation

 1.  Back up the WordPress database and files.
 2.  Deactivate the legacy “MoySklad WC Standalone Price & Stock Sync” plugin if it
     is active.
 3.  Upload the plugin ZIP through **Plugins > Add New > Upload Plugin**, then activate
     it.
 4.  Open **WooCommerce > MoySklad Sync**.
 5.  Save a MoySklad access token, or save a login and password.
 6.  Click **Test connection** to load warehouses and sampled price types.
 7.  Select exactly one warehouse and save the settings.
 8.  Keep **Dry run** enabled for the first synchronization and click **Synchronize
     now**.
 9.  Review the counters and logs. Disable Dry run only after the matches and settings
     are correct.

If the previous plugin had exactly one selected warehouse, that warehouse is migrated.
If it had several selected warehouses, this plugin leaves the warehouse empty and
requires an explicit selection; it never chooses an arbitrary warehouse.

## FAQ

### Does the plugin create products?

No. Products and variations must already exist in WooCommerce. Only products whose
SKU exactly matches the MoySklad article are considered.

### Is there a product-card limit?

No. The plugin does not impose a catalog-size limit. Products are read from MoySklad
in bounded background batches.

### Does the plugin synchronize automatically?

No recurring schedule is included. An administrator must start each run manually.
After that click, the run continues through one-off background queue events until
all MoySklad product pages have been processed or the queue is stopped.

### Why can I select only one warehouse?

This plugin intentionally reads stock from one explicitly selected warehouse. It
sends one warehouse UUID in the stock request and does not aggregate stock across
warehouses.

### Can a separate add-on add scheduling and multiple warehouses?

Yes. The plugin exposes a stock-provider interface, a `pssmwc_stock_provider` filter,
settings-page hooks, and the public `PSSMWC\Sync::start()` entry point. A separate
add-on must contain its own scheduler, multi-warehouse settings, and aggregation
implementation.

### What happens when a stock value is missing?

A missing or null stock value is treated as unknown and is not written to WooCommerce.
It is not silently converted to zero.

### What if WP-Cron is disabled?

The manual run still depends on one-off WordPress queue events between batches. 
When `DISABLE_WP_CRON` is enabled, configure a real server cron request for `wp-
cron.php`; otherwise a queued run can remain in the Running state.

### Are settings removed on deactivation?

No. Deactivation stops the queue but retains settings and logs so the plugin can
be reactivated safely. The legacy plugin option is also retained during migration
to allow rollback.

### What is removed when I delete the plugin?

Uninstall removes this plugin’s settings, queue state, cached reference data, log
table, and private mapping metadata. WooCommerce product prices and stock values
already written by a completed synchronization are preserved. Data owned by the 
legacy plugin is not deleted.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Skladify – Price & Stock Sync for MoySklad” is open source software. The following
people have contributed to this plugin.

Contributors

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

“Skladify – Price & Stock Sync for MoySklad” has been translated into 1 locale. 
Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/skladify-price-stock-sync-for-moysklad/contributors)
for their contributions.

[Translate “Skladify – Price & Stock Sync for MoySklad” into your language.](https://translate.wordpress.org/projects/wp-plugins/skladify-price-stock-sync-for-moysklad)

### Interested in development?

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

## Changelog

#### 1.0.6

 * Moved the synchronization keep-alive JavaScript into an enqueued asset loaded
   only on this plugin’s settings page while a run is active.
 * Passed the REST endpoint and nonce through `wp_add_inline_script()` instead of
   printing a raw script tag in PHP.
 * No settings change and no data migration.

#### 1.0.5

 * Removed a discouraged PHP execution-limit override; queue processing remains 
   bounded by the existing execution-time budget.
 * Kept SSL verification at the WordPress HTTP API default for same-site loopback
   requests and retained the existing fallback queue channels when loopback is unavailable.
 * No settings change and no data migration.

#### 1.0.4

 * Limited dependency and action messages to the plugin row and the plugin’s own
   settings screen.
 * Moved loopback runner authentication into the REST permission callback.
 * Removed bundled translation catalogues so WordPress.org language packs can provide
   translations.
 * No settings change and no data migration.

#### 1.0.3

 * A synchronization run now processes as many batches as the request can afford
   instead of exactly one, so throughput no longer depends on how often the site
   happens to receive traffic.
 * The batch time budget is derived from the host’s own `max_execution_time`, and
   a run stops before starting a batch that could not finish inside it.
 * Background work is carried by Action Scheduler, by a self-chaining loopback request
   and by WP-Cron, whichever the host supports; losing one channel no longer stalls
   a run.
 * The loopback channel authenticates with a site-specific secret compared in constant
   time, verifies once every twelve hours that loopback requests reach the site,
   and can be disabled with the `pssmwc_enable_loopback` filter.
 * The settings screen keeps a running queue moving while it is open and reloads
   itself when the run ends.
 * A running queue is now considered abandoned after six hours rather than one, 
   because restarting a queue resets its offset and a shorter threshold could make
   a scheduled run repeat the same catalogue indefinitely. The threshold is filterable
   through `pssmwc_stale_queue_ttl`.
 * The settings screen reports which background channels are available instead of
   warning only about `DISABLE_WP_CRON`.
 * New filter `pssmwc_drain_time_budget` for hosts with unusual execution limits.
 * No settings change and no data migration.

#### 1.0.2

 * Action notices are now stored server side for one minute instead of being carried
   in the page URL, so their text can no longer be supplied through the address 
   bar.
 * Log table queries now pass the table name through the `%i` placeholder of `$wpdb-
   >prepare()`, which raises the minimum WordPress version to 6.2.
 * Recent log rows are served from the object cache and invalidated on write.
 * Removed the manual `load_plugin_textdomain()` call; WordPress loads translations
   on demand.
 * No settings change and no data migration.

#### 1.0.1

 * Added the table-row level action `pssmwc_render_stock_source_row`, so an add-
   on that replaces the stock source owns a complete table row including its own
   header cell and field label.
 * The built-in warehouse row is now skipped entirely when an add-on both suppresses
   the default field and supplies a replacement row, which removes an orphaned field
   label from the settings screen.
 * The cell level action `pssmwc_render_stock_source_field` is retained and documented
   as cell content only, so add-ons written against 1.0.0 keep working unchanged.

#### 1.0.0

 * Initial public Free release.
 * Manual synchronization only.
 * One selected warehouse only.
 * No product-card limit.
 * Added extension points for a separately distributed scheduler and stock provider.
 * Added safe migration from the legacy multi-warehouse build without selecting 
   an arbitrary warehouse.

## Meta

 *  Version **1.0.6**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/skladify-price-stock-sync-for-moysklad/)
   and [Russian](https://ru.wordpress.org/plugins/skladify-price-stock-sync-for-moysklad/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/skladify-price-stock-sync-for-moysklad)
 * Tags
 * [inventory](https://wordpress.org/plugins/tags/inventory/)[moysklad](https://wordpress.org/plugins/tags/moysklad/)
   [prices](https://wordpress.org/plugins/tags/prices/)[stock](https://wordpress.org/plugins/tags/stock/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/skladify-price-stock-sync-for-moysklad/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/skladify-price-stock-sync-for-moysklad/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/skladify-price-stock-sync-for-moysklad/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/skladify-price-stock-sync-for-moysklad/)