Обсудить проект
Обсудить проект

Как связали InSales, Bonus Plus и Sendsay и проверили работу на реальных регистрациях

Как связали InSales, Bonus Plus и Sendsay и проверили работу на реальных регистрациях

Интернет-магазину было нужно связать три системы: InSales, программу лояльности Bonus Plus и сервис рассылок Sendsay. Покупатель мог зарегистрироваться на сайте или впервые попасть в программу лояльности в офлайн-магазине. После этого его данные должны были правильно передаваться между системами, а согласия на сообщения учитываться автоматически.

На первый взгляд задача выглядит просто: взять данные покупателя в одной системе и отправить в другую. На практике такой обмен требует аккуратной настройки. Одна и та же регистрация может прийти повторно, сведения о покупателе могут измениться, а разрешение на рассылку нельзя определять только по наличию электронной почты. Ошибка в этих правилах приводит к дублям, неверным подпискам и ручной работе сотрудников.

Мы спроектировали и запустили отдельную систему обмена данными, которая связала InSales, Bonus Plus и Sendsay. Она работает на защищённом сервере, проверяет актуальные сведения перед передачей, учитывает согласия и не создаёт повторные карточки при повторном событии.

Что требовалось настроить

В проекте было три основных сценария.

Первый сценарий начинался с регистрации покупателя в интернет-магазине на InSales. После регистрации нужно было найти его в Bonus Plus или создать новую карточку участника программы лояльности. Если карточка уже существовала, система должна была аккуратно обновить нужные сведения, не создавая второго покупателя.

Второй сценарий тоже начинался в InSales, но данные передавались в Sendsay. Здесь было важно проверить не только электронную почту, но и согласие человека на получение сообщений. Если покупатель отписался или его адрес был заблокирован, повторно подписывать его было нельзя.

Третий сценарий предназначался для покупателей, которые впервые появились в Bonus Plus, например после регистрации в обычном магазине. Если такой клиент разрешил сообщения, его данные нужно было передать в Sendsay. При этом человек, который уже пришёл из InSales, не должен был попадать в повторный круг обмена.

Во всех трёх сценариях нужно было учитывать изменения данных. Например, дата рождения могла быть заполнена не сразу, а через некоторое время. Новое значение должно было попасть в программу лояльности и сервис рассылок без повторной регистрации и без изменения ранее сохранённых согласий.

Почему нельзя было просто пересылать всё подряд

Системы сообщают друг другу о новых событиях, но такое сообщение не всегда содержит полную и самую свежую информацию. Кроме того, одно и то же событие может быть отправлено несколько раз. Если без проверки выполнять каждое входящее действие, в программе лояльности могут появиться дубли, а в сервис рассылок может повторно уйти одна и та же команда.

Поэтому мы построили обмен по другому принципу. Когда система получает сообщение о регистрации или изменении, она сначала обращается к источнику и проверяет текущее состояние карточки. После этого она определяет, какое действие действительно требуется: создать покупателя, обновить сведения, добавить разрешённый контакт в рассылку или ничего не делать.

Отдельно предусмотрели защиту от повторов. Система запоминает, какое событие уже обработано, но не хранит для этого телефон или электронную почту в открытом виде. Если то же событие приходит повторно, новая карточка не создаётся и повторная команда не отправляется.

Такой подход важен для постоянной работы. Интернет-магазин продолжает принимать регистрации и изменения круглосуточно, а владельцу не приходится регулярно искать и объединять дубли вручную.

Как организовали обмен между системами

Мы не стали объединять все действия в одно общее правило. Для каждой пары систем описали отдельный понятный сценарий: откуда пришёл покупатель, какие сведения можно передавать, что нужно проверить и каким должен быть итог.

Для передачи из InSales в Bonus Plus система проверяет, что речь идёт о зарегистрированном покупателе, приводит номер телефона к единому формату и ищет существующую карточку. Если карточка найдена, обновляются только нужные сведения. Если её нет, создаётся новый участник программы лояльности.

Для передачи из InSales в Sendsay сначала проверяются электронная почта и согласие на сообщения. Покупатель добавляется в нужную аудиторию рассылки, но его участие в других группах не изменяется. Если позднее появилась дата рождения, обновляется только это поле, без повторной подписки.

Для передачи из Bonus Plus в Sendsay система учитывает, откуда появился покупатель. Нового офлайн-клиента с подходящими согласиями можно передать в рассылки. Если карточка ранее была создана после регистрации в InSales, обратное сообщение не запускает весь процесс заново.

Это позволило отделить разные ситуации друг от друга. Изменение одного сценария не влияет незаметно на остальные, а каждое правило можно проверить отдельно.

Как защитили данные покупателей

Обмен работает на отдельном защищённом сервере. Доступ к нему ограничен, соединение с внешними системами защищено, а ключи доступа хранятся отдельно от рабочих файлов проекта.

В техническом хранилище нет открытых адресов электронной почты, телефонов, дат рождения и полных сообщений от внешних систем. Там сохраняются только служебные связи и безопасные цифровые отметки, необходимые для защиты от повторов и проверки результата.

В рабочих журналах также не выводятся персональные данные и ключи доступа. Это снижает риск случайного раскрытия информации во время поддержки или разбора ошибки.

Если внешняя система временно недоступна, обмен не повторяет запрос бесконечно. Он делает ограниченное количество попыток, а постоянную ошибку сохраняет отдельно для проверки. Благодаря этому проблема с одной карточкой не превращается в очередь повторных действий для всех покупателей.

Перед каждым обновлением рабочей версии мы сохраняли свежую резервную копию данных. Предыдущая рабочая версия также оставалась доступной. Если бы после включения возникла критическая ошибка, можно было быстро вернуть предыдущее состояние без ручного восстановления проекта с нуля.

Как нашли и закрыли важный пропуск

Во время первой боевой проверки мы увидели, что дата рождения корректно передавалась в одном сценарии, но не была полностью закрыта в двух других. Это показало, почему для сложной интеграции недостаточно проверить одно удачное действие и считать всю задачу выполненной.

Мы составили контрольную таблицу: какие сведения должны передаваться, между какими системами и как проверяется каждый сценарий. После этого отдельно доработали передачу даты рождения из InSales в Bonus Plus и из InSales в Sendsay.

Важно было обновить именно дату рождения, не меняя согласие на рассылку и не создавая покупателя повторно. После доработки каждый сценарий получил отдельную автоматическую и ручную проверку.

Эта таблица стала главным способом приёмки проекта. Поле считалось готовым не тогда, когда оно просто присутствовало в программе, а только после проверки во всех предусмотренных направлениях.

Как проверяли результат

Сначала мы проверили систему в безопасном режиме. Запустили 53 автоматических теста, которые воспроизводили обычные регистрации, повторные события, временные ошибки внешних систем, разные варианты согласий и обновление данных покупателя.

Перед включением боевого режима сделали свежую резервную копию. Это позволяло быстро вернуть прежнее состояние, если бы реальная проверка показала критическую проблему.

После этого включили рабочий режим и прошли путь обычного покупателя вручную. Зарегистрировались в интернет-магазине с новым номером телефона и проверили, что в Bonus Plus появилась правильная карточка участника программы лояльности.

Затем проверили Sendsay: дошли ли разрешённые данные, попал ли контакт в нужную аудиторию и сохранилось ли корректное состояние согласия. Через служебный интерфейс систем дополнительно посмотрели, какие действия выполнила программа и в каком состоянии завершился каждый шаг.

Проверку повторили для нескольких ситуаций. Убедились, что повторное сообщение не создаёт второго покупателя, изменение даты рождения обновляет существующую карточку, а регистрация офлайн-клиента в Bonus Plus правильно передаётся в Sendsay при наличии согласия.

Отдельно проверили обратные сообщения. Если покупатель первоначально зарегистрировался в InSales, ответ от Bonus Plus не должен был снова запускать ту же цепочку. Система распознавала такую ситуацию и не выполняла повторных действий.

После ручной проверки мы ещё раз убедились, что сервер работает стабильно, резервные копии создаются, а в рабочих журналах нет телефонов, адресов электронной почты, дат рождения и ключей доступа.

Что получил клиент

Клиент получил автоматический и проверенный обмен данными между InSales, Bonus Plus и Sendsay.

Теперь регистрация покупателя не требует ручного переноса сведений между интернет-магазином, программой лояльности и сервисом рассылок. Система проверяет актуальные данные, учитывает согласия, обновляет существующие карточки и защищается от повторов.

Для владельца магазина это означает меньше ручной работы и меньше риска, что один покупатель появится в нескольких карточках или будет ошибочно добавлен в рассылку. Для дальнейшей поддержки есть понятный порядок проверки, резервные копии и возможность безопасно вернуть предыдущую рабочую версию.

Проект проверен не только автоматическими тестами. Мы прошли реальную регистрацию с новым номером телефона, увидели созданную карточку в программе лояльности, проверили передачу данных в Sendsay и убедились через служебные интерфейсы, что каждый шаг завершился правильно.

Когда подходит такое решение

Подобная интеграция нужна, если интернет-магазин использует InSales вместе с программой лояльности, CRM или сервисом рассылок, а сотрудники регулярно переносят данные вручную или сталкиваются с дублями.

Перед началом работы мы разбираем, откуда может появиться покупатель, какие согласия нужно учитывать, какие сведения должны обновляться и как проверить каждый сценарий после запуска. Это позволяет заранее увидеть сложные места и построить обмен так, чтобы он оставался понятным, безопасным и управляемым.

Интеграции интернет-магазинов и автоматизация процессов

следующий шаг
Если нужна похожая реализация — обсудим задачу

Можно прийти с уже оформленным проектом или просто с задачей. Подскажем, как лучше подойти к реализации и какой формат работы подойдёт.

Обратный звонок
Запрос успешно отправлен!
Имя *
Телефон *
Предзаказ
Предзаказ успешно отправлен!
Имя *
Телефон *
Добавить в корзину
Название товара
100 руб
1 шт.
Перейти в корзину