Синхронизация клиентов
Tajo переносит данные клиентов в Brevo двумя способами: постоянная синхронизация (изменения в подключённой платформе непрерывно поступают в Brevo) и массовая миграция (возобновляемый перенос больших объёмов из Mailchimp, Klaviyo, HubSpot, Salesforce, Shopify, WooCommerce, Stripe и других систем). Оба способа работают на одном движке и разделяют одно неоспоримое свойство: согласие доказывается для каждой записи и никогда не предполагается.
Как определяется согласие
Каждая запись проходит проверку согласия по принципу fail-closed (без доказательства доступ закрыт), прежде чем попасть в маркетинговую аудиторию:
| Вердикт | Что происходит |
|---|---|
Согласие доказано (например, Mailchimp subscribed, Klaviyo SUBSCRIBED, маркетинговое согласие Shopify) | Импортируется в выбранные вами списки Brevo |
| Явный отказ (отписка, отзыв согласия) | Не отбрасывается: переносится в Brevo как контакт в чёрном списке и записывается в реестр запрета на связь, поэтому новая платформа никогда не сможет ему написать |
Подавлено по доставляемости (жёсткий отказ доставки, жалоба на спам, например Mailchimp cleaned, Klaviyo HARD_BOUNCE/SPAM_COMPLAINT) | Переносится как контакт в чёрном списке и помечается как несбрасываемое: более позднее согласие на другой платформе никогда не снимает отказ доставки или жалобу |
| Не доказано (сигнала о согласии нет вовсе) | Отклоняется. «Мы не смогли доказать согласие» и «согласие есть» никогда не одно и то же |
Различие между «отказом» и «недоказанным» важно: отписка является решением, которое обязано пережить миграцию, а отсутствующее поле решением не является вовсе.
Источники доказательства согласия по платформам
| Платформа | Доказательство согласия | Сигналы подавления |
|---|---|---|
| Mailchimp | Статус участника subscribed | unsubscribed (отказ), cleaned (жёсткий отказ доставки) |
| Klaviyo | Маркетинговое согласие в профиле SUBSCRIBED | Список подавления с причинами (UNSUBSCRIBE, USER_SUPPRESSED, HARD_BOUNCE, INVALID_EMAIL, SPAM_COMPLAINT) |
| Shopify | email_marketing_consent.state / accepts_marketing | Явное значение not_subscribed |
| HubSpot | Статусы подписки (пакетный API, 100 контактов за вызов) | hs_email_optout |
| Salesforce | Массово недоказуемо из Sales Cloud: идентичность мигрирует, но включение в аудиторию остаётся закрытым | HasOptedOutOfEmail, EmailBouncedDate |
| WooCommerce / Stripe | Не выводится из покупок: запись о клиенте не является маркетинговым согласием | нет |
Разрешение конфликтов во время миграции
Когда источник и Brevo расходятся по одному и тому же адресу, разрешение следует выбранному вами режиму:
- Побеждает последнее решение (по умолчанию): верх берёт сторона, чьё решение о согласии имеет более свежую метку времени. Сторона без разбираемой метки времени всегда проигрывает стороне с меткой; если метки нет ни у одной, побеждает менее доступное состояние.
- Источник истины: вы назначаете авторитетную платформу для миграции («прав источник» или «право Brevo»). Если в вашем рабочем пространстве уже объявлена система учёта, эта платформа автоматически становится авторитетом по умолчанию.
- В любом режиме: жёсткие отказы доставки и жалобы на спам являются фактами доставляемости, а не предпочтениями, поэтому более новое согласие никогда не снимает подавление, а каждый конфликт, по которому движок отказался действовать, подсчитывается и попадает в отчёт, а не пропускается молча.
Надёжность при больших объёмах
- Курсорное извлечение проходит всю исходную таблицу (100 тыс. контактов и больше) с контрольными точками, поэтому после сбоя работа возобновляется с последнего завершённого пакета, а повторы никогда не пишут дважды (ключи идемпотентности для каждой записи).
- Запись в Brevo идёт через API массового импорта (10 000 контактов в порции) в пределах лимитов Brevo; состояние подавления переносится вместе с импортом, поэтому не возникает окна, когда контакт сначала доступен, а потом подавлен.
- Каждый запуск сообщает, что перенесено и что нет: импортированные контакты, перенесённые явные отказы, распространённые подавления, отложенные конфликты и причины сбоев по каждой записи.
Что добавляет синхронизация после миграции
После миграции те же подключения поддерживают Brevo в актуальном состоянии: вебхуки платформ (Shopify, WooCommerce, WordPress, Mailchimp) передают изменения почти в реальном времени, а опрашиваемые источники обновляются по расписанию. Отписки, замеченные в источнике, меняют согласие в реестре, вместе с журналом аудита: когда, откуда и на каком основании.
Настройка
- Подключите исходную платформу в Tajo (API-ключ или OAuth, в зависимости от коннектора).
- Подключите Brevo и выберите целевые списки.
- Выберите режим разрешения конфликтов (или оставьте значение по умолчанию).
- Запустите миграцию и изучите отчёт, включая отложенные конфликты, прежде чем включать автоматизации.
Обработку согласия и подавления нельзя отключить в настройках. Нет параметра, который импортировал бы отписавшиеся контакты как доступные для рассылки.