Задача
Заказы и отгрузки живут в МойСклад, рассылки уходят через Unisender. Между ними - ничего. У маркетинга нет инструмента для точечной рассылки. Нельзя было собрать сегмент и отправить оффер. Например, выделить тех, кто уже покупал купальники с определенным принтом (в этой нише принт - это базовая характеристика товара), или запустить гео-акцию только на жителей конкретного города.
Задача казалась тривиальной - связать две системы. Но была хитрость. Данные в МойСклад оказались "грязными". Поле адреса почти всегда пустое, город зашит в свободном тексте комментария к заказу. Атрибут "принт" висит не на тех карточках, где его ищут, а в общей массе контактов перемешаны оптовики и розница. Нельзя было просто перелить базу, на выходе маркетинг получил бы мусор. Мне нужно было выстроить логику очистки и обогащения.
Решение
Я разделил архитектуру на два независимых контура. Это позволило сразу дать маркетингу рабочую базу и настроить обновление в будущем.
Контур 1: исторические данные (разовый Python-скрипт)
Я поднял всю накопленную историю продаж за раз. Скрипт прошел по заказам с двух складов (интернет-магазин и шоурум), очистил данные, обогатил их нужными метриками и залил 21 800 контактов в Unisender. Это стартовое состояние. Маркетинг сразу получил полную базу для работы.
Контур 2: синхронизация онлайн (n8n)
Здесь я настроил автоматизацию для новых отгрузок. Вебхук из МойСклад ловит событие по отгрузке. Дальше автоматизация в n8n фильтрует заказ по складу и типу контрагента, обогащает теми же полями, что и в Контуре 1, и отправляет контакт в Unisender.
Чтобы в Unisender уходили чистые сегменты, а не мусор, в оба контура я зашил логику обработки:
- Вытащил гео из комментариев к заказам. Поле адреса было пустым, поэтому я написал парсер с белым списком на ~2600 городов РФ. Итог - вытащил гео для 46% базы и обогатил рассылку.
- Достал принты с родительских товаров. В МойСклад принт висел на родительском товаре, а не на модификации. Настроил программный обход от модификации к родителю. Итог - 96% базы размечено по принтам.
- Внедрил двойной фильтр оптовиков. Отсекал юрлиц по тегам контрагента плюс ручному стоп-листу, чтобы B2B-клиенты гарантированно не получали розничную рассылку.
- Настроил расчет LTV. Считал ценность клиента в рублях, но программно вычитал из чека стоимость доставки и сервисных сборов.
Результат
Маркетинг получил сегментируемую базу из 21 800 контактов вместо плоского списка email. Теперь отдел может собирать узкие аудитории: VIP-клиентов для премиум-офферов, покупателей конкретного принта под допродажу той же линейки, клиентов по городу под гео-акции и новичков под догоняющую цепочку.
Цифры по итогу интеграции:
- 21 800 контактов загружено в Unisender с полной разметкой.
- 96% покрытие базы по принтам.
- 46% покрытие по гео (спасенные данные из комментариев к заказам).
- 808 VIP-клиентов выделено в отдельные сегменты (680 клиентов с LTV от 100к, из них 128 - от 200к. Готовые сегменты под премиум-офферы.).
Новые заказы подтягиваются автоматически. База обновляется без ручного труда, менеджеры не делают выгрузок, а рассылки уходят по актуальным данным.