Коннектор Klaviyo
Подключите Klaviyo к Brevo через Tajo для миграции или синхронизации маркетинговых данных между платформами. Синхронизируйте профили, события, списки, сегменты, потоки и данные кампаний для единой многоканальной маркетинговой стратегии.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Klaviyo |
| Категория | Marketing |
| Сложность настройки | Средняя |
| Официальная интеграция | Нет |
| Синхронизируемые данные | Профили, события, списки, сегменты, кампании |
| Доступных скиллов | 10 |
| Стандарт API | JSON:API |
Возможности
- Синхронизация профилей, двунаправленная синхронизация профилей клиентов между Klaviyo и Brevo
- Пересылка событий, пересылка отслеживаемых событий Klaviyo в Brevo для триггеров автоматизации
- Миграция списков, синхронизация списков Klaviyo в списки контактов Brevo
- Синхронизация сегментов, экспорт сегментов Klaviyo как списков или сегментов Brevo
- Экспорт данных потоков, получение данных об эффективности потоков для кросс-платформенной аналитики
- Синхронизация кампаний, координация кампаний между каналами Klaviyo и Brevo
- Синхронизация каталога, зеркалирование каталогов товаров между платформами
- Управление купонами, синхронизация промокодов и данных об их использовании
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Klaviyo с доступом к API
- Приватный API-ключ с необходимыми scope
- Публичный API-ключ Klaviyo (6-символьный company ID)
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с API-учётными данными
Аутентификация
Приватный API Key
Klaviyo использует приватные API-ключи с ограниченным доступом для серверной аутентификации. Укажите ключ в заголовке Authorization:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Scope API Key
Настройте scope при создании приватного ключа:
| Scope | Доступ | Описание |
|---|---|---|
profiles | Read/Full | Доступ к профилям контактов |
events | Read/Full | Доступ к отслеживаемым событиям |
lists | Read/Full | Доступ к спискам контактов |
segments | Read | Доступ к сегментам |
campaigns | Read | Доступ к данным кампаний |
metrics | Read | Доступ к определениям метрик |
flows | Read | Доступ к конфигурациям потоков |
catalogs | Read | Доступ к каталогам товаров |
Публичный API Key
Для клиентского трекинга используйте 6-символьный company ID:
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (партнёрские интеграции)
Klaviyo поддерживает OAuth для технических партнёров, обеспечивая повышенную безопасность и лимиты скорости:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"Конфигурация
Базовая настройка
connectors: klaviyo: enabled: true private_api_key: "your-klaviyo-private-key" public_api_key: "XXXXXX" api_revision: "2026-01-15"
# Параметры синхронизации данных sync: profiles: true events: true lists: true segments: true catalogs: false
# Назначение листов Brevo lists: all_contacts: 20 subscribers: 21 high_value: 22Сопоставление профилей
Сопоставьте свойства профилей Klaviyo с атрибутами контактов Brevo:
profile_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME phone_number: SMS city: CITY region: REGION country: COUNTRY zip: ZIP organization: COMPANY title: JOB_TITLE
# Пользовательские свойства lifetime_value: LTV total_orders: ORDER_COUNT last_order_date: LAST_ORDER_DATE preferred_channel: CHANNEL_PREFСопоставление событий
Сопоставление метрик Klaviyo с событиями Brevo:
event_mapping: "Placed Order": "order_completed" "Ordered Product": "product_purchased" "Started Checkout": "checkout_started" "Added to Cart": "cart_updated" "Viewed Product": "product_viewed" "Subscribed to List": "customer_subscribed" "Received Email": "email_received" "Opened Email": "email_opened" "Clicked Email": "email_clicked"Эндпоинты API
| Метод | Эндпоинт | Описание |
|---|---|---|
GET | /api/profiles/ | Список профилей |
POST | /api/profiles/ | Создание профиля |
PATCH | /api/profiles/{id}/ | Обновление профиля |
POST | /api/profile-merge/ | Объединение дублирующихся профилей |
GET | /api/events/ | Список событий |
POST | /api/events/ | Создание события |
GET | /api/lists/ | Список всех списков |
POST | /api/lists/{id}/relationships/profiles/ | Добавление профилей в список |
GET | /api/segments/ | Список сегментов |
GET | /api/campaigns/ | Список кампаний |
GET | /api/flows/ | Список потоков |
GET | /api/metrics/ | Список метрик |
POST | /api/metric-aggregates/ | Запрос агрегированных метрик |
GET | /api/catalog-items/ | Список элементов каталога |
Примеры кода
Инициализация коннектора Klaviyo
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Подключение аккаунта Klaviyoawait tajo.connectors.connect('klaviyo', { privateApiKey: process.env.KLAVIYO_PRIVATE_KEY, publicApiKey: process.env.KLAVIYO_PUBLIC_KEY});Синхронизация профилей в Brevo
// Получение профилей Klaviyo и синхронизация с Brevoconst response = await fetch('https://a.klaviyo.com/api/profiles/', { headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Accept': 'application/vnd.api+json' }});
const { data } = await response.json();
// Каждый профиль соответствует формату JSON:API// {// "type": "profile",// "id": "01ABCDEF",// "attributes": {// "email": "[email protected]",// "first_name": "Jane",// "last_name": "Kim",// "phone_number": "+15551234567",// "properties": { "lifetime_value": 450.00 }// }// }Создание события
// Трекинг события в Klaviyo (пересылается в Brevo через Tajo)await fetch('https://a.klaviyo.com/api/events/', { method: 'POST', headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Content-Type': 'application/vnd.api+json', 'Accept': 'application/vnd.api+json' }, body: JSON.stringify({ data: { type: 'event', attributes: { metric: { data: { type: 'metric', attributes: { name: 'Placed Order' } } }, profile: { }, properties: { OrderId: 'ORD-1234', Value: 89.99, Items: [ { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 } ] }, value: 89.99 } } })});Запрос агрегированных метрик
// Получение агрегированных данных метрик для отчётностиawait fetch('https://a.klaviyo.com/api/metric-aggregates/', { method: 'POST', headers: { 'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`, 'revision': '2026-01-15', 'Content-Type': 'application/vnd.api+json' }, body: JSON.stringify({ data: { type: 'metric-aggregate', attributes: { metric_id: 'METRIC_ID', measurements: ['count', 'sum_value'], interval: 'day', filter: ['greater-or-equal(datetime,2024-01-01)', 'less-than(datetime,2024-02-01)'] } } })});Ограничения скорости
| Аутентификация | Burst-лимит | Устойчивый лимит |
|---|---|---|
| Приватный API Key | 75 запросов/сек | 700 запросов/мин |
| OAuth | 150 запросов/сек | 1 500 запросов/мин |
| Client API | 100 запросов/сек | Н/Д |
| Bulk-операции | 10 запросов/сек | 100 запросов/мин |
Обязательный заголовок revision
Все запросы к Klaviyo API требуют заголовка revision с указанием допустимой даты версии API (например, 2026-01-15). Запросы без этого заголовка будут отклонены.
Устранение неполадок
| Проблема | Причина | Решение |
|---|---|---|
400 Bad Request | Недействительный или отсутствующий API-ключ | Проверьте правильность приватного API-ключа |
403 Forbidden | Недостаточно scope | Проверьте соответствие scope API-ключа необходимым разрешениям |
Отсутствует заголовок revision | Заголовок не установлен | Добавьте revision: 2026-01-15 ко всем запросам |
| Профиль не найден | Неверный идентификатор | Используйте ID профиля Klaviyo, а не email, для поиска |
| События не синхронизируются | Неверное имя метрики | Используйте точные имена метрик, как определены в Klaviyo |
429 Too Many Requests | Превышен лимит скорости | Реализуйте экспоненциальную задержку; рассмотрите OAuth для более высоких лимитов |
| Ошибки формата JSON:API | Неверный тип контента | Используйте application/vnd.api+json в заголовках Content-Type и Accept |
Лучшие практики
- Используйте формат JSON:API, следуйте спецификации JSON:API для всех полезных нагрузок запросов и ответов
- Устанавливайте заголовок revision, всегда включайте заголовок
revisionс актуальной датой версии API - Используйте sparse fieldsets, запрашивайте только нужные поля с
?fields[profile]=email,first_nameдля уменьшения полезной нагрузки - Используйте relationships, применяйте параметр
includeJSON:API для получения связанных ресурсов в одном запросе - Используйте cursor pagination, навигируйте по большим наборам результатов с параметром
page[cursor] - Реализуйте bulk-операции, используйте bulk-эндпоинты для пакетного импорта профилей и создания событий
- Используйте OAuth для более высоких лимитов, аутентификация через OAuth обеспечивает в 2 раза более высокие лимиты скорости по сравнению с приватными ключами
Безопасность
- Scope приватного API Key, гранулярный контроль доступа Read/Full на тип ресурса
- Поддержка OAuth, безопасная аутентификация на основе токенов для партнёрских интеграций
- Изоляция публичного ключа, клиентские ключи ограничены операциями создания
- TLS 1.2+, все API-коммуникации зашифрованы при передаче
- SOC 2 Type II, Klaviyo сертифицирован по SOC 2 Type II
- Соответствие GDPR, Data Privacy API для запросов на удаление профилей