KeepinCRM Sync — CRM для OpenCart 2.3, 3.x & 4.x
Автоматична передача замовлень OpenCart 2.3, 3.x і 4.x у CRM KeepinCRM: угода створюється при оформленні з клієнтом, товарами та коментарем. Ідемпотентність, повторні спроби через cron, журнал синхронізації.
Що включено в ліцензії
| Функція | Free |
|---|---|
| Угода в KeepinCRM на кожне замовлення OpenCart | ✔ |
| Клієнт, товари й коментар передаються автоматично | ✔ |
| Тригер-статуси на вибір | ✔ |
| Дедуплікація та черга повторних спроб | ✔ |
| Журнал обмінів в адмінці | ✔ |
| Окремі збірки під OpenCart 2.3, 3.x і 4.x | ✔ |
| Безкоштовний | ✔ |
KeepinCRM Sync для OpenCart — модуль, який передає замовлення магазину на OpenCart 2.3, 3.x або 4.x у KeepinCRM у вигляді угод. При оформленні замовлення (або при переході в обраний статус) у CRM автоматично з’являється угода з клієнтом, товарами з ціною й валютою та коментарем покупця. Менеджер обробляє заявку в KeepinCRM, поки замовлення ще «гаряче», без копіювання даних із адмінки OpenCart.
Модуль повністю безкоштовний, код відкритий. Завантажити з GitHub: github.com/catcodestudio/opencart-keepincrm-sync — без ліцензійних ключів і обмежень.
Що отримує адмін



Як це працює — крок за кроком
- Клієнт оформлює замовлення в магазині OpenCart.
- Модуль ловить подію додавання історії замовлення і спрацьовує при оформленні або при переході у вибраний статус.
- Формується угода: клієнт-лід (ПІБ, email, телефон у форматі +380), товари рядками угоди з ціною та валютою, коментар — і відправляється в KeepinCRM (POST /agreements на api.keepincrm.com/v1, заголовок X-Auth-Token).
- ID угоди фіксується в журналі синхронізації. Запис на замовлення унікальний, тому повторні події не породжують дублі — одна угода на одне замовлення, гарантовано.
- Якщо KeepinCRM недоступний — замовлення лишається в черзі, і погодинний cron OpenCart повторює відправку (за замовчуванням до 5 спроб).
- Адмін бачить результат у журналі: статус, ID угоди, кількість спроб, останню помилку і повне тіло запиту/відповіді.
Скільки коштує
Безкоштовно, код відкритий. Репозиторій на GitHub: catcodestudio/opencart-keepincrm-sync — користуйтесь без активацій і підписок.
Технічні вимоги
- OpenCart 4.0.2 – 4.1.x — збірка
cc_keepincrm.ocmod.zip, PHP 7.4 і новіше - OpenCart 3.0.0 – 3.0.5 — збірка
cc_keepincrm-oc3.ocmod.zip, PHP 5.6 – 8.2 - OpenCart 2.3.0.0 – 2.3.0.2 — збірка
cc_keepincrm-oc2.ocmod.zip, PHP 5.6 і новіше - API-токен KeepinCRM — створюється в кабінеті: Налаштування → Профіль компанії → вкладка API → «Створити»
- Увімкнений cron OpenCart — для автоматичних повторів при збоях (основна відправка працює одразу за подією, без cron)
Що під капотом
- Подієва архітектура OC4 — модуль реєструє event на додавання історії замовлення і працює без OCMOD-патчів системних файлів чи теми.
- Ідемпотентність на рівні БД: таблиця журналу cc_keepincrm_sync з унікальним ключем по order_id — дублі угод виключені фізично.
- Retry-черга через штатний cron OpenCart: задача cc_keepincrm_retry виконується щогодини і добирає невдалі відправки до вичерпання ліміту спроб.
- API-токен шифрується перед збереженням у БД, у відкритому вигляді в базі не зберігається.
- Повний лог обміну: журнал зберігає тіло запиту й відповіді CRM по кожному замовленню — діагностика проблем без вгадувань.
Як встановити
- В адмінці OpenCart відкрийте Розширення → Інсталятор і завантажте
cc_keepincrm.ocmod.zip. - У Розширення → Розширення → Модулі знайдіть KeepinCRM Sync і натисніть «Встановити» — створяться таблиця журналу, подія і cron-задача.
- Відкрийте налаштування модуля і вставте API-токен із кабінету KeepinCRM (Налаштування → Профіль компанії → вкладка API).
- Натисніть кнопку перевірки з’єднання — переконайтесь, що CRM відповідає.
- За бажанням заповніть маршрутизацію (воронка, етап, джерело, відповідальний), оберіть момент відправки і збережіть.
Окремо для OpenCart 3.x. Завантажте cc_keepincrm-oc3.ocmod.zip через Розширення → Інсталятор і оновіть модифікації. Планувальника завдань в OpenCart 3 немає, тому повторні спроби ставляться в crontab хостингу — адреса показана в налаштуваннях модуля; там же задайте cron-токен, інакше адреса відкрита будь-кому:
curl -s "https://ВАШ-МАГАЗИН/index.php?route=extension/module/cc_keepincrm/cronRetry&token=ТОКЕН"
Окремо для OpenCart 2.3. Штатний Інсталятор 2.3 копіює файли тільки по FTP: якщо FTP у магазині не налаштовано, розпакуйте cc_keepincrm-oc2.ocmod.zip і залийте вміст теки upload/ у корінь магазину, після чого встановіть модуль у Розширення → Модулі. Планувальника в 2.3 немає взагалі, тому повторні спроби ставляться в системний crontab вручну — адреса показана на вкладці «Cron» у налаштуваннях модуля; задайте там же cron-токен, інакше адреса відкрита будь-кому:
curl -s "https://ВАШ-МАГАЗИН/index.php?route=extension/module/cc_keepincrm_cron/retry&token=ТОКЕН"
Історія версій
- 1.1.1 — серпень 2026
- Суми угоди й позицій надсилаються у валюті замовлення за його історичним курсом — раніше в CRM їхали числа базової валюти магазину поруч із кодом валюти замовлення.
- 1.1.0 (OpenCart 3) — серпень 2026
- Збірка під OpenCart 3 підтягнута до рівня 2.3 і 4.x. Суми в угоді тепер переводяться у валюту замовлення за його історичним курсом — на магазині, де базова валюта не збігається з валютою продажу, у CRM їхали «сирі» числа бази. HTML-сутності (лапки, амперсанд) більше не потрапляють ні в налаштування, ні в назви товарів і адреси, що йдуть у CRM. Доданий необов’язковий cron-токен для адреси повторних спроб (порожній за замовчуванням, щоб наявний crontab не зламався), відповідь крону стала машинно-читаною. Черга добирає записи, що зависли в стані «pending» довше години; «Перевірити з’єднання» тепер доступне лише користувачам з правом редагування.
- 1.0.0 (OpenCart 2.3) — серпень 2026
- Окрема збірка під OpenCart 2.3.0.0 – 2.3.0.2 і PHP 5.6+: шаблони на PHP замість Twig, подія
addOrderHistory, повторні спроби через адресу вітрини з власним cron-токеном (планувальника в 2.3 немає). Суми в CRM переводяться у валюту замовлення за його історичним курсом — на магазині, де базова валюта не збігається з валютою продажу, у 4.x-збірці в угоду йшли «сирі» числа бази. - 1.1.0 — серпень 2026
- Виправлено відправку на PHP 7.4: обробник події мав тип
mixed(синтаксис PHP 8), через що на 7.4 синхронізація не спрацьовувала взагалі. Виправлено чергу повторних спроб — cron перевіряв неіснуючий ключ і не переспрямовував жодного замовлення; тепер добирає і записи, що зависли в стані «pending» довше години. Доданий необов’язковий cron-токен: прямий виклик URL повторних спроб можна закрити, штатний планувальник OpenCart працює й без нього. Гард mbstring у журналі, посилання на модуль у списку розширень виправлене. - 1.0.1 — липень 2026
- Виправлено «мовчазну» подію на OpenCart 4.0.2.x: у 4.0.2 роздільник методу — слеш, у 4.1 — крапка, тому тригер переведено на шаблон із зірочкою, який працює на всіх 4.x.
- 1.0.0 — липень 2026
- Перший публічний реліз: створення угод у KeepinCRM (POST /agreements) при оформленні або за статусом-тригером, ідемпотентний журнал синхронізації, retry-черга через погодинний cron, мапінг товарів/оплати/доставки, маршрутизація воронка/етап/джерело/відповідальний, шифрування токена, перевірка з’єднання, лог запитів і відповідей.
Часті питання
Чи змінює модуль файли OpenCart, checkout або тему?
Ні. Це подієве розширення OC4 без OCMOD-патчів: checkout і тема лишаються як були, після видалення модуля магазин працює без слідів.
Звідки взяти API-токен?
Кабінет KeepinCRM → Налаштування → Профіль компанії → вкладка API → «Створити». Токен передається в заголовку X-Auth-Token і зберігається зашифрованим.
Замовлення кілька разів змінює статус — у CRM буде кілька угод?
Ні. Журнал синхронізації тримає унікальний запис на замовлення: якщо угода вже створена, повторні події пропускаються.
Що буде, якщо KeepinCRM тимчасово недоступний?
Замовлення в OpenCart створиться як завжди, а відправка в CRM стане в чергу — погодинний cron повторюватиме її до успіху (до 5 спроб за замовчуванням). Помилка і відповідь сервера видимі в журналі.
Чи можна направляти угоди в потрібну воронку?
Так. У налаштуваннях є необов’язкові поля ID воронки, етапу, джерела та відповідального працівника — нові угоди створюються одразу з цією прив’язкою.
Що станеться після видалення модуля?
Подія і cron-задача видаляються автоматично. Таблиця журналу навмисно зберігається, щоб не втратити історію синхронізації; за потреби її можна прибрати вручну.
Питання щодо модуля?
Пишіть у Telegram — відповімо протягом робочого дня. Допоможемо з налаштуванням, сумісністю та активацією ключа.
Поки що жодного відгуку. Будь першим — нижче.
Залишити відгук
Відгук модерується перед публікацією — це звичайно займає до 24 годин.
Поки питань немає. Запитай — ми відповімо протягом 24 годин.
Поставити питання
Зазвичай відповідаємо протягом 24 годин у робочий час.
Купівля модуля
—