KeyCRM Sync — CRM for WooCommerce
Безкоштовний плагін синхронізації WooCommerce з KeyCRM: замовлення потрапляють у CRM одразу після оформлення, без дублів і ручного перенесення. Ретраї при збоях, метабокс у замовленні, журнал, HPOS.
What each licence includes
| Feature | Free |
|---|---|
| Every WooCommerce order is sent to KeyCRM automatically | ✔ |
| Customer, products, shipping and payment method are passed along | ✔ |
| Choose the trigger: right after checkout or on a chosen status | ✔ |
| Supports the classic checkout and Checkout Blocks | ✔ |
| Duplicate protection — a resend doesn't create a second entry | ✔ |
| A retry queue if the CRM is unavailable | ✔ |
| A metabox on the order with a link to the deal in the CRM | ✔ |
| An exchange log for troubleshooting | ✔ |
| HPOS compatible (WooCommerce's new order storage) | ✔ |
| Free, no limit on the number of orders | ✔ |
KeyCRM Sync for WooCommerce is a plugin that automatically sends every WooCommerce order into KeyCRM: with the customer, products, shipping and payment. The send fires right after checkout (classic checkout and Checkout Blocks) or when the order reaches a status you choose. Managers work in the CRM instead of switching between the store’s admin panel and spreadsheets — and there’s no manual transfer of orders at all.
The plugin is published in the official WordPress.org directory — install it right from the admin panel: wordpress.org/plugins/catcode-order-sync-with-keycrm-for-woocommerce.
The plugin is completely free. The code is open on GitHub: github.com/catcodestudio/wp-keycrm-sync. No limit on the number of orders, no monthly charges and no dependence on third-party services — all you need is an API key from your KeyCRM account.
What the admin gets




How it works, step by step
- The customer places an order in your store — through the classic checkout or Checkout Blocks.
- The plugin builds the payload: customer, products, shipping, payment. The phone number is normalised into the +380 format, and zero-value line items are skipped.
- Sent to KeyCRM via POST /order — right after checkout, or when the order reaches a status you’ve chosen (for example, “Processing”).
- KeyCRM returns the order ID, which is stored in the
_catcode_keycrm_order_idmeta field, so there won’t be duplicates even if the trigger fires again. - If the CRM is unavailable, the plugin retries itself after 5 min / 30 min / 2 hours via WP-Cron, with no cron setup needed on your hosting.
- The manager sees the result in the order’s metabox and in the event log.
Pricing
Free, open source. Download it from GitHub or the button on this page. No paid tariffs, trials or limits on the number of orders.
Technical requirements
- WordPress 6.2+
- WooCommerce 6.0+
- PHP 7.4+
- A KeyCRM API key — your KeyCRM account → Settings → API
Under the hood
- Two-level deduplication: the plugin passes
source_uuid = wc-{id}and stores the KeyCRM ID in the order’s meta — no duplicates are created on either the plugin’s side or the CRM’s. - The API key is encrypted in the database — libsodium with an HMAC fallback; the key is never stored in plain text.
- HPOS compatibility (High-Performance Order Storage) — orders are handled exclusively through the WC_Order CRUD API.
- Payment status transfer: a paid order is created in the CRM straight away with a “paid” payment record (optional).
- Hooks for developers: the
catcode_keycrm_order_payloadfilter (modify the data before sending) and thecatcode_keycrm_order_sentaction (third-party integrations).
How to install
- In the admin panel: Plugins → Add New → find “CatCode Order Sync with KeyCRM” and click “Install”. Or download
catcode-order-sync-with-keycrm-for-woocommerce-0.1.6.zipmanually. - Activate the plugin in the plugin list.
- Go to WooCommerce → KeyCRM Sync and paste in the API key from your KeyCRM account.
- Click “Test connection” — make sure the link to the CRM works.
- Choose the send trigger (right after checkout, or specific statuses) and save the settings.
Version history
- 0.1.6 — 13 August 2026
- Fixed the “Resend” button in the order metabox — it hadn’t worked for a single day: the metabox printed its own form inside WooCommerce’s order form, and the browser discards a nested form, so a click submitted the order form instead and nothing went to the CRM. It’s now a plain link with a nonce. A manual send takes the same database lock as an automatic one — two managers clicking the button at the same time no longer create two orders in KeyCRM. Translations were removed from the WordPress.org build (they now come from translate.wordpress.org); the Ukrainian localisation remains in the zip on this page.
- 0.1.5 — 12 August 2026
- Updating from versions before 0.1.1 no longer “loses” the store: when the plugin was renamed, the settings, API key, log and “order already in KeyCRM” markers stayed under the old names. Because of this every old order looked unsent — the next status change pushed it into the CRM again, KeyCRM rejected the repeated
source_uuid, and the order was marked “Send failed” even though it had long been in the CRM. All of this is now carried over automatically, and the false error status is cleared. Protection against a double send is now atomic (a database lock instead of a transient). Orders with no payment method, or with no customer contact details at all, are no longer rejected by the CRM with a 422 error. Removing the plugin now also cleans up the old log table. The minimum WooCommerce version has been lowered to 6.0. - 0.1.4 — 6 August 2026
- The description and keywords in the WordPress.org directory, in Ukrainian.
- 0.1.3 — 20 July 2026
- Source code strings moved to English (a WordPress.org directory requirement), a full built-in Ukrainian translation added — the Ukrainian-language interface stayed unchanged.
- 0.1.2 — 20 July 2026
- Published in the official WordPress.org directory. The plugin was renamed to “CatCode Order Sync with KeyCRM for WooCommerce”, prefixes were unified, inline styles moved to enqueue, and a section on external services was added to the readme.
- 0.1.0 — July 2026
- First public release: exporting orders to KeyCRM (checkout and trigger statuses), deduplication via source_uuid, retries at 5 min / 30 min / 2 hours, a metabox on the order with a resend option, an event log, a connection test, API key encryption, HPOS and Checkout Blocks compatibility.
Frequently asked questions
Does the plugin change my checkout or theme?
No. The plugin works with order events "behind the scenes" — the checkout and theme's appearance don't change. Both the classic checkout and Checkout Blocks are supported.
Is it really free with no limits?
Yes. The plugin is free and open source, with no limit on the number of orders and no monthly charges.
Will duplicates appear if the order status changes again?
No. The KeyCRM ID is stored in the order's meta, and a source_uuid is passed to the CRM — a repeated trigger updates the existing order rather than creating a new one.
What happens if KeyCRM is temporarily unavailable?
The order won't be lost: the plugin automatically retries after 5 min / 30 min / 2 hours (up to 3 attempts). The status is visible in the metabox, from where you can send it manually.
What does the "Resend" button do?
If the order isn't in KeyCRM yet, it creates it. If it's already been sent, it partially updates it with fresh data via PUT /order/{id}.
What's left after removing the plugin?
The settings are removed, while the sync log and the KeyCRM IDs on orders are kept — in case of an audit. Orders in the CRM itself aren't touched.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—