---
title: "PostHog コネクタ"
description: "Tajo を介して PostHog の製品分析、機能フラグ、ユーザー行動データを Brevo と同期するための完全な PostHog 統合ガイド。"
url: https://tajo.io/jp/docs/connectors/custom/posthog/
markdown: https://tajo.io/jp/docs/connectors/custom/posthog.md
lang: ja-JP
robots: noindex
---

先行利用を申し込む

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

# PostHog コネクタ

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

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

Tajo を介して PostHog を Brevo に接続し、製品分析データ、ユーザー行動イベント、コホートメンバーシップを同期して、データ駆動型マーケティングキャンペーンとパーソナライズされた顧客エンゲージメントを実現します。

## 概要

| プロパティ | 値 |
| --- | --- |
| **プラットフォーム** | PostHog |
| **カテゴリ** | 製品分析(カスタム) |
| **セットアップの複雑さ** | 中 |
| **公式統合** | いいえ |
| **同期データ** | イベント、人物、機能フラグ、コホート |
| **認証方式** | Personal API Key / Project Token |

## 機能

- **イベント同期** - 行動ターゲティングのために PostHog 分析イベントを Brevo に転送
- **人物プロファイル同期** - PostHog の人物プロパティを Brevo 連絡先属性に同期
- **コホートベースのセグメンテーション** - PostHog コホートを Brevo 連絡先リストにマッピング
- **機能フラグ同期** - 有効化された機能フラグで連絡先をセグメント化
- **ファネルデータ** - ターゲットの再エンゲージメントのためにコンバージョンファネルデータを使用
- **セッションリプレイメタデータ** - セッションエンゲージメントメトリクスで連絡先を強化

## 前提条件

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

1. PostHog アカウント(クラウドまたはセルフホスト)
2. [PostHog Settings](https://app.posthog.com/settings/user-api-keys) からの Personal API Key
3. [Project Settings](https://app.posthog.com/project/settings) からのプロジェクト API キー(トークン)
4. API アクセス可能な Brevo アカウント
5. コネクタ権限を持つ Tajo アカウント

## 認証

### Personal API Key(プライベートエンドポイント)

```bash
# https://app.posthog.com/settings/user-api-keys で生成
export POSTHOG_PERSONAL_API_KEY=phx_your_personal_api_key
export POSTHOG_PROJECT_TOKEN=phc_your_project_token
export POSTHOG_HOST=https://us.posthog.com  # または https://eu.posthog.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
```

```javascript
// プライベート API エンドポイントは Bearer 認証を使用
const headers = {
  'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
  'Content-Type': 'application/json'
};

// パブリックエンドポイントはプロジェクトトークンを使用
const publicHeaders = {
  'Content-Type': 'application/json'
};
// パブリックエンドポイントではトークンをリクエストボディで渡す
```

API キーのセキュリティ

Personal API キーは完全なアカウントアクセスを提供します。クライアントサイドコードに決して公開しないでください。イベントキャプチャや機能フラグ評価などのパブリックエンドポイントにはプロジェクト API キー(トークン)を使用してください。

## 設定

### 基本セットアップ

```yaml
connectors:
  posthog:
    enabled: true
    host: "${POSTHOG_HOST}"
    personal_api_key: "${POSTHOG_PERSONAL_API_KEY}"
    project_token: "${POSTHOG_PROJECT_TOKEN}"
    project_id: "12345"

    sync:
      persons: true
      events: true
      cohorts: true
      feature_flags: true
      schedule: "0 */3 * * *"  # 3 時間ごと

    event_filters:
      - "$pageview"
      - "purchase_completed"
      - "signup_completed"
      - "feature_used"

    lists:
      all_users: 25
      active_users: 26
      power_users: 27
```

### フィールドマッピング

```yaml
field_mapping:
  email: email
  $name: FIRSTNAME
  $browser: BROWSER
  $os: OS
  $initial_referrer: REFERRAL_SOURCE
  total_events: EVENT_COUNT
  last_seen: LAST_ACTIVE_DATE
  signup_date: SIGNUP_DATE
  plan: SUBSCRIPTION_PLAN
  company: COMPANY
  cohort_names: POSTHOG_COHORTS
```

## API エンドポイント

| エンドポイント | メソッド | 説明 |
| --- | --- | --- |
| `{host}/api/projects/{id}/persons/` | GET | 人物を一覧取得 |
| `{host}/api/projects/{id}/events/` | GET | イベントを一覧取得 |
| `{host}/api/projects/{id}/cohorts/` | GET | コホートを一覧取得 |
| `{host}/api/projects/{id}/feature_flags/` | GET | 機能フラグを一覧取得 |
| `{host}/api/projects/{id}/feature_flags/evaluation/` | POST | フラグを評価 |
| `{host}/api/projects/{id}/insights/` | GET | 保存済みインサイトを一覧取得 |
| `{host}/api/projects/{id}/query/` | POST | HogQL クエリを実行 |
| `{host}/i/v0/e` | POST | イベントをキャプチャ(パブリック) |
| `{host}/decide/?v=3` | POST | 機能フラグの判定(パブリック) |

## コード例

### コネクタの初期化

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('posthog', {
  host: process.env.POSTHOG_HOST,
  personalApiKey: process.env.POSTHOG_PERSONAL_API_KEY,
  projectToken: process.env.POSTHOG_PROJECT_TOKEN,
  projectId: '12345'
});
```

### 人物を Brevo に同期

```javascript
// PostHog の人物をページネーションで取得
let nextUrl = `${posthogHost}/api/projects/${projectId}/persons/?` +
  new URLSearchParams({ limit: '100' });

while (nextUrl) {
  const response = await fetch(nextUrl, {
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
    }
  });

  const data = await response.json();

  for (const person of data.results) {
    const email = person.properties.$email || person.properties.email;
    if (!email) continue;

    await tajo.contacts.sync({
      email,
      attributes: {
        FIRSTNAME: person.properties.$name || person.properties.name,
        LAST_ACTIVE_DATE: person.properties.$last_seen,
        SIGNUP_DATE: person.created_at,
        EVENT_COUNT: person.properties.$event_count,
        BROWSER: person.properties.$browser,
        OS: person.properties.$os,
        REFERRAL_SOURCE: person.properties.$initial_referrer
      },
      listIds: [25]
    });
  }

  nextUrl = data.next;
}
```

### コホートを Brevo リストとして同期

```javascript
// PostHog のコホートを取得してメンバーを Brevo リストに同期
const cohortsResponse = await fetch(
  `${posthogHost}/api/projects/${projectId}/cohorts/`,
  {
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
    }
  }
);

const { results: cohorts } = await cohortsResponse.json();

for (const cohort of cohorts) {
  // このコホート内の人物を取得
  const personsResponse = await fetch(
    `${posthogHost}/api/projects/${projectId}/cohorts/${cohort.id}/persons/`,
    {
      headers: {
        'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
      }
    }
  );

  const { results: persons } = await personsResponse.json();

  for (const person of persons) {
    const email = person.properties.$email || person.properties.email;
    if (email) {
      await tajo.contacts.update(email, {
        attributes: {
          POSTHOG_COHORTS: cohort.name
        }
      });
    }
  }
}
```

### 分析用の HogQL クエリを実行

```javascript
// HogQL を使用して分析データをクエリ
const queryResponse = await fetch(
  `${posthogHost}/api/projects/${projectId}/query/`,
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: {
        kind: 'HogQLQuery',
        query: `
          SELECT
            properties.$email AS email,
            count() AS event_count,
            max(timestamp) AS last_event
          FROM events
          WHERE event = 'purchase_completed'
            AND timestamp > now() - interval 30 day
          GROUP BY email
          HAVING event_count > 3
          ORDER BY event_count DESC
          LIMIT 1000
        `
      }
    })
  }
);

const queryResult = await queryResponse.json();

for (const row of queryResult.results) {
  await tajo.contacts.update(row[0], {
    attributes: {
      PURCHASE_COUNT_30D: row[1],
      LAST_PURCHASE: row[2]
    }
  });
}
```

## レート制限

| エンドポイントカテゴリ | 制限 | 備考 |
| --- | --- | --- |
| 分析エンドポイント | 240/分、1,200/時間 | GET persons、events、insights |
| クエリエンドポイント | 2,400/時間 | HogQL とカスタムクエリ |
| 機能フラグ評価 | 600/分 | ローカル評価エンドポイント |
| CRUD エンドポイント | 480/分、4,800/時間 | 作成、更新、削除操作 |
| パブリックエンドポイント(キャプチャ) | 無制限 | イベントキャプチャ、フラグ判定 |

バッチエクスポート

大規模なイベントデータエクスポートには、API ではなく PostHog のバッチエクスポート機能を使用してください。バッチエクスポートは S3、BigQuery、Snowflake などの送信先をサポートしています。

## トラブルシューティング

| 問題 | 原因 | 解決策 |
| --- | --- | --- |
| 401 Unauthorized | API キーが無効 | 設定で Personal API Key を確認 |
| 400 Invalid project | プロジェクト ID が間違っている | PostHog URL のプロジェクト ID を確認 |
| 人物リストが空 | 識別されたユーザーがいない | `posthog.identify()` が呼び出されているか確認 |
| プロパティの欠落 | プロパティが未設定 | クライアント SDK の `$set` 呼び出しを確認 |
| レート制限 429 | リクエスト過多 | バックオフを実装し、レート制限ヘッダーを確認 |

### デバッグモード

```yaml
connectors:
  posthog:
    debug: true
    log_level: verbose
    log_queries: true
    log_sync: true
```

## ベストプラクティス

1. **ユーザーを識別する** - 人物同期を有効にするため常にメール付きで `posthog.identify()` を呼び出す
2. **セグメンテーションにはコホートを使用する** - Brevo リストに PostHog の行動コホートを活用
3. **API リクエストをバッチ処理する** - 大規模データセットにはページネーションとバッチ処理を使用
4. **複雑なクエリには HogQL を使用する** - SQL ライクなクエリでカスタム分析を抽出
5. **バッチエクスポートを設定する** - 大量のデータには API ポーリングよりもバッチエクスポートを優先
6. **関連イベントをフィルタリング** - ノイズを減らすためマーケティング関連イベントのみを同期

## セキュリティ

- **Personal API Key** - スコープ付き Bearer トークン認証
- **プロジェクトトークン** - クライアントサイド操作専用のパブリックトークン
- **HTTPS のみ** - すべてのエンドポイントに TLS 暗号化が必要
- **IP 許可リスト** - セルフホストインスタンスで利用可能
- **キースコープ** - 特定の権限スコープで API キーを作成
- **GitHub シークレットスキャン** - PostHog は漏洩キー検出のため GitHub と提携

## 関連リソース

- [Optimizely コネクタ](https://tajo.io/jp/docs/connectors/custom/optimizely)
- [Segment コネクタ](https://tajo.io/jp/docs/connectors/custom/segment)
- [Snowflake コネクタ](https://tajo.io/jp/docs/connectors/custom/snowflake)
- [PostHog API ドキュメント](https://posthog.com/docs/api)
