KeepinCRM Sync — CRM for OpenCart 2.3, 3.x & 4.x
Free OpenCart integration module for KeepinCRM: an order becomes a deal with the customer, items, price and currency. Open source, no keys or limits.
- Compatibility
- OpenCart 2.3.0.0 – 2.3.0.2 · 3.0.2 – 3.0.5 · 4.0.2 – 4.1.x
- Version
-
v1.1.1 (OpenCart 4)
v1.1.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Updated
- August 2026
What the module does
What it looks like
Technical requirements
OpenCart 4.0.2 – 4.1.x — build cc_keepincrm.ocmod.zip, PHP 7.4 or newer
OpenCart 3.0.0 – 3.0.5 — build cc_keepincrm-oc3.ocmod.zip, PHP 5.6 – 8.2
OpenCart 2.3.0.0 – 2.3.0.2 — build cc_keepincrm-oc2.ocmod.zip, PHP 5.6 or newer
KeepinCRM API token — created in the account: Settings → Company profile → API tab → “Create”
OpenCart cron enabled — for automatic retries on failures (the initial send works instantly on the event, without cron)
Version history
Deal and line totals are now sent in the order’s currency at its historical rate.
The OpenCart 3 build was brought up to the level of 2.3 and 4.x.
A separate build for OpenCart 2.3.0.0.
All versions (6)
Fixed sending on PHP 7.4: the event handler had a mixed type (PHP 8 syntax), which meant sync didn’t fire at all on 7.4.
Fixed a “silent” event on OpenCart 4.0.2.x.
First public release: creating deals in KeepinCRM (POST /agreements) on placement or by status trigger, idempotent sync log, retry queue via hourly cron, mapping of items/payment/shipping,…
Full module description
KeepinCRM Sync for OpenCart is a module that sends orders from a shop on OpenCart 2.3, 3.x or 4.x into KeepinCRM as deals. When an order is placed (or moves into the chosen status), a deal automatically appears in the CRM with the customer, items with price and currency, and the buyer’s comment. The manager works the request in KeepinCRM while the order is still “hot”, with no copying of data from the OpenCart admin.
The module is completely free, and the code is open. Download it from GitHub: github.com/catcodestudio/opencart-keepincrm-sync — no licence keys or limits.
How it works, step by step
- The customer places an order in the OpenCart shop.
- The module catches the event of adding order history and fires on placement or on reaching a chosen status.
- A deal is built: a client lead (full name, email, phone in +380 format), items as deal lines with price and currency, a comment — and it’s sent to KeepinCRM (POST /agreements on api.keepincrm.com/v1, X-Auth-Token header).
- The deal ID is recorded in the sync log. The record per order is unique, so repeated events don’t spawn duplicates — one deal per order, guaranteed.
- If KeepinCRM is unavailable — the order stays queued, and OpenCart’s hourly cron retries the send (up to 5 attempts by default).
- The admin sees the result in the log: status, deal ID, number of attempts, the last error, and the full request/response body.
How much it costs
Free, open source. Repository on GitHub: catcodestudio/opencart-keepincrm-sync — use it without activations or subscriptions.
Under the hood
- OC4 event-driven architecture — the module registers an event on adding order history and works without OCMOD patches to core or theme files.
- Database-level idempotency: a cc_keepincrm_sync log table with a unique key on order_id — duplicate deals are physically ruled out.
- Retry queue via OpenCart’s built-in cron: the cc_keepincrm_retry task runs hourly and picks up failed sends until the attempt limit is reached.
- The API token is encrypted before being stored in the database — it isn’t kept in plain text.
- Full exchange log: the log stores the request body and CRM responses for every order — diagnosing issues without guesswork.
How to install
- In the OpenCart admin, open Extensions → Installer and upload
cc_keepincrm.ocmod.zip. - In Extensions → Extensions → Modules, find KeepinCRM Sync and click “Install” — the log table, event and cron task are created.
- Open the module’s settings and paste the API token from your KeepinCRM account (Settings → Company profile → API tab).
- Click the connection-test button — make sure the CRM responds.
- Optionally fill in the routing (pipeline, stage, source, assignee), choose the send moment, and save.
Separately for OpenCart 3.x. Upload cc_keepincrm-oc3.ocmod.zip via Extensions → Installer and refresh the modifications. OpenCart 3 has no task scheduler, so retries are set up in the hosting’s crontab — the address is shown in the module’s settings; set a cron token there too, otherwise the address is open to anyone:
curl -s "https://YOUR-SHOP/index.php?route=extension/module/cc_keepincrm/cronRetry&token=TOKEN"Separately for OpenCart 2.3. The built-in 2.3 Installer only copies files via FTP: if FTP isn’t configured in the shop, unpack cc_keepincrm-oc2.ocmod.zip and upload the contents of the upload/ folder to the shop root, then install the module in Extensions → Modules. 2.3 has no scheduler at all, so retries are set up manually in the system crontab — the address is shown on the “Cron” tab of the module’s settings; set a cron token there too, otherwise the address is open to anyone:
curl -s "https://YOUR-SHOP/index.php?route=extension/module/cc_keepincrm_cron/retry&token=TOKEN"Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Does the module change OpenCart files, the checkout or the theme?
No. This is an event-driven OC4 extension with no OCMOD patches: checkout and theme stay as they were, and after removing the module the shop runs with no trace of it.
Where do I get the API token?
KeepinCRM account → Settings → Company profile → API tab → "Create". The token is sent in the X-Auth-Token header and stored encrypted.
An order changes status several times — will there be several deals in the CRM?
No. The sync log holds a unique record per order: if the deal is already created, repeated events are skipped.
What happens if KeepinCRM is temporarily unavailable?
The order is created in OpenCart as usual, and the send to the CRM is queued — the hourly cron retries it until it succeeds (up to 5 attempts by default). The error and server response are visible in the log.
Can deals be routed into the right pipeline?
Yes. The settings have optional fields for pipeline, stage, source and assignee IDs — new deals are created with that link straight away.
What happens after the module is deleted?
The event and cron task are removed automatically. The log table is deliberately kept so the sync history isn't lost; it can be removed manually if needed.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
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
Buying the module
—
