SalesDrive Sync — CRM for WooCommerce
Автоматична передача замовлень WooCommerce у CRM SalesDrive: заявка створюється одразу після checkout з покупцем, товарами, доставкою та коментарем. Дедуплікація, повторні спроби при збої, метабокс статусу й журнал синхронізації.
What each licence includes
| Feature | Free |
|---|---|
| Every WooCommerce order automatically becomes a lead in SalesDrive | ✔ |
| Name, phone, items, shipping, payment method and the buyer's comment are sent | ✔ |
| Supports both the classic checkout and Checkout Blocks | ✔ |
| Choice of trigger statuses | ✔ |
| Deduplication — resending doesn't create a second lead | ✔ |
| Retries when the CRM is unavailable | ✔ |
| Exchange log and metabox on the order | ✔ |
| HPOS compatible | ✔ |
| Free | ✔ |
SalesDrive Sync for WooCommerce is a plugin that automatically sends every WooCommerce order to SalesDrive CRM. As soon as the customer completes checkout, a lead appears in SalesDrive with the buyer, items, shipping and comment — the manager works in the CRM instead of copying data from the site admin by hand. Both the classic checkout and the new Checkout Blocks are supported.
The plugin is completely free. Download: catcode-order-sync-with-salesdrive-for-woocommerce-0.2.0.zip. GPLv2 licence — no keys, no trial periods, no limits on the number of orders.
What the admin gets



How it works, step by step
- The customer places an order in the shop — via the classic checkout or Checkout Blocks.
- The plugin builds the payload: the buyer (phone normalised to +380 format), items with SKU, price and quantity, shipping, comment. For orders paid online, an optional “Paid online” note is added to the comment.
- The data flies to SalesDrive via the leads handler — POST /handler/ with an X-Api-Key header.
- SalesDrive returns a lead number — it is stored in the order meta (_cc_salesdrive_order_id). Together with a database-level lock, this guarantees: one order — one lead.
- If the CRM is temporarily unavailable — the plugin retries the send itself: 3 attempts with 5 min / 30 min / 2 h delays via WP-Cron.
- The manager sees the result in the order metabox and in the “Log” tab on the settings page.
How much it costs
Free. The plugin is distributed under the GPLv2 licence — download it and use it without activations, subscriptions or limits.
Technical requirements
- WordPress 6.2+ (tested up to 7.0)
- WooCommerce 6.0 or newer, including HPOS (custom order tables)
- PHP 7.4+
- A SalesDrive account: a domain like yourshop.salesdrive.me and a leads-database API key with “Leads: add” permission (Settings → General settings and integrations → Other services → API → API keys). “Leads: read” isn’t required but is recommended — with it, the plugin checks after a timeout whether a lead was already created, instead of risking a duplicate.
Under the hood
- API key encrypted in the database — libsodium with an HMAC fallback for hosts without the sodium extension. The key is never stored in plain text.
- Database-level lock against duplication: checkout, a status change and a payment callback may arrive at once — exactly one request goes through, and the order is re-read past the HPOS cache before the final check.
- Check by externalId after a timeout: SalesDrive’s leads handler does NOT deduplicate (two POSTs with the same externalId create two leads), so before retrying, the plugin asks the CRM via GET /api/order/list/ whether the lead already exists and adopts its ID. If the key lacks read permission — the order is flagged in the metabox so the manager can check the CRM manually.
- HPOS compatibility — all order handling goes only through WC_Order CRUD, with no direct queries against posts.
- Phone normalisation to E.164 (+380…) before sending to the CRM.
- Currency: the leads handler has no currency field, so for non-hryvnia orders the currency code is appended to the lead’s comment.
- Extension points for developers: the cc_salesdrive_order_payload filter (change the lead body) and the cc_salesdrive_order_sent hook (react to a successful send).
How to install
- Download
catcode-order-sync-with-salesdrive-for-woocommerce-0.2.0.zipand install via Plugins → Add New → Upload Plugin. - Activate it in the “Plugins” menu.
- Open WooCommerce → SalesDrive Sync, enter the account domain and the API key.
- Click “Test connection” — make sure the CRM responds.
- Choose when to send orders (right after checkout or on moving to the chosen statuses), save the settings.
Version history
- 0.2.0 — August 2026
- The “Resend” button in the metabox finally works: previously the metabox drew its own form inside the WooCommerce order form, and the browser discarded it — clicking sent nothing. It’s now a nonce-protected link with a result notice. Protection against double-sending moved from a transient to a database-level lock (a transient is read-then-write, and parallel requests created two leads). After an attempt that got no response, the plugin now checks by externalId via GET /api/order/list/ whether the lead already exists and adopts it instead of creating a second one. Deleting the plugin now also removes the log table. The paid marker no longer reaches the CRM as an HTML entity instead of the hryvnia symbol; for non-hryvnia orders, the currency code is appended. The interface has moved to English with a Ukrainian translation in /languages, and for wp.org the plugin was renamed to catcode-order-sync-with-salesdrive-for-woocommerce (settings, order meta and the log table are unchanged — nothing needs migrating).
- 0.1.0 — July 2026
- First public release: sends orders to SalesDrive after checkout or by status trigger, deduplication by externalId, retries via WP-Cron (3 attempts), an order metabox with manual sending, event log, connection test, API key encryption, HPOS compatibility.
Frequently asked questions
Does the plugin change my checkout or theme?
No. The plugin only works "behind the scenes": it listens for order-creation and status-change events. No changes to templates or checkout.
Where do I get a SalesDrive API key?
SalesDrive account → Settings → General settings and integrations → Other services → API → API keys. You need a leads-database key with "Leads: add" permission; add "Leads: read" too so the post-timeout duplicate check works.
Will duplicates appear if the order status changes several times?
No. The plugin stores the SalesDrive ID in the order meta and takes a database-level lock before sending — even if checkout, a status change and a payment callback fire at once, exactly one lead is created. If no response came from the CRM at all, the plugin checks by externalId before retrying whether the lead is already there.
What does the "Resend" button do?
If the order isn't in SalesDrive yet — it creates a lead. If it was already sent — it updates it with current data via /api/order/update/. The result is shown as a notice at the top of the order page.
What happens after the plugin is deleted?
Deletion (not deactivation) removes the settings, the encrypted key and the log table. Lead IDs on orders are deliberately kept — they're exactly what stops a reinstall from pushing a second copy of an old order into the CRM.
What currency are the totals in?
In the order's currency, as plain numbers: SalesDrive's leads handler has no currency field, so totals arrive in whichever currency your account works in. For non-hryvnia orders, the plugin appends the currency code to the lead's comment.
Does it work with WooCommerce's new block checkout?
Yes, both the classic checkout and Checkout Blocks are supported.
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
—