Get in touch
CRM and integrations · OpenCart

SalesDrive Sync — CRM for OpenCart 2.3, 3.x and 4.x

Автоматична передача замовлень OpenCart 2.3, 3.x і 4.x у CRM SalesDrive: заявка створюється при оформленні з покупцем, товарами, доставкою та коментарем. Ідемпотентність, повторні спроби через cron, перевірка зʼєднання та журнал синхронізації.

Version
v1.1.1 (OpenCart 4)
v1.1.1 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Compatibility
OpenCart 2.3.0.0 – 2.3.0.2 · 3.0.2 – 3.0.5 · 4.0.2 – 4.1.x
Platform
OpenCart
SalesDrive Sync — CRM for OpenCart 2.3, 3.x and 4.x

What each licence includes

Feature Free
Every OpenCart order automatically becomes a lead in SalesDrive
The buyer, items, shipping, payment and comment are sent
Choice of trigger statuses
Lead deduplication
Retry queue on failures
Exchange log in the admin panel
Separate builds for OpenCart 2.3, 3.x and 4.x
Free

SalesDrive Sync for OpenCart is a module that connects a shop on OpenCart 2.3, 3.x or 4.x to SalesDrive CRM. Every order, on placement (or on moving to a chosen status), automatically becomes a lead in SalesDrive — with the buyer, items, shipping cost and comment. The manager gets the lead in the CRM within seconds of the purchase, with no manual copying of data from the OpenCart admin.

The module is completely free. Download: cc_salesdrive.ocmod.zip for OpenCart 4.x, cc_salesdrive-oc3.ocmod.zip for OpenCart 3.0.2–3.0.5, or cc_salesdrive-oc2.ocmod.zip for OpenCart 2.3.0.0–2.3.0.2 — no licence keys or limits on the number of orders.

What the admin gets

SalesDrive Sync settings page in the OpenCart admin
Connection: your SalesDrive account domain and API key (stored encrypted, never shown in the field). The “Test connection” button instantly tells you whether the module can see your CRM.
SalesDrive Sync general settings: send moment, retry limit, cron token
The send moment — on placement or on reaching a chosen status, skipping zero-price lines, the shipping cost, a retry limit and an optional cron token to protect the public retry URL.
SalesDrive Sync log in the OpenCart admin
The sync log: order number, status, the lead ID in SalesDrive, number of attempts and the last error — you can instantly see what made it through and what didn’t.
SalesDrive record in the OpenCart order history
The sync result is also mirrored in the order history — the manager sees the lead number without opening the module’s log.

How it works, step by step

  1. The customer places an order in your OpenCart shop.
  2. The catalog/model/checkout/order*addHistory event fires — the module reacts to the placement or to the order reaching the trigger status.
  3. A lead is built: the buyer with a phone number in +380 format, items with SKU, price and quantity, shipping cost, comment — and it’s sent to SalesDrive via the leads handler (POST /handler/, X-Api-Key header).
  4. The lead number is recorded in the sync log. The log holds a unique record per order, so a repeated event will never create a duplicate — a completed record is simply skipped.
  5. If SalesDrive is unavailable — the record stays queued, and OpenCart’s hourly cron retries the send (up to 5 attempts by default).
  6. The result is visible in the admin: the log shows the status, lead ID, number of attempts and the last error, if any.

How much it costs

Free. Download it and use it — no activations, subscriptions or hidden fees.

Technical requirements

  • OpenCart 4.0.2 – 4.1.x, 3.0.2 – 3.0.5 or 2.3.0.0 – 2.3.0.2 — a separate build for each branch
  • PHP 7.4 or newer for the OC4 and OC3 builds; the OpenCart 2.3 build works from PHP 5.6
  • A SalesDrive account: a domain like yourshop.salesdrive.me and a leads-database API key with “Leads: add” permission
  • OpenCart cron enabled — for automatic retries on failures (the send itself works without it too)

Under the hood

  • Native extension for OpenCart 4.x — events and its own table, with no OCMOD patches to other files. The event is registered in OC4 format with a * separator before the method — that’s exactly how the 4.x core matches model events.
  • Database-level idempotency: a cc_salesdrive_sync table with a UNIQUE key on order_id — creating two leads from one order is physically impossible.
  • The API key is encrypted before being stored in the database — it isn’t kept in plain text.
  • Retry queue via OpenCart’s built-in cron: the cc_salesdrive_retry task runs hourly and picks up orders in an error status, as well as ones that got stuck mid-send for over an hour. The retry URL can be locked with your own cron token.
  • A log with request and response excerpts — when troubleshooting, you can see exactly what the module sent and what the CRM replied.

How to install

  1. In the OpenCart admin, open Extensions → Installer and upload cc_salesdrive.ocmod.zip.
  2. Go to Extensions → Extensions → Modules, find SalesDrive Sync and click “Install” — the module creates the log table, the event and the cron task.
  3. Open the module’s settings: enter your SalesDrive account domain and API key.
  4. Click the connection-test button — make sure the CRM responds.
  5. Choose the send moment (on placement or on status change), save — done.

OpenCart 2.3. The built-in 2.3 Installer only copies files via FTP: if FTP isn’t configured in the shop, unpack cc_salesdrive-oc2.ocmod.zip and upload the contents of the upload/ folder to the shop root, then follow the same steps — Extensions → Modules → SalesDrive Sync → “Install”.

Retries in OpenCart 2.3. 2.3 has no scheduler at all, so the retry queue is driven by a plain storefront address — add it to the hosting’s crontab (typically every 15 minutes) and lock it with your own cron token from the module’s settings:

curl -s "https://YOUR-SHOP/index.php?route=extension/module/cc_salesdrive_cron/retry&token=TOKEN"

Version history

1.1.1 — August 2026
Lead and line totals are now sent in the order’s currency at its historical rate — previously SalesDrive received figures in the shop’s base currency (4.x and 3.x builds).
1.0.0 (OpenCart 2.3) — August 2026
A separate build for OpenCart 2.3.0.0–2.3.0.2 and PHP 5.6–7.x: Bootstrap 3 templates, the addOrderHistory/after event, a retry queue as a storefront address with a cron token (2.3 has no scheduler). Totals in the lead are converted to the order’s currency at its historical rate — a shop with a base currency different from the sale currency no longer sends understated totals to the CRM. Item names, payment/shipping method and address are decoded from the HTML entities in which 2.3 stores them.
1.1.0 — August 2026
Fixed sending line items: SalesDrive was silently dropping items without an id field, and the lead arrived with an empty list and a zero total. The event is now registered in OC4 format with a * before the method (with a dot it wouldn’t fire). PHP 7.4 compatibility. Orders that got stuck mid-send now enter the retry queue. Added an optional cron token for the public retry URL and an externalId prefix for multiple shops in one SalesDrive account.
1.0.1 — July 2026
Minor fixes to event registration and line-item mapping.
1.0.0 — July 2026
First public release: sends orders to SalesDrive on placement or by status trigger, an idempotent sync log (UNIQUE on order_id), a retry queue via hourly cron, mapping of items/payment/shipping, API key encryption, connection test, a log with request/response logging.

Frequently asked questions

Does the module modify OpenCart files or the theme?

No. This is an event-driven extension for OC4: no OCMOD patches to system files, checkout and theme remain untouched. After the module is removed, the shop works as before.

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.

An order changes status several times — will there be several leads?

No. The sync log holds a unique record per order: if the lead is already created, repeated events are skipped.

What happens if SalesDrive goes down at the moment of the order?

Nothing is lost: the attempt is recorded as an error, and the hourly cron will retry the send (up to 5 attempts by default). The order in OpenCart is created regardless.

What happens after the module is deleted?

The event and cron task are removed. The sync log table is deliberately kept so the send history isn't lost; it can be removed manually if needed.

Do I need cron running all the time?

Only for automatic retries on failure. The initial send happens right on the order event, without cron.

Questions about the module?

Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.

@catcode_support

Not quite what you are looking for?

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

Order a custom module