---
title: "Mixpanel コネクタ"
description: "Tajo を介して Mixpanel の製品分析イベント、ユーザープロファイル、コホートを Brevo と同期するための完全な Mixpanel 統合ガイド。"
url: https://tajo.io/jp/docs/connectors/custom/mixpanel/
markdown: https://tajo.io/jp/docs/connectors/custom/mixpanel.md
lang: ja-JP
robots: noindex
---

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

# Mixpanel コネクタ

コネクターのステータス: 予定 まだ構築されていません。Tajo は現在このコネクターを実行していません。

| 送信元フィールド | 送信先フィールド | サンプル値 |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Tajo を介して Mixpanel を Brevo に接続し、製品分析とマーケティング自動化をつなぎます。ユーザープロファイル、行動イベント、コホートを同期して、実際の製品利用状況に基づくデータ駆動型キャンペーンを作成します。

## 概要

| プロパティ | 値 |
| --- | --- |
| **プラットフォーム** | Mixpanel |
| **カテゴリ** | 分析(カスタム) |
| **セットアップの複雑さ** | 中 |
| **公式統合** | いいえ |
| **同期データ** | イベント、プロファイル、コホート、グループ |
| **利用可能なスキル** | 7 |

## 機能

- **イベント取り込み** - Mixpanel の Ingestion API を介して track イベントを Brevo ワークフローにインポート
- **ユーザープロファイル同期** - Mixpanel のユーザープロファイルプロパティを Brevo 連絡先属性にマッピング
- **コホートエクスポート** - ターゲットキャンペーン用に Mixpanel コホートを Brevo 連絡先リストに同期
- **グループ分析** - B2B アカウントベースマーケティング用のグループレベルデータを同期
- **ID 管理** - 統合された顧客プロファイルのために Mixpanel の ID マージを活用
- **JQL クエリ** - Brevo 用の特定のデータセットを抽出するカスタム JQL クエリを実行
- **ルックアップテーブル** - Mixpanel ルックアップテーブルからエンリッチメントデータを同期

## 前提条件

開始する前に、以下を準備してください。

1. プロジェクトを作成済みの Mixpanel アカウント
2. クライアントサイドトラッキング用の Mixpanel プロジェクトトークン
3. サーバーサイド API アクセスのための適切な権限を持つサービスアカウント
4. API アクセス可能な Brevo アカウント
5. API 認証情報を持つ Tajo アカウント

## 認証

### サービスアカウント(推奨)

Mixpanel は API 認証にサービスアカウントの使用を推奨しています。サービスアカウントは HTTP Basic Auth をユーザー名(サービスアカウントのユーザー名)とパスワード(サービスアカウントのシークレット)で使用します。

```bash
# サービスアカウント認証
curl https://mixpanel.com/api/app/me \
  -u "SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET"
```

### プロジェクトトークン

プロジェクトトークンはクライアントサイドのイベントトラッキングに使用され、クライアントコードに含めても安全です。

```javascript
// クライアントサイド初期化
mixpanel.init("YOUR_PROJECT_TOKEN");
```

### OAuth(パートナー統合用)

複数のプロジェクトにアクセスするアプリ統合の場合:

```bash
curl https://mixpanel.com/api/2.0/engage \
  -H "Authorization: Bearer YOUR_OAUTH_TOKEN"
```

## 設定

### 基本セットアップ

```yaml
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 イベントタイプにマッピングします。

```yaml
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 の連絡先属性にマッピングします。

```yaml
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` | リストプロパティに Union |
| `POST` | `/groups` | グループプロファイルプロパティを設定 |
| `GET` | `/export` | 生イベントデータをエクスポート |
| `POST` | `/cohorts/list` | 保存済みコホートを一覧取得 |
| `POST` | `/engage/query` | ユーザープロファイルをクエリ |
| `POST` | `/jql` | カスタム JQL クエリを実行 |
| `GET` | `/segmentation` | セグメンテーションレポートをクエリ |
| `GET` | `/retention` | リテンションレポートをクエリ |
| `GET` | `/funnels` | ファネルレポートをクエリ |

## コード例

### Mixpanel コネクタの初期化

```javascript
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 でイベントをインポート

```javascript
// 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 に同期

```javascript
// 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
// }
```

### ユーザープロファイルプロパティを設定

```javascript
// 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: "jane@example.com",
      $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 管理ベストプラクティスに従う |

## ベストプラクティス

1. **サービスアカウントを使用する** - サーバーサイド認証にはプロジェクトシークレットよりもサービスアカウントを優先
2. **`$insert_id` を含める** - イベントの重複排除のため常に一意の insert ID を設定
3. **プロファイル更新をバッチ処理する** - 効率のためリクエストあたり最大 2,000 件のプロファイル更新を送信
4. **EU エンドポイントを使用する** - EU データレジデンシーの場合、すべての API 呼び出しに `api-eu.mixpanel.com` を使用
5. **スケジュールでコホートを同期する** - 継続的なポーリングではなく、日次または週次のコホート同期を設定
6. **予約済みプロパティをマッピングする** - プロファイルデータには Mixpanel の予約済みプロパティ(`$email`、`$first_name`)を使用
7. **取り込みを監視する** - Mixpanel の Events ページを使用してイベントが正しく受信されていることを検証

## セキュリティ

- **HTTPS のみ** - すべての API 通信に TLS 暗号化が必要
- **サービスアカウントの分離** - ロールベースの権限を持つプロジェクトごとのスコープ付きアクセス
- **イベントの重複排除** - `$insert_id` による組み込みの重複排除でデータの整合性を確保
- **SOC 2 Type II** - Mixpanel は SOC 2 Type II 認証取得済み
- **GDPR/CCPA** - GDPR API によるユーザーデータ削除をサポート
- **EU データレジデンシー** - 欧州コンプライアンス用の EU データセンターが利用可能

## 関連リソース

- [Segment コネクタ](https://tajo.io/jp/docs/connectors/custom/segment)
- [Amplitude コネクタ](https://tajo.io/jp/docs/connectors/custom/amplitude)
- [顧客同期スキル](https://tajo.io/jp/docs/skills/data-sync/customer-sync)
- [Brevo Events API](https://tajo.io/jp/docs/events-engagement/create-event)
