Mixpanel コネクタ
Tajo を介して Mixpanel を Brevo に接続し、製品分析とマーケティング自動化をつなぎます。ユーザープロファイル、行動イベント、コホートを同期して、実際の製品利用状況に基づくデータ駆動型キャンペーンを作成します。
概要
| プロパティ | 値 |
|---|---|
| プラットフォーム | Mixpanel |
| カテゴリ | 分析(カスタム) |
| セットアップの複雑さ | 中 |
| 公式統合 | いいえ |
| 同期データ | イベント、プロファイル、コホート、グループ |
| 利用可能なスキル | 7 |
機能
- イベント取り込み - Mixpanel の Ingestion API を介して track イベントを Brevo ワークフローにインポート
- ユーザープロファイル同期 - Mixpanel のユーザープロファイルプロパティを Brevo 連絡先属性にマッピング
- コホートエクスポート - ターゲットキャンペーン用に Mixpanel コホートを Brevo 連絡先リストに同期
- グループ分析 - B2B アカウントベースマーケティング用のグループレベルデータを同期
- ID 管理 - 統合された顧客プロファイルのために Mixpanel の ID マージを活用
- JQL クエリ - Brevo 用の特定のデータセットを抽出するカスタム JQL クエリを実行
- ルックアップテーブル - Mixpanel ルックアップテーブルからエンリッチメントデータを同期
前提条件
開始する前に、以下を準備してください。
- プロジェクトを作成済みの Mixpanel アカウント
- クライアントサイドトラッキング用の Mixpanel プロジェクトトークン
- サーバーサイド API アクセスのための適切な権限を持つサービスアカウント
- API アクセス可能な Brevo アカウント
- API 認証情報を持つ Tajo アカウント
認証
サービスアカウント(推奨)
Mixpanel は API 認証にサービスアカウントの使用を推奨しています。サービスアカウントは HTTP Basic Auth をユーザー名(サービスアカウントのユーザー名)とパスワード(サービスアカウントのシークレット)で使用します。
# サービスアカウント認証curl https://mixpanel.com/api/app/me \ -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"プロジェクトトークン
プロジェクトトークンはクライアントサイドのイベントトラッキングに使用され、クライアントコードに含めても安全です。
// クライアントサイド初期化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" # または "EU"
# データ同期オプション sync: events: true profiles: true cohorts: true groups: false
# Brevo リストの割り当て lists: all_users: 15 engaged_users: 16 at_risk: 17イベントマッピング
Mixpanel イベントを Brevo イベントタイプにマッピングします。
event_mapping: # Mixpanel イベント -> Brevo イベント "Purchase": "order_completed" "Sign Up": "customer_created" "Add to Cart": "cart_updated" "Page View": "page_viewed" "$experiment_started": "experiment_started"
# カスタムイベント "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: LTVAPI エンドポイント
| メソッド | エンドポイント | 説明 |
|---|---|---|
POST | /import | イベントをインポート(Ingestion API) |
POST | /track | イベントをトラッキング(クライアントサイド) |
POST | /engage#$set | ユーザープロファイルプロパティを設定 |
POST | /engage#$set_once | 未設定の場合のみプロパティを設定 |
POST | /engage#$delete | ユーザープロファイルを削除 |
POST | /engage#$union | リストプロパティに 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});
// Mixpanel プロジェクトを接続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});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" } } ])});
// 期待されるレスポンス: { "code": 200, "status": "OK", "num_records_imported": 1 }コホートを Brevo に同期
// Mixpanel コホートをエクスポートして Brevo リストに同期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// }ユーザープロファイルプロパティを設定
// 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: { $first_name: "Jane", $last_name: "Kim", plan: "premium", total_orders: 12, lifetime_value: 1250.00 } }])});レート制限
| API | 制限 | 詳細 |
|---|---|---|
| Ingestion API | 2 GB/分 | プロジェクト単位 |
| Track API | ハード制限なし | ベストエフォート配信 |
| Engage API | 2,000 更新/バッチ | プロジェクトあたり最大 2 GB/分 |
| Query API | 60 リクエスト/時間 | プロジェクト単位(サービスアカウント) |
| Export API | 60 リクエスト/時間 | クエリあたり最大 100 日 |
| JQL API | 60 リクエスト/時間 | プロジェクト単位 |
| Cohort Export | 60 リクエスト/時間 | プロジェクト単位 |
イベントの重複排除
Mixpanel は $insert_id プロパティを使用してイベントを重複排除します。失敗したインポートを再試行する際の重複イベントを防ぐため、常に一意の $insert_id を含めてください。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| イベントが表示されない | プロジェクトトークンが間違っている | トークンが対象プロジェクトと一致するか確認 |
| プロファイルプロパティの欠落 | 間違った API の使用 | プロファイルプロパティには /track ではなく /engage#$set を使用 |
| コホートエクスポートの失敗 | 権限不足 | サービスアカウントが Admin または Analyst ロールを持つことを確認 |
| 重複イベント | $insert_id の欠落 | すべてのイベントに一意の $insert_id を含める |
| 402 Payment Required | データ制限超過 | Mixpanel プランの制限を確認し、必要に応じてアップグレード |
| EU データがルーティングされない | データレジデンシーが間違っている | EU プロジェクトには api-eu.mixpanel.com を使用 |
| ID マージの問題 | distinct_id が不正 | Mixpanel の ID 管理ベストプラクティスに従う |
ベストプラクティス
- サービスアカウントを使用する - サーバーサイド認証にはプロジェクトシークレットよりもサービスアカウントを優先
$insert_idを含める - イベントの重複排除のため常に一意の insert ID を設定- プロファイル更新をバッチ処理する - 効率のためリクエストあたり最大 2,000 件のプロファイル更新を送信
- EU エンドポイントを使用する - EU データレジデンシーの場合、すべての API 呼び出しに
api-eu.mixpanel.comを使用 - スケジュールでコホートを同期する - 継続的なポーリングではなく、日次または週次のコホート同期を設定
- 予約済みプロパティをマッピングする - プロファイルデータには Mixpanel の予約済みプロパティ(
$email、$first_name)を使用 - 取り込みを監視する - Mixpanel の Events ページを使用してイベントが正しく受信されていることを検証
セキュリティ
- HTTPS のみ - すべての API 通信に TLS 暗号化が必要
- サービスアカウントの分離 - ロールベースの権限を持つプロジェクトごとのスコープ付きアクセス
- イベントの重複排除 -
$insert_idによる組み込みの重複排除でデータの整合性を確保 - SOC 2 Type II - Mixpanel は SOC 2 Type II 認証取得済み
- GDPR/CCPA - GDPR API によるユーザーデータ削除をサポート
- EU データレジデンシー - 欧州コンプライアンス用の EU データセンターが利用可能