Коннектор Mixpanel
Подключите Mixpanel к Brevo через Tajo, чтобы объединить продуктовую аналитику с маркетинговой автоматизацией. Синхронизируйте профили пользователей, поведенческие события и когорты для создания data-driven кампаний на основе реального использования продукта.
Обзор
| Свойство | Значение |
|---|---|
| Платформа | Mixpanel |
| Категория | Аналитика (Custom) |
| Сложность настройки | Средняя |
| Официальная интеграция | Нет |
| Синхронизируемые данные | События, профили, когорты, группы |
| Доступных скиллов | 7 |
Возможности
- Приём событий, импорт track-событий через Ingestion API Mixpanel в рабочие процессы Brevo
- Синхронизация профилей пользователей, сопоставление свойств профилей пользователей Mixpanel с атрибутами контактов Brevo
- Экспорт когорт, синхронизация когорт Mixpanel с листами контактов Brevo для целевых кампаний
- Групповая аналитика, синхронизация данных на уровне групп для account-based маркетинга в B2B
- Управление идентичностью, использование объединения идентичностей Mixpanel для единых профилей клиентов
- JQL-запросы, выполнение пользовательских JQL-запросов для извлечения конкретных наборов данных для Brevo
- Таблицы поиска, синхронизация данных обогащения из таблиц поиска Mixpanel
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Аккаунт Mixpanel с созданным проектом
- Project Token Mixpanel для отслеживания на стороне клиента
- Service Account с соответствующими правами для серверного доступа к API
- Аккаунт Brevo с доступом к API
- Аккаунт Tajo с API-учётными данными
Аутентификация
Service Accounts (рекомендуется)
Mixpanel рекомендует использовать Service Accounts для аутентификации через API. Service accounts используют HTTP Basic Auth с именем пользователя и паролем service account.
# Аутентификация Service Accountcurl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"Project Token
Project Token используется для отслеживания событий на стороне клиента и безопасен для включения в клиентский код:
// Инициализация на стороне клиентаmixpanel.init("YOUR_PROJECT_TOKEN");OAuth (для партнёрских интеграций)
Для интеграций приложений, получающих доступ к нескольким проектам:
curl https://mixpanel.com/api/2.0/engage \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN"Конфигурация
Базовая настройка
connectors: mixpanel: enabled: true project_token: "your-project-token" service_account: username: "your-service-account-username" secret: "your-service-account-secret" project_id: "12345" data_residency: "US" # or "EU"
# Data sync options sync: events: true profiles: true cohorts: true groups: false
# Brevo list assignment lists: all_users: 15 engaged_users: 16 at_risk: 17Сопоставление событий
Сопоставьте события Mixpanel с типами событий Brevo:
event_mapping: # Mixpanel event -> Brevo event "Purchase": "order_completed" "Sign Up": "customer_created" "Add to Cart": "cart_updated" "Page View": "page_viewed" "$experiment_started": "experiment_started"
# Custom events "Feature Activated": "feature_used" "Subscription Renewed": "subscription_renewed"Сопоставление свойств профиля
Сопоставьте свойства пользователей Mixpanel с атрибутами контактов Brevo:
property_mapping: $email: email $first_name: FIRSTNAME $last_name: LASTNAME $phone: SMS $city: CITY $region: REGION $country_code: COUNTRY plan: PLAN_TYPE company: COMPANY signup_date: SIGNUP_DATE total_revenue: LTVЭндпоинты API
| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /import | Импорт событий (Ingestion API) |
POST | /track | Отслеживание событий (на стороне клиента) |
POST | /engage#$set | Установить свойства профиля пользователя |
POST | /engage#$set_once | Установить свойства только если ещё не заданы |
POST | /engage#$delete | Удалить профиль пользователя |
POST | /engage#$union | Объединение со свойствами-списками |
POST | /groups | Установить свойства группового профиля |
GET | /export | Экспорт необработанных данных событий |
POST | /cohorts/list | Список сохранённых когорт |
POST | /engage/query | Запрос профилей пользователей |
POST | /jql | Выполнить пользовательские JQL-запросы |
GET | /segmentation | Запрос отчётов сегментации |
GET | /retention | Запрос отчётов по удержанию |
GET | /funnels | Запрос отчётов по воронкам |
Примеры кода
Инициализация коннектора Mixpanel
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Подключение проекта Mixpanelawait tajo.connectors.connect('mixpanel', { projectToken: process.env.MIXPANEL_TOKEN, serviceAccountUser: process.env.MIXPANEL_SA_USER, serviceAccountSecret: process.env.MIXPANEL_SA_SECRET, projectId: process.env.MIXPANEL_PROJECT_ID});Импорт событий через Ingestion API
// Импорт событий в Mixpanel (автоматически пересылается в Brevo)const response = await fetch('https://api.mixpanel.com/import', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + btoa( `${process.env.MIXPANEL_SA_USER}:${process.env.MIXPANEL_SA_SECRET}` ) }, body: JSON.stringify([ { event: "Purchase", properties: { distinct_id: "user_123", $insert_id: "evt_abc123", time: Math.floor(Date.now() / 1000), revenue: 89.99, product_id: "SKU-001", product_name: "Widget Pro" } } ])});
// Expected response: { "code": 200, "status": "OK", "num_records_imported": 1 }Синхронизация когорты с Brevo
// Экспорт когорты Mixpanel и синхронизация с листом Brevoconst cohort = await tajo.connectors.syncCohort('mixpanel', { cohortId: 12345, targetList: 16, syncMode: 'mirror'});
console.log(cohort);// {// cohortName: "Engaged Users (Last 7 Days)",// membersCount: 3200,// syncedToBrevo: 3200,// listId: 16// }Установка свойств профиля пользователя
// Установка свойств пользователя через Engage APIconst response = await fetch('https://api.mixpanel.com/engage#$set', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify([{ $token: process.env.MIXPANEL_TOKEN, $distinct_id: "user_123", $set: { $first_name: "Jane", $last_name: "Kim", plan: "premium", total_orders: 12, lifetime_value: 1250.00 } }])});Ограничения скорости
| API | Лимит | Детали |
|---|---|---|
| Ingestion API | 2 ГБ/мин | На проект |
| Track API | Без жёсткого лимита | Доставка по мере возможности |
| Engage API | 2 000 обновлений/пакет | Макс. 2 ГБ/мин на проект |
| Query API | 60 запросов/час | На проект (Service Account) |
| Export API | 60 запросов/час | Макс. 100 дней на запрос |
| JQL API | 60 запросов/час | На проект |
| Cohort Export | 60 запросов/час | На проект |
Дедупликация событий
Mixpanel дедублицирует события с помощью свойства $insert_id. Всегда включайте уникальный $insert_id, чтобы предотвратить дублирование событий при повторных попытках импорта.
Устранение неполадок
| Проблема | Причина | Решение |
|---|---|---|
| События не отображаются | Неверный project token | Проверьте, что токен соответствует целевому проекту |
| Отсутствуют свойства профиля | Использование неверного API | Используйте /engage#$set для свойств профиля, а не /track |
| Экспорт когорты завершается ошибкой | Недостаточно прав | Убедитесь, что Service Account имеет роль Admin или Analyst |
| Дублирование событий | Отсутствует $insert_id | Включайте уникальный $insert_id в каждое событие |
| 402 Payment Required | Превышены лимиты данных | Проверьте лимиты плана Mixpanel и обновитесь при необходимости |
| Данные ЕС не маршрутизируются | Неверный регион данных | Используйте api-eu.mixpanel.com для проектов ЕС |
| Проблемы с объединением идентичностей | Неверный distinct_id | Следуйте рекомендациям Mixpanel по управлению идентичностями |
Лучшие практики
- Используйте Service Accounts, предпочитайте Service Accounts вместо Project Secret для серверной аутентификации
- Включайте
$insert_id, всегда задавайте уникальный insert ID для дедупликации событий - Пакетные обновления профилей, отправляйте до 2 000 обновлений профилей за запрос для эффективности
- Используйте эндпоинты ЕС, для данных с резидентностью в ЕС используйте
api-eu.mixpanel.comдля всех вызовов API - Синхронизируйте когорты по расписанию, настройте ежедневную или еженедельную синхронизацию когорт вместо непрерывного опроса
- Используйте зарезервированные свойства, используйте зарезервированные свойства Mixpanel (
$email,$first_name) для данных профиля - Контролируйте приём данных, используйте страницу Events в Mixpanel для проверки получения событий
Безопасность
- Только HTTPS, все API-коммуникации требуют TLS-шифрования
- Изоляция Service Account, доступ ограничен проектом с правами на основе ролей
- Дедупликация событий, встроенная дедупликация через
$insert_idпредотвращает проблемы целостности данных - SOC 2 Type II, Mixpanel сертифицирован по SOC 2 Type II
- GDPR/CCPA, поддерживает удаление данных пользователей через GDPR API
- Резидентность данных в ЕС, доступен дата-центр в ЕС для соответствия европейским требованиям