Коннектор Customer.io
Подключите платформу рассылок Customer.io к Brevo для единых данных о клиентах, кросс-платформенной координации кампаний и консолидированной аналитики вовлечённости.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Customer.io |
| Категория | Marketing |
| Сложность настройки | Средняя |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Пользователи, события, кампании, сегменты |
| Используемые API | Track API, App API, Pipelines API |
| Аутентификация | Site ID + API Key / App API Key |
| Базовые URL | track.customer.io, api.customer.io |
Возможности
- Синхронизация пользователей, двунаправленная синхронизация профилей клиентов с контактами Brevo
- Пересылка событий, трекинг поведенческих событий и пересылка в Brevo для триггеров автоматизации
- Аналитика кампаний, синхронизация метрик эффективности кампаний для единой отчётности
- Данные рабочих процессов, отражение состояний рабочих процессов Customer.io в атрибутах контактов Brevo
- Репликация сегментов, репликация сегментов Customer.io как списков Brevo
- Синхронизация объектов, синхронизация не-пользовательских объектов и данных о связях
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Customer.io с доступом к API
- Site ID и Track API Key (в Settings > API Credentials)
- App API Key для чтения данных кампаний и сегментов
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с активной подпиской
Аутентификация
Customer.io использует два отдельных API с разными методами аутентификации:
Track API (поведенческие данные)
Используется для отправки пользователей, событий и данных устройств. Аутентификация через Site ID и API Key по Basic Auth.
# Basic Auth: Site ID как имя пользователя, API Key как парольcurl -X POST https://track.customer.io/api/v1/customers/user123 \ -u "$SITE_ID:$API_KEY" \ -H "Content-Type: application/json" \App API (данные для чтения)
Используется для получения кампаний, сегментов и данных клиентов. Аутентификация через Bearer-токен.
curl -X GET https://api.customer.io/v1/campaigns \ -H "Authorization: Bearer $APP_API_KEY"Разделение API Keys
Track API Key и App API Key, это разные учётные данные. Track API Key используется для записи данных, а App API Key, для чтения. Оба необходимы для полной интеграции с Tajo.
Подключение к Tajo
tajo connectors install customerio \ --site-id $CIO_SITE_ID \ --track-api-key $CIO_TRACK_API_KEY \ --app-api-key $CIO_APP_API_KEYКонфигурация
Базовая настройка
connectors: customerio: enabled: true region: "us" # или "eu" для дата-центра в ЕС
sync: people: true events: true campaigns: true segments: true objects: false
lists: all_contacts: 12 active_subscribers: 13 churned: 14Сопоставление полей
Сопоставьте атрибуты пользователей Customer.io с атрибутами контактов Brevo:
field_mapping: # Стандартные поля id: CIO_ID email: email first_name: FIRSTNAME last_name: LASTNAME phone: SMS
# Метрики вовлечённости created_at: SIGNUP_DATE last_activity: LAST_ACTIVE plan: PLAN_NAME
# Пользовательские атрибуты company: COMPANY role: JOB_TITLE mrr: MONTHLY_REVENUE lifecycle_stage: LIFECYCLE_STAGEСопоставление событий
event_mapping: # Событие Customer.io -> Событие Brevo purchase_completed: ORDER_PLACED subscription_started: SUBSCRIPTION_START feature_activated: FEATURE_USED support_ticket_opened: SUPPORT_REQUESTЭндпоинты API
Tajo интегрируется со следующими эндпоинтами Customer.io API:
| Эндпоинт | Метод | API | Назначение |
|---|---|---|---|
/api/v1/customers/{id} | PUT | Track | Создание или обновление пользователя |
/api/v1/customers/{id}/events | POST | Track | Трекинг события пользователя |
/api/v1/events | POST | Track | Трекинг анонимных событий |
/api/v2/entity | POST | Track | Создание или обновление пользователей/объектов (Pipelines) |
/v1/campaigns | GET | App | Список кампаний |
/v1/campaigns/{id}/metrics | GET | App | Метрики эффективности кампании |
/v1/segments | GET | App | Список сегментов |
/v1/segments/{id}/membership | GET | App | Участники сегмента |
/v1/customers/{id}/attributes | GET | App | Атрибуты клиента |
/v1/customers/{id}/activities | GET | App | Лог активности клиента |
Примеры кода
Инициализация коннектора
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('customerio', { siteId: process.env.CIO_SITE_ID, trackApiKey: process.env.CIO_TRACK_API_KEY, appApiKey: process.env.CIO_APP_API_KEY, region: 'us'});Синхронизация пользователей в Brevo
// Инкрементальная синхронизация пользователей Customer.ioawait tajo.connectors.sync('customerio', { type: 'incremental', resources: ['people'], since: '2024-01-01', batchSize: 100});
const status = await tajo.connectors.status('customerio');console.log(status);// {// connected: true,// lastSync: '2024-03-15T14:20:00Z',// peopleCount: 32500,// campaignsTracked: 18,// eventsProcessed: 87000// }Пересылка событий
// Пересылка событий из reporting webhook Customer.io в Brevoapp.post('/webhooks/customerio', async (req, res) => { const events = req.body;
for (const event of events) { await tajo.connectors.handleEvent('customerio', { type: event.metric, payload: { customerId: event.data.customer_id, campaignId: event.data.campaign_id, timestamp: event.timestamp } }); }
res.status(200).send('OK');});Экспорт сегмента
const result = await tajo.connectors.exportSegment('customerio', { segmentId: 42, targetList: 13, includeAttributes: ['email', 'first_name', 'last_name', 'plan']});
console.log(`Exported ${result.count} people to Brevo list 13`);Ограничения скорости
Customer.io устанавливает разные ограничения скорости для каждого API:
| API | Лимит | Примечания |
|---|---|---|
| Track API | ~100 запросов/сек | На рабочее пространство |
| App API | 10 запросов/сек | На API-ключ |
| Pipelines API | 100 запросов/сек | Рекомендуется для массовых данных |
| Batch endpoint | 1 000 пользователей в запросе | Максимум 500 КБ |
Используйте batch-эндпоинты
Для крупных синхронизаций Tajo использует batch-эндпоинт Customer.io для отправки до 1 000 пользователей в запросе, что значительно снижает объём API-вызовов.
Устранение неполадок
Частые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Недействительный Site ID или API-ключ | Проверьте учётные данные в Customer.io Settings > API |
| Пользователи не синхронизируются | Отсутствует идентификатор | Убедитесь, что у каждого пользователя есть id или email |
| События не отслеживаются | Неверный тип API-ключа | Используйте Track API Key для событий, а не App API Key |
| Нет доступа к данным ЕС | Неверный регион | Установите регион eu для рабочих пространств ЕС |
| Ошибки лимита скорости | Слишком много вызовов App API | Уменьшите частоту опроса данных кампаний |
Режим отладки
connectors: customerio: debug: true log_level: verbose log_api_calls: trueПроверка подключения
tajo connectors test customerio# ✓ Track API connection successful# ✓ App API connection successful# ✓ People accessible# ✓ Campaigns readable# ✓ Segments listableЛучшие практики
- Используйте Pipelines API для массовых данных, новый Pipelines API оптимизирован для высокообъёмной загрузки
- Настройте reporting webhooks, пересылайте события email Customer.io в Tajo в реальном времени
- Маппируйте этапы жизненного цикла, синхронизируйте членство в сегментах Customer.io с атрибутами Brevo
- Используйте согласованные идентификаторы, согласуйте поля
idв Customer.io и Brevo - Синхронизируйте инкрементально, избегайте полных экспортов; используйте временные метки
last_activity - Мониторьте доставку вебхуков, настройте оповещения о неудачных доставках
Безопасность
- Basic Auth, аутентификация Track API через Site ID и API Key
- Bearer-токен, App API использует токены OAuth-стиля
- Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
- Региональные дата-центры, опция дата-центра ЕС для соответствия GDPR
- Зашифрованное хранение, все учётные данные зашифрованы при хранении в Tajo
- Подписи вебхуков, верификация полезных нагрузок вебхуков с помощью HMAC-подписей