Get in touch
  • WordPress
  • CRM and integrations
  • v0.2.0

SalesDrive Sync — CRM for WooCommerce

Free WooCommerce integration plugin for SalesDrive: an order reaches the CRM right after checkout — buyer, items, shipping. Classic checkout and Blocks.

Compatibility
WordPress 6.2+, WooCommerce 6.0+
PHP
7.4 or newer
Updated
August 2026

What the module does

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 ✔

What it looks like

SalesDrive Sync settings page for WooCommerce
One settings page under WooCommerce → SalesDrive Sync: the account domain (e.g. yourshop.salesdrive.me), the API key, trigger statuses and a “Test connection” button — it makes a test GET /api/statuses/ request and instantly shows whether everything is connected.
SalesDrive Sync log for WooCommerce
The “Log” tab shows the latest attempts: the order, the event, the attempt number, the HTTP status and the CRM’s response text. You see both successful sends and errors — no need to guess why a lead is missing from SalesDrive.
SalesDrive metabox on a WooCommerce order with a resend button
Every order gets a SalesDrive metabox: sync status, the CRM lead ID and a “Resend” button. For orders already sent, the button doesn’t create a duplicate — it updates the lead via /api/order/update/.

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.

Version history

v0.2.0 Current August 2026

The “Resend” button in the metabox finally works.

v0.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,…

Full module description

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.

How it works, step by step

  1. The customer places an order in the shop — via the classic checkout or Checkout Blocks.
  2. 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.
  3. The data flies to SalesDrive via the leads handler — POST /handler/ with an X-Api-Key header.
  4. 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.
  5. 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.
  6. 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.

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

  1. Download catcode-order-sync-with-salesdrive-for-woocommerce-0.2.0.zip and install via Plugins → Add New → Upload Plugin.
  2. Activate it in the “Plugins” menu.
  3. Open WooCommerce → SalesDrive Sync, enter the account domain and the API key.
  4. Click “Test connection” — make sure the CRM responds.
  5. Choose when to send orders (right after checkout or on moving to the chosen statuses), save the settings.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
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.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module