CRM и интеграции · OpenCart

KeepinCRM Sync — CRM для OpenCart 2.3, 3.x и 4.x

Версия
v1.1.1 (OpenCart 4)
v1.1.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Совместимость
OpenCart 2.3.0.0 – 2.3.0.2 · 3.0.2 – 3.0.5 · 4.0.2 – 4.1.x
Платформа
OpenCart
KeepinCRM Sync — CRM для OpenCart 2.3, 3.x и 4.x

Что внутри

  • Сделка в 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 — без лицензионных ключей и ограничений.

Что получает админ

Настройки KeepinCRM Sync в админке OpenCart — API-токен, статус-триггер, момент отправки
Страница модуля в админке OpenCart: API-токен (хранится зашифрованным; пустое поле при сохранении не затирает имеющийся токен), момент отправки — при оформлении или по статусу-триггеру, кнопка проверки соединения и кнопка журнала синхронизации.
Лимит попыток, метка источника, cron-токен и маршрутизация сделок в KeepinCRM
Лимит повторных попыток, метка источника, необязательный cron-токен для защиты публичного URL повторных попыток и маршрутизация новых сделок: ID воронки, этапа, источника и ответственного.
Журнал синхронизации KeepinCRM: статус, ID сделки, количество попыток
Журнал синхронизации: по каждому заказу — статус, ID созданной сделки в KeepinCRM, количество попыток, последняя ошибка и время обновления. Тело запроса и ответа CRM сохраняется полностью.

Как это работает — шаг за шагом

  1. Клиент оформляет заказ в магазине OpenCart.
  2. Модуль ловит событие добавления истории заказа и срабатывает при оформлении или при переходе в выбранный статус.
  3. Формируется сделка: клиент-лид (ФИО, email, телефон в формате +380), товары строками сделки с ценой и валютой, комментарий — и отправляется в KeepinCRM (POST /agreements на api.keepincrm.com/v1, заголовок X-Auth-Token).
  4. ID сделки фиксируется в журнале синхронизации. Запись на заказ уникальна, поэтому повторные события не порождают дубли — одна сделка на один заказ, гарантированно.
  5. Если KeepinCRM недоступен — заказ остаётся в очереди, и почасовой cron OpenCart повторяет отправку (по умолчанию до 5 попыток).
  6. Админ видит результат в журнале: статус, 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 по каждому заказу — диагностика проблем без угадываний.

Как установить

  1. В админке OpenCart откройте Расширения → Инсталлятор и загрузите cc_keepincrm.ocmod.zip.
  2. В Расширения → Расширения → Модули найдите KeepinCRM Sync и нажмите «Установить» — создадутся таблица журнала, событие и cron-задача.
  3. Откройте настройки модуля и вставьте API-токен из кабинета KeepinCRM (Настройки → Профиль компании → вкладка API).
  4. Нажмите кнопку проверки соединения — убедитесь, что CRM отвечает.
  5. При желании заполните маршрутизацию (воронка, этап, источник, ответственный), выберите момент отправки и сохраните.

Отдельно для 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 — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.

@catcode_support

Не тот вариант, что искали?

Мы делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.

Заказать кастомный модуль