Руководство по интеграции с WooCommerce
Это руководство описывает подключение магазина WooCommerce к Tajo. Интеграция состоит из двух частей, которые работают вместе:
- Плагин Tajo for WooCommerce: захватывает события взаимодействия в реальном времени (заказы, корзины, возвраты, отзывы, отправки форм) внутри WordPress и доставляет их в Tajo через надёжную подписанную очередь отправки.
- Подключение WooCommerce REST: Tajo читает клиентов, заказы, товары, купоны, возвраты и отзывы вашего магазина для импорта истории и постоянной синхронизации. Настройку только по REST смотрите в справочнике по коннектору WooCommerce.
Сама маркетинговая автоматизация (email, SMS, WhatsApp через Brevo и других провайдеров) настраивается в Tajo, а не в плагине. Задача плагина: вывести достоверные события из WordPress.
Предварительные требования
- WordPress 6.3+ с доступом администратора
- PHP 7.4+
- WooCommerce 7.0+ (плагин работает и на сайтах WordPress без WooCommerce, тогда коммерческие адаптеры просто остаются неактивными)
- Аккаунт Tajo с созданным подключением WordPress
- HTTPS на эндпоинте Tajo (для облачного Tajo это всегда так)
Шаг 1: установите плагин Tajo for WooCommerce
Установка вручную
# Download the plugincd wp-content/pluginswget https://tajo.io/downloads/woocommerce/tajo-woocommerce-latest.zip
# Verify and unzipunzip tajo-woocommerce-latest.zipЗатем активируйте плагин в админке WordPress:
- Откройте Plugins → Installed Plugins
- Найдите «Tajo for WooCommerce»
- Нажмите Activate
Вы также можете загрузить zip-архив напрямую через Plugins → Add New → Upload Plugin. Контрольная сумма SHA-256 публикуется вместе с каждым релизом по адресу tajo.io/downloads/woocommerce/. Плагин пока не размещён в каталоге WordPress.org; сегодня поддерживается установка вручную.
Шаг 2: настройте подключение
Перейдите в WooCommerce → Tajo (на сайтах без WooCommerce: Settings → Tajo) и введите три значения из вашего подключения WordPress в Tajo:
| Поле | Значение |
|---|---|
| Эндпоинт Tajo | HTTPS-адрес вебхука, показанный в Tajo, например https://alto.tajo.io/api/connectors/wordpress/webhooks/engagement |
| Binding ID | Идентификатор привязки подключения из Tajo |
| Секрет подписи | Общий секрет (32–256 символов). При активации плагин генерирует надёжный локальный секрет; вставьте его в Tajo или вставьте сюда секрет из Tajo |
Никакие константы с API-ключами в wp-config.php добавлять не нужно. События безопасно ждут в локальной очереди отправки, пока не сохранены все три значения.
Затем проверьте канал от начала до конца:
- Нажмите Queue test event, затем Process now.
- В таблице очереди доставки событие должно отображаться как доставленное.
- В Tajo убедитесь, что событие
connection.testпришло на подключение WordPress.
Что отправляет плагин
Каждое событие представляет собой компактный конверт с минимумом персональных данных, подписанный по HMAC-SHA256. WordPress покидают только поля идентификации для взаимодействия (email, телефон, локальные идентификаторы) и ограниченные метаданные события, но никогда имена, почтовые адреса, IP-адреса, user agent, тексты комментариев, произвольные поля форм, примечания к заказам или платёжные данные.
События WooCommerce
| Хук | Событие |
|---|---|
woocommerce_created_customer / woocommerce_update_customer | customer.created / customer.updated |
woocommerce_new_product / woocommerce_update_product | product.created / product.updated |
woocommerce_add_to_cart, удаление позиции, применение и снятие купона | cart.updated (со сводкой корзины для сценариев брошенной корзины) |
woocommerce_cart_emptied | cart.emptied |
woocommerce_new_order / woocommerce_update_order | order.placed / order.updated |
woocommerce_order_status_changed | order.status_changed (+ order.fulfilled при завершении) |
woocommerce_payment_complete | order.paid |
woocommerce_order_refunded | refund.created |
| Обновления статуса WooCommerce Subscriptions | subscription.status_changed |
События заказов несут номер заказа, статус, валюту, суммы, позиции и готовые URL для отзыва и повторного заказа, чего достаточно для автоматизаций после покупки и возврата клиентов без дополнительного вызова API.
События WordPress
contact.created/contact.updated/contact.deletedдля аккаунтов пользователейcontent.published/content.updated/content.unpublishedдля публичного контентаcomment.created/comment.status_changedдля комментариев посетителей и отзывов о товарах (внутренние примечания к заказам WooCommerce, пингбеки и трекбеки никогда не отправляются)form.submittedдля успешных отправок Contact Form 7, WPForms, Gravity Forms и Fluent Forms: извлекаются только типизированные поля идентификации email и телефона и метаданные формы, а произвольные отправленные поля отбрасываются
Надёжность: очередь доставки
Плагин никогда не отправляет события в Tajo напрямую во время загрузки страницы. Каждое событие сначала записывается в локальную таблицу очереди отправки, а затем доставляется через WP-Cron с такими свойствами:
- Ограниченная экспоненциальная задержка повторов (до 8 попыток, с учётом
Retry-After) - Недоставленные события (dead letters) с повтором в один клик через Replay dead letters в админке
- Ограничения хранения, чтобы недоступный эндпоинт не мог накапливать персональные данные (доставленные: 7 дней; в очереди: 30 дней; недоставленные: 30 дней после последнего обновления)
- Идемпотентные идентификаторы событий, поэтому повторы и переотправки никогда не дублируются на принимающей стороне
Если ваш хостинг отключает WP-Cron (DISABLE_WP_CRON), вызывайте wp-cron.php из настоящего планировщика не реже одного раза в минуту.
Согласие никогда не выводится косвенно
Создание аккаунта, оформление заказа, покупка и обычные отправки форм не считаются маркетинговым согласием. Встроенные события несут пустой список согласий. Чтобы записать явное согласие (например, из отмеченного флажка подписки на рассылку), отправьте его через хук расширения:
do_action( 'tajo_engagement_emit', 'consent.updated', array( 'email' => $email ), array( 'policyVersion' => '2026-07' ), array( array( 'channel' => 'email', 'status' => 'opt_in', // or 'opt_out' 'purpose' => 'marketing', 'source' => 'newsletter_checkbox', 'evidence' => array( 'formId' => 'newsletter-footer', 'field' => 'marketing_email' ), ), ), gmdate( 'c' ));Тот же хук позволяет любому плагину или теме отправлять собственные события; всё проходит через один и тот же санитайзер, очередь отправки и подпись.
Шаг 3: импорт истории
События в реальном времени покрывают всё с момента установки. Для истории, которая предшествует плагину, подключение WooCommerce REST в Tajo импортирует существующих клиентов, заказы, товары, купоны, возвраты и отзывы, причём настраивается это целиком на стороне Tajo с помощью ключа WooCommerce REST API (WooCommerce → Settings → Advanced → REST API, право на чтение). Подробности смотрите в справочнике по коннектору WooCommerce.
Приватность и GDPR
- Плагин регистрируется в WordPress в разделах Tools → Export Personal Data и Tools → Erase Personal Data; сохранённые события очереди отправки для совпадающего email экспортируются или удаляются локально.
- Удаление и доставка используют общий fail-closed мьютекс, поэтому удаление никогда не сообщит о завершении, пока полезная нагрузка находится в процессе отправки.
- Локальное удаление затрагивает только очередь отправки WordPress, поэтому для данных на принимающей стороне отправьте соответствующий запрос в Tajo.
- Деактивация приостанавливает доставку, но сохраняет конфигурацию и события в очереди; удаление плагина безвозвратно убирает очередь отправки, настройки, секрет и расписания.
Совместимость
- HPOS: плагин объявляет совместимость с WooCommerce High-Performance Order Storage и использует только CRUD-объекты и публичные хуки.
- WooCommerce Subscriptions: изменения статуса подписок фиксируются, когда расширение активно.
- Multisite: удаление плагина очищает данные на каждом сайте сети.
Справочник по эксплуатации
Межсерверное обнаружение возможностей и управление очередью отправки доступны администраторам по аутентификации Application Password:
| Метод | Маршрут | Назначение |
|---|---|---|
GET | /wp-json/tajo/v1/capabilities | Версия плагина, обнаруженные адаптеры, перечень событий, состояние очереди отправки |
GET | /wp-json/tajo/v1/outbox | Счётчики очереди отправки (полезная нагрузка никогда не раскрывается) |
POST | /wp-json/tajo/v1/outbox/process | Немедленно обработать пакет |
POST | /wp-json/tajo/v1/outbox/replay | Повторить отправку недоставленных событий |
Устранение неполадок
| Симптом | Причина и решение |
|---|---|
| События остаются в статусе «Queued» | Эндпоинт, binding ID или секрет ещё не сохранены, доставка приостановлена, пока не настроены все три значения |
| События остаются в статусе «Retrying» | Эндпоинт Tajo недоступен с вашего хостинга или не работает WP-Cron. Проверьте колонку ошибок в таблице очереди отправки и настройку cron |
| Накапливаются недоставленные события | Неповторяемая ошибка (обычно неверный binding ID или секрет). Исправьте конфигурацию, затем нажмите Replay dead letters |
| «Enter a valid HTTPS Tajo webhook endpoint» | Эндпоинт должен использовать HTTPS и не содержать встроенных учётных данных |
| Тестовое событие доставлено, но в Tajo ничего нет | Проверьте, что вы вставили binding ID из того же рабочего пространства и подключения Tajo, которому принадлежит эндпоинт |
Дальнейшие шаги
- Справочник по коннектору WooCommerce: синхронизация по REST, детали подписи вебхуков, ключи конфигурации
- Синхронизация клиентов: сопоставление клиентов WooCommerce с вашей системой учёта
- Настройте автоматизации для брошенных корзин, после покупки и возврата клиентов в Tajo, используя события
cart.updated,order.placedиorder.fulfilled