Connect your WooCommerce store to
KeyCRM and stop copying products, stock and orders by hand. Completely free — no paid version, no limits on products or orders.
What is synced
- Products and variations → KeyCRM. Name, description, price, SKU, barcode, weight and dimensions, up to 6 images, currency and category. Variations become KeyCRM variants with their attributes (e.g. Color: Red). Only changed products are sent again.
- Categories → KeyCRM, created together with their parent categories; existing KeyCRM categories with the same name are reused.
- Stock. WooCommerce owns stock by default: every sale, refund, cancellation or manual edit is sent to your KeyCRM warehouse within seconds. Or let KeyCRM own stock and import it every 15 minutes.
- Orders → KeyCRM when they reach the status you choose (Processing by default): customer, shipping address, items, discount, shipping cost, customer note and payment. Existing orders can be sent in bulk, filtered by status. An order is never sent twice.
- Order statuses both ways using two mapping tables (WooCommerce → KeyCRM immediately, KeyCRM → WooCommerce every 5 minutes).
- Tracking numbers added in KeyCRM are copied to the WooCommerce order as a note to the customer.
Safe bulk tools
- Every bulk sync starts with a dry run that shows how many items will be created, sent, left unchanged or skipped — before anything is sent.
- Progress bar with live counters, errors and a Stop button. Syncs continue in the background if you close the page.
- Relink by SKU links products that already exist in KeyCRM, so nothing is duplicated. Unlink lets you start over. Nothing is ever deleted in KeyCRM.
- "Send to KeyCRM" bulk action on the Products and Orders lists, a row link under each product, and a KeyCRM column on the Orders list showing the KeyCRM order number or why an order wasn't sent.
Built for real stores
- Runs in the background with Action Scheduler — checkout never waits for KeyCRM, and failed requests are retried.
- Respects KeyCRM's limit of 20 API requests per minute and uses KeyCRM's batch endpoints for stock and variants.
- Compatible with High-Performance Order Storage (HPOS) and the block checkout.
- WooCommerce is the source of truth for the catalog, so there are no sync loops or conflicting edits.
- Built-in guide (WooCommerce → KeyCRM Connector) with step-by-step setup, a live system status check and troubleshooting.
- Ukrainian translation included — used automatically when the admin language is Ukrainian or Russian.
- WP-CLI commands for large stores and cron jobs:
wp kcwc preview, products-sync, stock-push, orders-sync, statuses-pull, relink, unlink.
Requirements
- A KeyCRM account where you can create an API key (Settings → General).
- A unique SKU on every product and variation — products, variants, stock and order lines are matched by SKU.
- A publicly reachable site for product images (KeyCRM downloads them).
Good to know (KeyCRM API limits)
- KeyCRM has no webhooks: changes made in KeyCRM reach WooCommerce on the next check (every 5 minutes for statuses, 15 for stock when KeyCRM owns it).
- The KeyCRM API cannot delete products, categories or orders, rename or move categories, or change a variant's attributes — do that in KeyCRM by hand.
This plugin is not affiliated with or endorsed by KeyCRM or WooCommerce. Source code and issue tracker:
GitHub.
- Install the plugin from Plugins → Add New (or upload the zip) and activate it. WooCommerce must be active.
- Get an API key. In KeyCRM open Settings → General, find "API key" and click "Generate API key".
- Create an order source in KeyCRM, for example "Website". Every KeyCRM order belongs to a source, and sources can't be created through the API.
- Connect. In WordPress open WooCommerce → Settings → Integration → KeyCRM, paste the key and click "Save changes". You should see "KeyCRM: connection OK".
- Choose the order source. Reload the page — the "Order source" field is now a list of your KeyCRM sources. Pick yours and save.
- Stock. Choose the stock owner (WooCommerce by default) and, if WooCommerce, the KeyCRM warehouse ID (the default warehouse is 1).
- Send products. Under "Sync now" click "Sync products", review the dry run and click "Start sync". If KeyCRM already has your catalog, run "Relink by SKU" (Tools) first.
- Send stock with "Push stock" (only if WooCommerce owns stock).
- Orders. Turn on "Send new orders to KeyCRM automatically", check "Send when status is" and the two status mapping tables. Optionally send existing orders with "Sync orders".
- Open WooCommerce → KeyCRM Connector and check that every line of "System status" is green. The full guide is on the same page.
Tip: try it on a staging copy of your store and a test KeyCRM account first — KeyCRM's API cannot delete products or orders, so test data has to be archived by hand.
1.0.0
First public release.
- Products, variations and categories → KeyCRM, matched by SKU; only changed products are sent again; optional sending on product save.
- Stock: WooCommerce → KeyCRM on every change (batched), or KeyCRM → WooCommerce every 15 minutes.
- Orders → KeyCRM automatically at a chosen status, or in bulk by status; never sent twice; orders KeyCRM would reject are skipped with a clear reason.
- Order statuses both ways with mapping tables; tracking numbers from KeyCRM as customer notes.
- Dry run before every bulk sync, progress bar with counters and Stop, "Resend unchanged items", "Relink by SKU", "Unlink".
- "Send to KeyCRM" bulk and row actions, KeyCRM column on the Orders list.
- Built-in guide with system status and troubleshooting.
- Ukrainian translation (also used for the Russian admin language).
- WP-CLI commands.
- Optional removal of all plugin data on uninstall.
- Compatible with HPOS and the block checkout; PHP 8.1 – 8.4.