Коннектор Iterable
Подключите платформу growth-маркетинга Iterable к Brevo для единого вовлечения клиентов, координации кросс-канальных кампаний и консолидированной аналитики по маркетинговым инструментам.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Iterable |
| Категория | Marketing |
| Сложность настройки | Средняя |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Пользователи, события, кампании, каталоги |
| Тип API | REST API |
| Аутентификация | API Key |
| Базовый URL | https://api.iterable.com/api/ |
Возможности
- Синхронизация профилей пользователей, двунаправленная синхронизация данных пользователей с контактами Brevo
- Аналитика кампаний, синхронизация метрик отправки, открытий и кликов кампаний для единой отчётности
- Данные экспериментов, отслеживание результатов A/B-тестов и выигрышных вариантов
- Синхронизация каталога, синхронизация каталогов товаров и контента между платформами
- События рабочих процессов, пересылка событий триггеров и завершений рабочих процессов в Brevo
- Синхронизация предпочтений каналов, репликация коммуникационных предпочтений пользователей в Brevo
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Iterable с доступом к API
- API-ключ Iterable с необходимыми разрешениями
- ID вашего проекта Iterable
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с активной подпиской
Аутентификация
Iterable использует аутентификацию по API-ключу, передаваемому в заголовке запроса.
Создание API Key
- Войдите в дашборд Iterable
- Перейдите в Integrations > API Keys
- Нажмите New API Key
- Назовите его “Tajo Integration”
- Выберите тип ключа Server-side
- Предоставьте следующие разрешения:
Users: Read/WriteEvents: Read/WriteCampaigns: ReadLists: Read/WriteCatalogs: ReadExperiments: ReadWorkflows: ReadTemplates: ReadChannels: ReadMessage Types: ReadТип ключа имеет значение
Всегда используйте Server-side API-ключ для интеграции с Tajo. Мобильные и JavaScript-ключи имеют ограниченные разрешения и не могут получить доступ ко всем необходимым эндпоинтам.
Подключение к Tajo
tajo connectors install iterable \ --api-key $ITERABLE_API_KEYКонфигурация
Базовая настройка
connectors: iterable: enabled: true
sync: users: true events: true campaigns: true catalogs: true experiments: true
lists: all_users: 16 engaged_users: 17 inactive_users: 18Сопоставление полей
Сопоставьте поля пользователей Iterable с атрибутами контактов Brevo:
field_mapping: # Стандартные поля userId: ITERABLE_ID email: email firstName: FIRSTNAME lastName: LASTNAME phoneNumber: SMS
# Данные вовлечённости signupDate: SIGNUP_DATE totalPurchases: TOTAL_PURCHASES lastPurchaseDate: LAST_PURCHASE
# Пользовательские поля plan_name: PLAN_NAME company_size: COMPANY_SIZE preferred_channel: PREFERRED_CHANNEL lifecycle_stage: LIFECYCLE_STAGEКонфигурация событий
event_mapping: # Событие Iterable -> Событие Brevo purchase: ORDER_PLACED addToCart: CART_UPDATED pageView: PAGE_VIEWED appOpen: APP_OPENED pushOpen: PUSH_ENGAGEDЭндпоинты API
Tajo интегрируется со следующими эндпоинтами Iterable API:
| Эндпоинт | Метод | Назначение |
|---|---|---|
/users/update | POST | Обновление профилей пользователей |
/users/{email} | GET | Получить пользователя по email |
/users/bulkUpdate | POST | Пакетное обновление пользователей |
/events/track | POST | Трекинг пользовательских событий |
/events/trackBulk | POST | Пакетный трекинг событий |
/campaigns | GET | Список всех кампаний |
/campaigns/metrics | GET | Данные об эффективности кампаний |
/experiments/metrics | GET | Результаты экспериментов |
/lists | GET | Список всех пользовательских списков |
/lists/subscribe | POST | Добавление пользователей в список |
/lists/unsubscribe | POST | Удаление пользователей из списка |
/catalogs/{catalogName}/items | GET | Получение элементов каталога |
/channels | GET | Список каналов рассылок |
/export/data.json | GET | Экспорт сырых данных событий |
Примеры кода
Инициализация коннектора
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('iterable', { apiKey: process.env.ITERABLE_API_KEY});Синхронизация пользователей
// Инкрементальная синхронизация пользователей Iterable в Brevoawait tajo.connectors.sync('iterable', { type: 'incremental', resources: ['users'], since: '2024-01-01', batchSize: 50});
const status = await tajo.connectors.status('iterable');console.log(status);// {// connected: true,// lastSync: '2024-03-15T09:45:00Z',// usersCount: 58700,// campaignsTracked: 42,// eventsProcessed: 210000// }Трекинг событий
// Пересылка событий Iterable в Brevoawait tajo.connectors.handleEvent('iterable', { type: 'custom_event', payload: { eventName: 'subscription_upgraded', dataFields: { previousPlan: 'starter', newPlan: 'pro', mrr: 99.00 } }});Обработчик вебхуков
// Обработка системных вебхуков Iterableapp.post('/webhooks/iterable', async (req, res) => { const event = req.body;
await tajo.connectors.handleWebhook('iterable', { type: event.eventName, payload: event });
res.status(200).send('OK');});Ограничения скорости
Iterable устанавливает ограничения скорости в зависимости от плана:
| План | Лимит | Лимит для bulk-эндпоинтов |
|---|---|---|
| Growth | 500 запросов/сек | 500 запросов/сек |
| Enterprise | Индивидуальный | Индивидуальный |
Ограничения для конкретных эндпоинтов:
| Эндпоинт | Лимит |
|---|---|
/users/update | 500 запр/сек |
/users/bulkUpdate | 500 запр/сек (1 000 пользователей в запросе) |
/events/track | 500 запр/сек |
/events/trackBulk | 500 запр/сек (8 000 событий в запросе) |
/export/data.json | 4 параллельных запроса |
Bulk-эндпоинты
Tajo автоматически группирует обновления пользователей (до 1 000 в вызове) и трекинг событий (до 8 000 в вызове) для максимальной пропускной способности в пределах лимитов.
Устранение неполадок
Частые проблемы
| Проблема | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Недействительный API-ключ | Проверьте ключ в Iterable > Integrations > API Keys |
| Пользователи не синхронизируются | Несоответствие типа ключа | Убедитесь, что используется Server-side API-ключ |
| Отсутствуют данные кампании | Недостаточно разрешений | Добавьте разрешение Campaigns Read к API-ключу |
| Таймаут экспорта | Большой объём данных | Используйте фильтры диапазона дат для уменьшения объёма экспорта |
| Дублирующиеся пользователи | Несогласованные идентификаторы | Последовательно используйте email как основной идентификатор |
Режим отладки
connectors: iterable: debug: true log_level: verbose log_api_calls: trueПроверка подключения
tajo connectors test iterable# ✓ API connection successful# ✓ User data accessible# ✓ Campaign list readable# ✓ Event tracking operational# ✓ List management availableЛучшие практики
- Используйте bulk-эндпоинты, всегда предпочитайте
bulkUpdateиtrackBulkдля больших объёмов данных - Дедуплицируйте по email, используйте email как согласованный идентификатор в Iterable и Brevo
- Синхронизируйте инкрементально, используйте диапазоны дат во избежание повторной обработки исторических данных
- Маппируйте предпочтения каналов, синхронизируйте статусы подписки для соблюдения требований
- Мониторьте задания экспорта, крупные экспорты могут занимать время; настройте опрос статуса
- Тестируйте на не-продакшн проекте, проверяйте маппинги перед синхронизацией продакшн-данных
Безопасность
- Аутентификация по API Key, Server-side ключи с гранулярными разрешениями
- Только HTTPS, все API-коммуникации зашифрованы через TLS 1.2+
- Ротация ключей, поддержка нескольких активных API-ключей во время ротации
- Зашифрованное хранение, API-учётные данные зашифрованы при хранении в Tajo
- JWT-подписи вебхуков, полезные нагрузки вебхуков подписаны JWT для верификации