UTM-трекер показывает, откуда пришёл заказ. Этот модуль показывает, сколько заказ стоил: сводит расходы на рекламу с продажами и считает ДРР, ROI и стоимость заказа по каждому каналу и каждой кампании.
Демо-магазин
Витрина —
opencart3.nikifalex.ru
Админка —
opencart3.nikifalex.ru/admin/, логин и пароль: demo / demo (поля входа уже заполнены).
В демо-магазине стоит платная версия — видно, что даёт снятие ограничений.
Что входит в бесплатную версию
Модуль собирает данные полностью: снимает метки, определяет источник каждого заказа, считает выручку и прибыль. Показывает сводку за период и разрез по каналам — сколько потрачено, сколько вернулось, какой ДРР и CPO у Директа, Авито, ВК и остальных. Расходы вносятся вручную и регулярными правилами.
Ограничения бесплатной версии:
- разрез по кампаниям — только в платной (данные по ним собираются, но таблица не открывается);
- загрузка расходов файлом из рекламного кабинета — только в платной;
- выгрузка отчёта в CSV и учёт нескольких магазинов — только в платной.
Платная версия ставится поверх бесплатной обычной загрузкой архива: файлы перезаписываются, настройки и накопленная статистика остаются. Переносить и перенастраивать ничего не нужно.
Платная версия: ДРР, ROI и окупаемость рекламы
Зачем он нужен
Владелец магазина платит за Директ, Авито, посевы у блогеров и SEO, а какая из этих статей окупается — считает в лучшем случае раз в квартал в Excel. Сервисы сквозной аналитики берут от 5 000 ₽ в месяц и требуют вебхуков и интеграций.
Модуль отвечает на три вопроса одним экраном:
- Сколько денег ушло в рекламу и сколько вернулось выручкой и прибылью — в целом и по каждой кампании.
- Какие кампании работают в минус: ДРР выше порога — строка подсвечена, её видно сразу.
- Сколько стоит заказ из каждого канала (CPO) и какой канал имеет смысл масштабировать.
Что считает
CPC, CPO, CR, ДРР, ROAS, ROMI и средний чек — за период, по каналам и по кампаниям, с сортировкой по любому столбцу и выгрузкой в CSV. Заказы и выкупы считаются раздельно и показываются рядом: разница между «заказали» и «забрали» — это недовыкуп, который съедает рекламный бюджет незаметно.
Прибыль — тремя способами на выбор: процент маржи (работает сразу), себестоимость из карточки товара (точнее), фиксированная сумма с заказа. Доставка из выручки вычитается — с ней ДРР выглядит лучше, чем есть.
Расходы без API и токенов
Модуль не подключается к рекламным кабинетам: не нужен OAuth, не нужны заявки на доступ к API, в магазине не хранится токен, которым можно управлять чужими деньгами. Расход попадает в модуль тремя способами:
- Вручную — день, канал, сумма. Если указать период, сумма разложится по дням: так вносят оплату блогеру за интеграцию.
- Правилом — «SEO-подрядчик 30 000 ₽/мес» заводится один раз и дальше раскладывается по дням само. Без таких правил отчёт показывает окупаемость рекламы, но не окупаемость маркетинга.
- Файлом из рекламного кабинета — CSV, TSV, XLSX с автоматическим распознаванием колонок. Это возможность платной версии.
Откуда модуль знает источник заказа
Метки снимаются на самом сайте: utm-метки, идентификаторы кликов (yclid, gclid), источник перехода. Заказ связывается с кампанией по номеру или имени кампании из метки. Модель атрибуции — последний непрямой переход (как в Метрике), первый или последний переход; окно атрибуции настраивается, по умолчанию 90 дней.
Переходы без меток не выбрасываются: поиск, соцсети, прямые заходы и переходы с сайтов считаются отдельными каналами и стоят в отчёте рядом с рекламой — видно, какую долю продаж вообще делает платный трафик.
Если на магазине установлен модуль «Офлайн-конверсии Яндекс Метрики» (nkf_metrika), атрибуция берётся из него — два модуля не спорят за посетителя.
Отчёт не врёт
- Строка «Не распознано» показывается всегда. Это заказы, чьи метки модуль не смог разобрать, — мера качества разметки, а не мусор. Прятать её — значит рисовать красивый ДРР на половине данных.
- Кампания с расходом и без единого заказа остаётся в отчёте. Ради этой строки отчёт и открывают.
- Если по каналу с заказами давно не заводили расходы, отчёт предупреждает: ДРР по нему занижен. Рядом с итогами написано, какая доля дней периода покрыта расходами.
- Проверка разметки: модуль разбирает последние 200 заказов и говорит, сколько пришло с рабочими метками и что именно поправить в ссылках — с готовым шаблоном параметров для Директа.
Ещё в модуле
- График «расход против выручки» по дням.
- Фильтры: период и канал.
- Правила «источник → канал» редактируются: любой новый источник трафика раскладывается по своим каналам без обновления модуля.
- Смена настроек расчёта честно пересчитывает историю — пачками, кроном или кнопкой, с предупреждением в отчёте, пока пересчёт не закончен.
Ограничения
- Модуль не тянет расходы из кабинетов сам — выгрузку нужно загружать файлом либо заводить расходы правилами. Это осознанный размен: не нужны токены, модерация API и починка интеграции после каждого обновления кабинета.
- Атрибуция начинается с момента установки: заказы, оформленные до неё, попадают в «Не распознано» — источник задним числом восстановить не по чему.
- Разрез по кампаниям, загрузка расходов файлом, выгрузка CSV и мультистор — в платной версии.
Технические детали
- Версия модуля: 1.0
- Совместимость: OpenCart 3.0.x, ocStore 3.0.x. PHP 7.0+, проверено на PHP 8.3.
- Установка штатная: загрузка ocmod-архива, обновление модификаторов, активация модуля.
- Работает на событиях OpenCart, ядро не патчится. Модификатор добавляет только пункт меню в «Отчётах».
- Свои таблицы в базе; чужие трекеры и счётчики не трогает. При удалении модуля накопленные данные сохраняются.
- Крон не обязателен: витрина пересчитывается кнопкой. Для автоматики — HTTP-адрес с секретом либо запуск из командной строки.
Что нового в версии 1.0
- Первый выпуск: отчёты «Сводка» и «Каналы», расходы вручную и регулярными правилами, атрибуция по меткам и переходам, проверка разметки, крон.