Коннектор WooCommerce
Коннектор WooCommerce
Подключите магазин WooCommerce к Brevo через Tajo для полной синхронизации данных электронной коммерции. Используйте WooCommerce REST API для синхронизации клиентов, заказов, товаров и данных о купонах для таргетированных маркетинговых кампаний и автоматизированных рабочих процессов.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | WooCommerce (WordPress) |
| Категория | E-commerce |
| Сложность настройки | Средняя |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Клиенты, заказы, товары, купоны |
| Доступных скиллов | 10 |
Возможности
- Синхронизация клиентов, синхронизация данных клиентов в реальном времени с контактами Brevo
- Отслеживание заказов, полное отслеживание событий жизненного цикла заказов для постпокупочных потоков
- Синхронизация каталога товаров, синхронизация товаров и их вариантов для email-рекомендаций
- Управление купонами, синхронизация промокодов для рекламных кампаний
- Поддержка вебхуков, обновления в реальном времени через вебхуки WooCommerce
- Брошенные корзины, отслеживание и восстановление брошенных корзин
- Поддержка мультисайтов, подключение мультисайтовых установок WooCommerce на WordPress
- Пользовательские мета-поля, сопоставление пользовательских мета-данных WooCommerce с атрибутами Brevo
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Сайт на WordPress с установленным и активированным плагином WooCommerce
- WooCommerce REST API включён (Settings > Advanced > REST API)
- Сгенерированный Consumer Key и Consumer Secret
- Сайт должен использовать HTTPS для аутентификации API
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с API-учётными данными
Аутентификация
REST API Keys
WooCommerce использует пары Consumer Key и Consumer Secret для аутентификации. Генерируйте их в WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (HTTPS-сайты)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Аутентификация через строку запроса (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Уровни разрешений
| Разрешение | Доступ |
|---|---|
| Read | Только просмотр ресурсов |
| Write | Создание и редактирование ресурсов |
| Read/Write | Полный CRUD-доступ |
Конфигурация
Базовая настройка
connectors: woocommerce: enabled: true store_url: "https://yourstore.com" consumer_key: "ck_your_consumer_key" consumer_secret: "cs_your_consumer_secret" api_version: "wc/v3" verify_ssl: true
# Параметры синхронизации данных sync: customers: true orders: true products: true coupons: true
# Назначение листов Brevo lists: all_customers: 50 buyers: 51 abandoned_cart: 52Сопоставление полей клиентов
Сопоставьте поля клиентов WooCommerce с атрибутами Brevo:
customer_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME billing.phone: SMS billing.company: COMPANY billing.city: CITY billing.state: STATE billing.country: COUNTRY billing.postcode: ZIP
# Метрики электронной коммерции (вычисляемые) orders_count: ORDER_COUNT total_spent: TOTAL_SPENT date_created: SIGNUP_DATE
# Мета-поля meta_data.loyalty_points: LOYALTY_POINTS meta_data.preferred_category: PREF_CATEGORYКонфигурация вебхуков
Зарегистрируйте вебхуки в WooCommerce > Settings > Advanced > Webhooks:
webhooks: - topic: "customer.created" event: "customer_created" - topic: "customer.updated" event: "customer_updated" - topic: "order.created" event: "order_placed" - topic: "order.updated" event: "order_updated" - topic: "order.completed" event: "order_fulfilled" - topic: "order.refunded" event: "order_refunded" - topic: "coupon.created" event: "coupon_created" - topic: "product.created" event: "product_added" - topic: "product.updated" event: "product_updated"Эндпоинты API
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /wc/v3/customers | Список клиентов |
POST | /wc/v3/customers | Создание клиента |
GET | /wc/v3/customers/{id} | Получить клиента |
PUT | /wc/v3/customers/{id} | Обновить клиента |
GET | /wc/v3/orders | Список заказов |
POST | /wc/v3/orders | Создание заказа |
GET | /wc/v3/orders/{id} | Получить заказ |
GET | /wc/v3/products | Список товаров |
GET | /wc/v3/products/{id} | Получить товар |
GET | /wc/v3/products/{id}/variations | Список вариантов товара |
GET | /wc/v3/coupons | Список купонов |
GET | /wc/v3/reports/sales | Отчёты о продажах |
GET | /wc/v3/reports/top_sellers | Топ продаж |
POST | /wc/v3/webhooks | Создание вебхука |
Примеры кода
Инициализация коннектора WooCommerce
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Подключение магазина WooCommerceawait tajo.connectors.connect('woocommerce', { storeUrl: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET});Получение и синхронизация клиентов
// Получение клиентов через WooCommerce REST APIconst WooCommerce = require('@woocommerce/woocommerce-rest-api').default;
const api = new WooCommerce({ url: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET, version: 'wc/v3'});
// Список клиентов с пагинациейconst response = await api.get('customers', { per_page: 100, page: 1, orderby: 'registered_date', order: 'desc'});
const customers = response.data;// [{ id, email, first_name, last_name, billing, shipping, ... }]
// Информация о пагинации из заголовковconst totalPages = response.headers['x-wp-totalpages'];const totalItems = response.headers['x-wp-total'];Обработка событий вебхука
// Обработчик вебхуков WooCommerceapp.post('/webhooks/woocommerce', async (req, res) => { const topic = req.headers['x-wc-webhook-topic']; const signature = req.headers['x-wc-webhook-signature'];
// Проверка подписи вебхука const expectedSignature = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest('base64');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
// Пересылка в Tajo await tajo.connectors.handleWebhook('woocommerce', { topic, payload: req.body });
res.status(200).send('OK');});Пакетные операции
// Пакетное создание, обновление и удаление товаровconst batchResponse = await api.post('products/batch', { create: [ { name: 'New Product', type: 'simple', regular_price: '19.99' } ], update: [ { id: 123, regular_price: '24.99' } ], delete: [456]});Ограничения скорости
WooCommerce сам по себе не устанавливает ограничения API, но базовый WordPress-сервер и хостинг-провайдер могут устанавливать лимиты:
| Фактор | Типичный лимит | Детали |
|---|---|---|
| Общий хостинг | 50–100 запросов/мин | Зависит от хостинга |
| Управляемый WP-хостинг | 200–500 запросов/мин | WP Engine, Kinsta и др. |
| Self-hosted | Без жёсткого лимита | Ограничен ресурсами сервера |
| На страницу | Максимум 100 записей | По умолчанию 10 |
| Пакетные операции | 100 элементов/пакет | Создание, обновление или удаление |
Производительность сервера
Крупные магазины WooCommerce могут давать медленные ответы API. Используйте пагинацию, ограничивайте поля с помощью параметра _fields и планируйте массовые синхронизации в нерабочее время.
Устранение неполадок
| Проблема | Причина | Решение |
|---|---|---|
401 Unauthorized | Недействительные API-ключи | Перегенерируйте Consumer Key/Secret в настройках WooCommerce |
403 Forbidden | Недостаточно прав | Установите API-ключу уровень доступа Read/Write |
| Ошибки SSL-сертификата | Недействительный SSL на сайте | Установите действительный SSL; verify_ssl: false только для тестирования |
| Вебхуки не срабатывают | WP cron отключён | Включите WP-Cron или настройте серверный cron |
| Медленные ответы API | Большая база данных | Оптимизируйте базу данных WordPress, используйте параметр _fields |
| Отсутствующие пользовательские поля | Мета-данные не раскрыты | Используйте поле meta_data для доступа к пользовательским мета-данным |
| Проблемы с пагинацией | Стандартный размер страницы | Явно задайте параметр per_page (макс. 100) |
Лучшие практики
- Используйте вебхуки для синхронизации в реальном времени, настраивайте вебхуки WooCommerce вместо опроса API
- Верифицируйте подписи вебхуков, всегда валидируйте заголовок
X-WC-Webhook-Signature - Пагинируйте все list-запросы, используйте параметры
pageиper_page; проверяйте заголовокX-WP-TotalPages - Используйте параметр
_fields, запрашивайте только нужные поля для уменьшения размера ответа - Пакетные операции, используйте пакетные эндпоинты для массового создания/обновления/удаления (до 100 элементов)
- Планируйте крупные синхронизации, запускайте полные начальные синхронизации в нерабочее время
- Включайте HTTPS, WooCommerce API требует TLS для OAuth-аутентификации
Безопасность
- OAuth 1.0a, безопасная аутентификация через пары Consumer Key/Secret
- HMAC-подписи вебхуков, SHA-256 верификация подписи для входящих вебхуков
- Требуется HTTPS, API требует TLS-шифрования для аутентификации
- Ограничение прав, API-ключи можно настроить на Read, Write или Read/Write
- Безопасность WordPress, наследует обновления безопасности ядра WordPress
- Аспекты PCI, платёжные данные обрабатываются платёжными шлюзами WooCommerce, не раскрываются через API