PostHogは、プロダクト分析、セッションリプレイ、フィーチャーフラグ、A/Bテストを1つのSDKと同じイベントデータで扱う分析基盤です。本体はオープンソースで、Cloud版とセルフホスト版があります。この記事では2026年10月時点の公式ドキュメントと料金表をもとに、無料枠を超えたときの請求額の出し方、posthog-jsの初期化とユーザー識別のコード、送信が黙って止まる原因、リプレイで個人情報を送らない設定、SQLでデータを取り出すAPI、セルフホスト版の前提までを、実装者向けに整理しました。
まとめ:PostHogを入れる前に決める計測設計とCloudかセルフホストかの判断
PostHogが向くのは、ログインのあるWebサービスやSaaSで、「どの機能が使われ、どこで離脱し、新機能を誰に出すか」を同じデータで見たいチームです。広告の成果計測が主目的のコーポレートサイトなら、GA4のほうが手間に見合います。
導入を決めたら、コードを書く前に次の4つを決めてください。後から変えると過去データとつながらなくなる項目です。
- identifyに渡すユーザーIDを、認証基盤の変わらないIDに決める(メールアドレスは使わない)
- 匿名のまま計測する画面と、人物プロファイルを作る画面を分ける
- カスタムイベントの命名規則(例:
signup_completed)を決める - リプレイで隠す要素と、送信先のドメイン(自社のプロキシ経由か)を決める
置き場所は、まずCloudの無料枠で始めるのが現実的です。公式はセルフホスト版をサポート対象外としており、有料機能も使えません。
PostHogの製品構成とGA4・Mixpanelとの役割の違いを実装者目線で整理
分析・リプレイ・フラグ・実験が同じイベントとユーザーを共有する構造
PostHogの特徴は、機能ごとに別のツールを入れないことです。ブラウザに入れるSDKはposthog-jsの1つで、ページビューやクリックの自動計測、録画、フラグの評価、アンケートの表示を同じdistinct_idに結び付けます。
そのため「新しい決済画面をフラグで10%に出し、そのユーザーの離脱率をファネルで見て、離脱した人の録画を開く」という作業が1画面で完結します。分析ツール、フラグ管理、録画ツールを別々に入れると、ユーザーIDの突き合わせが最初に必要です。データの保存先はClickHouseで、ClickHouseの列指向の仕組みを知っていると、後述のSQLの書き方も理解しやすくなります。
GA4・Mixpanelとの比較表で見る計測対象・課金単位・セルフホスト可否
3製品は計測の考え方が違います。比較すると、PostHogは「プロダクト分析に開発用の機能が付いたもの」と位置付けられます。
| 観点 | PostHog | GA4 | Mixpanel |
|---|---|---|---|
| 主な用途 | 製品の利用分析 | 集客と広告成果 | 製品の利用分析 |
| 課金単位 | 製品ごとの従量 | 無償版あり | イベント数 |
| 録画とフラグ | 同じSDKに内蔵 | 無し | 録画のみ |
| セルフホスト | 可能(MIT) | 不可 | 不可 |
広告媒体との連携や検索流入の分析はGA4の領分で、PostHogはそこを置き換えません。両方を入れて役割を分ける構成も一般的です。GA4の位置付けはGA4とは?仕組みとUAとの違い・導入と運用体制の判断、Mixpanelのイベント設計とID統合はMixpanelとは?イベント計測の実装とID統合・料金の判断で解説しています。
PostHog Cloudの料金体系と無料枠を超えたときの請求額の試算方法
製品別の月間無料枠と超過単価(2026年10月時点の公式料金表)
公式の料金ページによると、プランはFreeと従量課金の2つです。Freeはクレジットカード不要で、プロジェクトは1つ、データ保持は1年です。従量課金は基本料0ドルで、プロジェクトが6つ、保持が7年に増えます。席数による課金はありません。
| 製品 | 毎月の無料枠 | 超過直後の単価 |
|---|---|---|
| プロダクト分析 | 100万イベント | 0.00005ドル |
| セッションリプレイ | 5,000録画 | 0.005ドル |
| フラグと実験 | 100万リクエスト | 0.0001ドル |
| アンケート | 1,500回答 | 0.1ドル |
| エラー追跡 | 10万例外 | 0.00037ドル |
単価は量が増えるほど下がる段階制で、無料枠は毎月リセットされます。たとえば月200万イベントなら、超過の100万イベント×0.00005ドルで50ドルです。SSOの強制やHIPAAのBAAが要る場合は、月250ドルのBoostパッケージが別途必要になります。
識別イベントが匿名イベントより高くつく課金差とperson_profilesの設定
請求額を最も左右するのは、イベントが「匿名」か「識別」かです。匿名イベントと識別イベントのドキュメントは、匿名イベントは処理が軽いぶん最大4倍安いと書いています。識別イベントは人物プロファイルを作るイベントで、料金表では「Identified events」というアドオンとして別に数えられます。
月200万イベントがすべて識別イベントだと、アドオン側の超過100万×0.000198ドルの198ドルが、先ほどの50ドルに上乗せされます。合計248ドルです。
Web SDKの既定はperson_profiles: 'identified_only'で、identifyを呼んだユーザーにだけプロファイルを作ります。マーケティングサイトの訪問者まで'always'で識別すると、分析上の得は少ないまま請求だけが増えます。既定のまま使い、ログイン後の画面だけを識別するのが基本です。
posthog-jsの導入からidentifyとカスタムイベント送信までの実装手順
npmでのインストールとinitのapi_host・defaults日付の指定
JavaScript SDKのドキュメントでは、HTMLにスニペットを貼る方法とnpmで入れる方法の2つが案内されています。ビルドのあるアプリならnpmのほうが管理しやすくなります。
npm install --save posthog-js
// src/analytics.js
import posthog from 'posthog-js'
posthog.init(import.meta.env.VITE_POSTHOG_TOKEN, {
api_host: 'https://us.i.posthog.com', // EUリージョンは https://eu.i.posthog.com
defaults: '2026-05-30',
person_profiles: 'identified_only',
})
// 自動計測に無い業務上の節目は、名前を決めて送る
posthog.capture('signup_completed', { plan: 'trial', referrer_campaign: 'oct_webinar' })
defaultsは設定の初期値の版を日付で固定する項目です。SDKを更新しても、この日付の時点の初期値で動きます。新しい初期値を取り込むときは、日付を上げて動作を確かめてから本番に出します。
ログイン後のidentifyとログアウト時のresetで人物を正しく結ぶ方法
ドキュメントは、ログイン後にposthog.identify()を呼ぶことを必須としています。渡すIDは認証基盤の変わらないIDで、メールアドレスや表示名はそれとは別に送る人物プロパティです。"user"のような共通の文字列を渡すと、大勢が1人に統合されてデータが壊れます。
// ログイン成功時
posthog.identify(user.id, { plan: user.plan, company_size: user.companySize })
// ログアウト時:同じブラウザの次の利用者に前の人物を引き継がせない
posthog.reset()
reset()を忘れると、共用端末で次にログインした人の操作が前の人に記録されます。社内向けの業務システムで起きやすい事故です。
CSPとアドブロッカーで送信が黙って失敗する原因とリバースプロキシ
導入後に「イベントが1件も届かない」場合、最初に疑う対象はContent-Security-Policyです。SDKは録画やアンケートの追加コードを*.posthog.comから後読みし、イベントもそこへ送ります。ドキュメントはCSPに次の3行を求めており、許可しないとcaptureもidentifyもエラーを出さずに送られません。
script-src 'self' https://*.posthog.com;
connect-src 'self' https://*.posthog.com;
worker-src 'self' blob: data:;
もう1つの取りこぼしは広告ブロッカーです。リバースプロキシのドキュメントは、自社のサブドメイン経由で送ると取得できるイベントが利用者層により10〜30%増えるとしています。Cloud利用者はマネージドプロキシを無料で使えますが、経路はCloudflareを通り、HIPAAの対象外です。医療データを扱うなら自前のプロキシを立てます。計測経路を自社側へ寄せる考え方はサーバーサイドトラッキングとは?Cookie規制下の計測基盤の仕組みでも整理しています。
フィーチャーフラグとセッションリプレイを本番で使うための設定例
getFeatureFlagResultとonFeatureFlagsによる初回表示制御
フラグのコード例によると、フラグの値はページを開くたびに裏で取得され、localStorageに保存されます。2回目以降はすぐ使える一方、初回の訪問だけは取得前に判定が走る状態です。そのままだと、旧画面が一瞬出てから新画面に切り替わります。
posthog.onFeatureFlags((flags, variants, { errorsLoading }) => {
if (errorsLoading) return renderLegacyCheckout() // 取得失敗時は旧画面に倒す
const result = posthog.getFeatureFlagResult('new-checkout')
result?.enabled ? renderNewCheckout(result.payload) : renderLegacyCheckout()
})
フラグの数が多いアプリでは、initにflag_keys: ['new-checkout']を渡すと、評価する対象をそのSDKで使うフラグに絞れます。フラグは1回の評価が1リクエストとして数えられるため、請求額を抑えるために評価対象を絞り込む設定です。使い終えたフラグを消す運用はフィーチャートグル(機能フラグ)とは?4種類の使い分けと削除までの運用で解説しています。
リプレイの入力マスクとmaskTextSelectorで個人情報を送らない設定
リプレイのプライバシー設定では、入力欄は既定でマスクされ、画面上の通常のテキストはマスクされません。マスクはブラウザ側で行われ、隠した値はPostHogへ送られない仕組みです。
posthog.init(token, {
api_host: 'https://us.i.posthog.com',
defaults: '2026-05-30',
session_recording: {
maskAllInputs: true, // 入力欄はすべて隠す(既定)
maskTextSelector: '.customer-name, .address, [data-ph-mask]',
},
})
見落としやすいのは、氏名や住所が入力欄ではなく画面に表示されたテキストとして出る管理画面です。顧客一覧や注文詳細には、HTMLにdata-ph-maskのような目印を付け、セレクタで一括して隠します。指定は子要素にも及ぶため、:not()で例外を作る書き方は効きません。
SQL(HogQL)のQuery APIで計測データを取り出し社内のBIへつなぐ方法
Query APIのcurl例とClickHouse SQLとの違い・ベータ期間の扱い
SQLのドキュメントによると、PostHogのSQLはClickHouse SQLのラッパで、properties.$current_urlのようにイベントのプロパティを直接書けます。画面のSQLインサイトと同じ文を、APIからも実行できます。
curl -X POST "https://us.posthog.com/api/projects/$PROJECT_ID/query" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
-d '{
"query": {
"kind": "HogQLQuery",
"query": "SELECT event, count() AS n FROM events WHERE timestamp > now() - INTERVAL 7 DAY GROUP BY event ORDER BY n DESC LIMIT 20"
}
}'
キーはプロジェクトトークンではなく、クエリの読み取り権限を持つ個人APIキーです。応答はcolumnsとresultsの配列で返ります。このAPIは公開ベータの間は無料で、正式版では大量利用に課金する予定との記載です。毎晩の全件取得のような重い連携を組むなら、料金表にあるBatch exports(月100万行まで無料)でS3やRedshiftへ書き出すほうが、将来の費用を読みやすくなります。
セルフホスト版のhobbyデプロイの要件とCloudを選ぶべき判断基準
4 vCPU・16GB RAMのVM要件とdeploy-hobbyで起動する構成
セルフホストのドキュメントによると、無料で使えるのはMITライセンスのDocker Compose構成です。リポジトリのLICENSEでは、ee/配下を除く部分がMIT Expatとされています。要件はUbuntuのVMで4 vCPU・16GB RAM・30GB超のストレージと、独自ドメインのAレコードです。証明書はLet’s Encryptで自動発行されます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby)"
# 起動後の確認:web・worker・ClickHouse・Kafka・PostgreSQL・Redis・MinIO・Caddy が並ぶ
docker ps --format '{{.Names}}\t{{.Image}}\t{{.Status}}'
1台のVMにClickHouseとKafkaまで載る構成で、メモリ4GBの小さなVMでは動きません。日本語の解説記事にはメモリ4GB以上とするものもありますが、公式の要件は16GBです。Kubernetesでの新規構築は、すでにサポートが終わっています。
CVE非公開・サポート対象外・有料機能はCloud限定という前提条件
同じドキュメントには、セルフホストを選ぶ前に知っておくべき条件が並んでいます。重い順に挙げます。
- PostHogはCVEを公開しない。版の概念が無く、セキュリティ修正も最新のDockerイメージに入るだけなので、常に最新へ上げ続ける運用になる
- セルフホスト版は公式にサポート対象外で、データ消失を含めて利用者が責任を負う
- 有料プランの機能はCloudだけで、セルフホストでは無料プランの機能しか使えない
- 判断の目安として、月30万イベント・1,000録画・30万フラグ呼び出しを超えるかが示されている
公式の判断フローは、多くの利用者にCloudを勧めています。月100万イベントまでCloudが無料である以上、VM代と運用工数を払ってまで自前で持つ理由は「データを自社の外に出せない」場合にほぼ限られます。その場合も、CloudにはEUリージョンがあるため、要件が「国外に出さない」なのか「特定の事業者に預けない」なのかを先に確かめてください。
受託開発の現場でPostHogを採用する条件と見送る場面の判断基準
ログインのあるSaaSや会員サービスでPostHogを採用する条件
採用するのは、次の2つが揃う案件です。1つ目は、ログインした利用者の行動を機能単位で追いたいこと。2つ目は、新機能を段階的に出す仕組みをまだ持っていないことです。この2つが揃うと、分析・録画・フラグを別々に契約するより、1つのSDKで済むPostHogのほうが実装も請求も小さくなります。
導入の成否を分けるのはツールより計測設計で、どの画面で何を送り、どのIDで人物を結ぶかを先に決められるかにかかっています。設計の段階から相談したい場合は、一創のWebコンサルティング・アクセス解析で、イベント設計とダッシュボードの構成まで支援しています。
広告計測が主目的のサイトや医療データを扱う構成で導入を見送る判断
見送るのは、計測の目的が集客と広告の成果に寄っている場合です。Google広告やサーチコンソールとの連携はGA4のほうが厚く、ログインの無いコーポレートサイトでPostHogを入れても、使われるのはWeb分析の画面だけになります。訪問数だけを軽く見たいなら、Cookieを使わないPlausibleのほうが構成は単純です。
医療情報を扱うサービスも慎重に判断します。HIPAAのBAAは有料のBoostパッケージ以上が前提で、マネージドプロキシはその対象外です。録画のマスク漏れが1件でもあれば事故になるため、リプレイを切ってプロダクト分析だけで始めるのが安全です。
よくある質問
PostHogの導入を検討している方から多い質問に答えます。
PostHogは無料でどこまで使えますか?
Cloud版のFreeプランでは、毎月プロダクト分析100万イベント、セッションリプレイ5,000録画、フィーチャーフラグ100万リクエスト、アンケート1,500回答、エラー追跡10万例外まで無料です。プロジェクトは1つ、データ保持は1年に限られます。従量課金に切り替えても基本料は0ドルで、無料枠を超えた分だけを払います。超過時の単価は量に応じて下がる段階制です。
PostHogとGoogleアナリティクス(GA4)の違いは何ですか?
GA4は集客経路と広告の成果を見るためのツールで、PostHogはログイン後の製品の使われ方を見るためのツールです。PostHogには録画、フィーチャーフラグ、A/Bテストが同じSDKに入っており、セルフホストもできます。一方で広告媒体との連携はGA4のほうが厚いため、両方を入れて役割を分ける構成も多く見られます。
PostHogのセルフホスト版は本番で使えますか?
使えますが、公式はサポート対象外としています。CVEを公開せず、修正は最新のDockerイメージに入るだけなので、常に最新へ上げ続ける運用が必要です。有料機能も使えません。要件は4 vCPU・16GB RAMのVMからで、ClickHouseやKafkaの運用も自分で担います。データを自社の外へ出せない要件が無いなら、Cloudを選ぶほうが費用も手間も小さく済みます。
PostHogを入れるとサイトの表示は遅くなりますか?
SDKの初期状態では中核の機能だけを読み込み、録画やアンケートの追加コードは必要になった時点で後から取得します。録画を使わないなら、posthog-js/dist/module.slimを読み込み、使う機能の拡張だけを指定するスリム版で容量を減らせます。ただし公式でのスリム版の位置づけは、実験的な扱いです。本番では表示速度の計測値を導入の前後で比べてから決めてください。
PostHogのデータは日本国内に保存できますか?
Cloud版のリージョンは米国(US)とEUの2つで、日本国内のリージョンは公式ドキュメントに記載がありません。国内に保存する必要があるなら、国内のクラウドにセルフホスト版を構築することになります。その場合はサポート対象外という前提と運用工数を見込んだうえで判断してください。
関連記事
- Mixpanelとは?イベント計測の実装とID統合・料金の判断を技術視点で解説:同じプロダクト分析の専用ツールで、ID統合の考え方を比べられます
- コホート分析ツール比較|GA4・Amplitude・Mixpanelの上限と選び方:PostHog以外の候補も含めて選定するときの比較表です
- アクセス解析のやり方|GA4で見るべき指標と改善につなげる手順を解説:計測したデータを改善につなげる手順の全体像です
- フィーチャートグル(機能フラグ)とは?4種類の使い分けと実装例・削除までの運用:PostHogのフラグを運用するときの設計の基礎です
- ClickHouseとは?列指向DBの仕組み・MergeTreeの実装からBigQueryとの使い分けまで:PostHogの保存先になっているデータベースの仕組みです