Mixpanel 连接器

通过 Tajo 将 Mixpanel 连接到 Brevo,将产品分析与营销自动化相结合。同步用户档案、行为事件和群组,基于真实产品使用情况创建数据驱动的活动。

概览

属性
平台Mixpanel
类别分析(自定义)
设置复杂度中等
官方集成
同步数据事件、档案、群组、分组
可用技能7

功能

  • 事件摄取 - 通过 Mixpanel 的摄取 API 将追踪事件导入 Brevo 工作流
  • 用户档案同步 - 将 Mixpanel 用户档案属性映射到 Brevo 联系人属性
  • 群组导出 - 将 Mixpanel 群组同步到 Brevo 联系人列表,用于精准活动
  • 群体分析 - 同步群体级数据,用于 B2B 基于账户的营销
  • 身份管理 - 利用 Mixpanel 的身份合并实现统一客户档案
  • JQL 查询 - 运行自定义 JQL 查询,为 Brevo 提取特定数据集
  • 查找表 - 从 Mixpanel 查找表同步富化数据

前提条件

开始之前,请确保您已具备:

  1. 已创建项目的 Mixpanel 账户
  2. 用于客户端追踪的 Mixpanel 项目令牌
  3. 具有适当权限的服务账户,用于服务器端 API 访问
  4. 具有 API 访问权限的 Brevo 账户
  5. 具有 API 凭据的 Tajo 账户

认证

服务账户(推荐)

Mixpanel 推荐使用服务账户进行 API 认证。服务账户使用 HTTP Basic Auth,以服务账户用户名和密码(服务账户密钥)进行认证。

Terminal window
# Service Account authentication
curl https://mixpanel.com/api/app/me \
-u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"

项目令牌

项目令牌用于客户端事件追踪,可安全地包含在客户端代码中:

// Client-side initialization
mixpanel.init("YOUR_PROJECT_TOKEN");

OAuth(合作伙伴集成)

对于访问多个项目的应用集成:

Terminal window
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导入事件(摄取 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
});
// Connect Mixpanel project
await 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
});

通过摄取 API 导入事件

// Import events to Mixpanel (automatically forwarded to 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

// Export a Mixpanel cohort and sync to a Brevo list
const 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
// }

设置用户档案属性

// Set user properties via the Engage API
const 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: {
$email: "[email protected]",
$first_name: "Jane",
$last_name: "Kim",
plan: "premium",
total_orders: 12,
lifetime_value: 1250.00
}
}])
});

速率限制

API限制详情
摄取 API2 GB/分钟每项目
追踪 API无硬限制尽力投递
Engage API每批 2,000 次更新每项目最多 2 GB/分钟
查询 API60 请求/小时每项目(服务账户)
导出 API60 请求/小时每次查询最多 100 天
JQL API60 请求/小时每项目
群组导出60 请求/小时每项目

事件去重

Mixpanel 使用 $insert_id 属性对事件进行去重。重试失败的导入时,始终包含唯一的 $insert_id 以防止重复事件。

故障排除

问题原因解决方案
事件未出现项目令牌错误验证令牌与目标项目匹配
档案属性缺失使用了错误的 API档案属性使用 /engage#$set,不要用 /track
群组导出失败权限不足确保服务账户具有管理员或分析师角色
重复事件缺少 $insert_id每个事件都包含唯一的 $insert_id
402 Payment Required超出数据限制检查 Mixpanel 计划限制并按需升级
欧盟数据未路由数据驻留地设置错误欧盟项目使用 api-eu.mixpanel.com
身份合并问题distinct_id 不正确遵循 Mixpanel 的身份管理最佳实践

最佳实践

  1. 使用服务账户 - 优先使用服务账户而非项目密钥进行服务器端认证
  2. 包含 $insert_id - 始终设置唯一的插入 ID 以进行事件去重
  3. 批量档案更新 - 每次请求发送最多 2,000 个档案更新以提高效率
  4. 使用欧盟端点 - 对于欧盟数据驻留,所有 API 调用使用 api-eu.mixpanel.com
  5. 按计划同步群组 - 设置每日或每周的群组同步,而非持续轮询
  6. 映射保留属性 - 使用 Mixpanel 的保留属性($email$first_name)存储档案数据
  7. 监控摄取 - 使用 Mixpanel 的事件页面验证事件是否正确接收

安全

  • 仅 HTTPS - 所有 API 通信需要 TLS 加密
  • 服务账户隔离 - 每个项目基于角色的权限范围访问
  • 事件去重 - 通过 $insert_id 内置去重防止数据完整性问题
  • SOC 2 Type II - Mixpanel 通过 SOC 2 Type II 认证
  • GDPR/CCPA - 通过 GDPR API 支持用户数据删除
  • 欧盟数据驻留 - 提供欧盟数据中心用于欧洲合规

相关资源

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI 助手

你好!关于文档有任何问题都可以问我。