ChatGPT Adsのpixelとconversions API:コンバージョン計測の導入
最終更新:2026年8月24日、OpenAIの公式ドキュメントに基づいて検証済み。ここで挙げるイベント名やパラメータ名はOpenAIの開発者向けドキュメントに由来し、ベータ期間中に変更される可能性があります。
コンバージョン計測がなければ、ChatGPT Adsのキャンペーンは目隠しのままです。いくら使ったかは分かっても、何を得たかは分かりません。そして何より、コンバージョン最適化を有効にできません。このページでは2つの公式な方法、ブラウザのpixelとサーバーサイドのConversions API、そしてその両立のさせ方を扱います。全体像はChatGPT Adsガイドをご覧ください。
このページで扱う AI エンジン
- ChatGPT
計測が任意ではなく前提条件である理由
理由は3つあり、うち1つは決定的です。
- 決定的:コンバージョン最適化(oCPC)は、JavaScriptのpixel、Conversions API、またはその両方によって計測がすでに設定されていることを要求します。シグナルがなければ、システムには最適化する対象がありません。
- Ads Managerのレポートにはコンバージョンの列がありますが、何も接続されていなければ空のままです。
- 獲得単価の計算はこのデータに完全に依存します。データがなければ、成果ではなくCPC、つまり支出を見て運用することになります。
OpenAIが示す一般原則はシンプルです。Ads Managerでデータソース(data source)を作成し、そこにpixel、API、またはその両方でコンバージョンイベントを送ります。
pixelとConversions API:どちらを選ぶか
| JavaScriptのpixel | Conversions API | |
|---|---|---|
| 実行される場所 | 訪問者のブラウザ内 | 自社サーバー上のみ |
| 導入 | headに配置するスクリプト1つ | バックエンド側の開発 |
| 堅牢性 | ブロッカーやブラウザの制限の影響を受ける | OpenAIはpixel単体より信頼できるソースとして提示 |
| OpenAIの推奨 | 出発点 | より正確なデータのため可能な場合は利用する |
現実的な答えは「どちらか」ではなく「両方、重複排除つき」です。pixelは1時間で設置でき、キャンペーンをすぐに動かせます。APIはそのあとで接続し、計測を長期的に安定させます。
計測pixelを設置する
ChatGPT Adsの計測pixelは、ChatGPT内の広告に帰属するサイト上のイベントを計測するためのブラウザSDKです。スクリプトはhttps://bzrcdn.openai.com/sdk/oaiq.min.jsから非同期に読み込まれ、<head>セクションに配置し、自社のpixel IDで初期化します。
oaiq("init", { pixelId: "YOUR-PIXEL-ID" });
pixelIdパラメータは必須で、Ads Managerで作成します。任意のdebugパラメータはSDKの動作をブラウザのコンソールに出力するため、受け入れテストの段階で役立ちます。
その後の計測はすべて単一のコマンドを通ります。oaiq("measure", eventName, eventData, options)。
標準イベント、カスタムイベントとその制約
各標準イベントは、typeフィールドが対応しているデータオブジェクトを期待します。OpenAIの開発者向けドキュメントは次のように分類しています。
| 分類 | イベント | 期待されるtypeフィールド |
|---|---|---|
| コマース | order_created, items_added, checkout_started | contents |
| コンテンツ | page_viewed, contents_viewed | contents |
| リードと登録 | lead_created, registration_completed, appointment_scheduled | customer_action |
| サブスクリプション | subscription_created, trial_started | plan_enrollment |
contentsタイプのイベントについて、文書化されているフィールドにはamount、currency、そしてid、name、content_type、quantityを持つ要素からなるcontents配列が含まれます。plan_enrollmentタイプのイベントはplan_idを期待します。ドキュメントはamountとquantityに整数値を使うよう明記しています。
該当する標準イベントがない場合、カスタムイベントは第3引数とオプションオブジェクトで宣言します。
oaiq("measure", "custom", { type: "custom" }, { custom_event_name: "quote_requested" })
カスタムイベントの名前は厳密なルールに従う必要があります。1文字以上64文字以下、使用できるのは英数字、アンダースコア、ハイフンのみで、先頭と末尾は英数字であること。
構造的な制限に注意してください。カスタムイベントはoCPCの最適化目標には使えません。事業上のコンバージョンで最適化を動かしたいなら、標準イベントとして送る必要があります。
サーバーサイドのConversions APIを接続する
APIは自社サーバーからのみ利用します。文書化されている実装のポイントは次のとおりです。
POST /conversions/pixelsのエンドポイントでWebのコンバージョンソースとそのpixel IDを作成します。- 現在の広告アカウントのためにサーバーサイドでイベントを送信できるキーを生成します。
- このキーはサーバーサイドのシークレット管理に保存する必要があります。ドキュメントは断定的です。ブラウザのコード、クライアント側から見える環境変数、ログ、コードリポジトリには決して置かないこと。
- APIは最大1,000件までのバッチを受け付けます。エラー処理において決定的な点があります。バッチ内の1件でも失敗すると、バッチ全体が失敗します。
この最後のルールは設計段階で扱う価値があります。1件の注文でフィールドの形式を誤っただけでバッチが丸ごと拒否され、有効な999件のコンバージョンがレポートから消える可能性があります。
pixelとAPIの重複排除:外せないルール
同じコンバージョンをpixelとConversions APIの両方から送る場合、システムにそのことを伝えないと二重に数えてしまいます。文書化されている方法は次のとおりです。
- API側のidとpixel側のevent_idに同じ値を使う。
- 両方のイベントを同じpixel IDで送る。
- カスタムイベントについては、両側で同じcustom_event_nameを使う。
pixel側では次のような形になります。oaiq("measure", "order_created", {...}, { event_id: "order_12345" })。照合はpixel ID、イベント名、event_idに基づきます。カスタムイベントの場合、この論理においてイベント名の代わりにcustom_event_nameが使われます。
実務上は、注文IDやリードIDを重複排除のキーに使ってください。両側で自然に利用できる唯一の値です。
oppref:捕捉するだけでは足りない、コンバージョンまで保持する
pixel は OpenAI のクリック参照情報である oppref を捕捉し、ファーストパーティの Cookie(__oppref)に保存します。捕捉するだけでは十分ではありません。公式ドキュメントは、多くの実装が見落としている点を強調しています。oppref はリダイレクトやページ遷移をまたいで、コンバージョンが実際に計測されるページまで保持されなければなりません。決済用のサブドメインを経由する決済導線、フォーム送信後のリダイレクト、あるいはドメインが変わるカートは、途中で引き継ぐ仕組みを用意していなければ、その過程で Cookie を失います。
見落とされがちなもう一つの点があります。pixel とは異なり、Conversions API は oppref を自動的には捕捉しません。サーバーサイドで API を呼び出す場合、oppref の値(通常は pixel が Cookie に保存するか、URL のパラメータとして渡されます)を取得し、それが利用可能なときは呼び出しに明示的に含めるのは、あなたのコードの役目です。この手順を踏まないと、API だけで送られたイベントは、その前にあった広告クリックとのつながりを失います。
OpenAI が推奨するアーキテクチャは3つの要素から成ります。oppref と軽量なイベントを捕捉するために各ページに置く pixel、バックエンドから送る価値の高いイベントのための Conversions API(注文情報を持っていて、呼び出しを妨げるものが何もない場所です)、そして両方のチャネルが同じ event_id で同じコンバージョンを送ることです。
自動advanced matching
自動advanced matching(AAM)は、クリック識別子が利用できない場合にコンバージョンを広告へ紐づけるためのものです。pixelはサイトのフォームやその他のソースから識別可能な顧客情報を自動的に検出し、正規化したうえでブラウザ内で直接SHA-256にハッシュ化します。ドキュメントは生データは送信されないと明記しています。
初期化時のuserオブジェクトに、ハッシュ化済みの識別子を自分で渡すこともできます。email_sha256、phone_number_sha256、external_id_sha256、first_name_sha256、last_name_sha256、およびハッシュ化しないフィールドであるcountry、city、region、postal_codeです。
この機能は個人データに関わります。有効化するかどうかは、とくに欧州向けにおいては、データ保護の責任者と協議して判断してください。
同意管理、GDPRとpixelの制御
SDKは同意のコマンドを提供しており、ユーザーが同意するまで計測を止めるために初期化の前に呼び出します。
oaiq("consent", false);、次にoaiq("init", { pixelId: "..." });、同意が得られたらoaiq("consent", true);という順序です。
覚えておくべき点が2つあります。第一に、同意は既定でtrueであり、明示的にfalseに設定されるか拒否が記録されている場合のみ例外となります。したがって欧州向けのサイトでは、既定の挙動に頼らず明示的にoaiq("consent", false)を先に呼ぶ必要があります。第二に、値がfalseのとき計測イベントは送信されません。
またopt_outパラメータにより、ユーザー単位でイベントをパーソナライズの対象から除外できます。既定値はfalseです。SDKはプライバシーに配慮した識別子opprefも扱い、URLから取得して__opprefクッキーに保存します。
背景の確認として、パーソナライズ広告はローンチ時点で欧州経済領域およびスイスでは利用できません。だからといって、計測そのものについての同意管理が免除されるわけではまったくありません。
Content Security Policy:許可すべきドメイン
厳格なCSPを適用しているサイトで最も多い、静かな障害の原因です。SDKが初期化される前にブロックされます。文書化されているディレクティブは次のとおりです。
| ディレクティブ | 許可するソース | 役割 |
|---|---|---|
| script-src | https://bzrcdn.openai.com | SDKの読み込み |
| connect-src | https://bzr.openai.com と https://bzrcdn.openai.com | イベントの送信と取得 |
| img-src | https://bzr.openai.com | 画像リクエストによるフォールバック |
コードが正しく設置されているのにpixelが何も送っていない場合は、debugパラメータを有効にしてコンソールを開いてください。CSPのエラーがただちに表示されます。
pixelにできないこと
タグ設計の前に知っておくべき明示的な制限です。計測pixelはapp_installedとapp_openedのイベントに対応していません。これらのイベントはConversions APIを通じてサーバーサイドで送る必要があります。
またOpenAIは、コンバージョンがアプリ内で発生する広告主向けに、モバイル計測パートナー(MMP)を含む計測パートナーとの連携も文書化しています。
もう1つの注意点として、同一サイトで複数のpixel IDを使う場合は特別な設定が必要で、OpenAIが別途文書化しています。
アトリビューション:何が、どう数えられるか
OpenAIは、キャンペーンに設定されたイベントと、適用されるアトリビューションウィンドウに照らしてコンバージョンイベントを評価します。知っておくべきルールは2つです。
- クリック後のアトリビューションは、設定されたクリックウィンドウを使います。
- インプレッション後のコンバージョン(view-through)は、対象となるインプレッションのあと固定の1日ウィンドウを使い、クリックウィンドウとは独立しています。
そして計算ミスを避けるための読み方のルールです。メインのコンバージョン列にはクリック後のコンバージョンしか含まれません。インプレッション後のコンバージョンは独立した補助的なレポートであり、OpenAIによればコンバージョンに加算してはならず、CPAのような基本的なパフォーマンス指標に用いてはなりません。
公開前の受け入れテストのチェックリスト
- Ads Managerでデータソースを作成し、pixel IDを取得した。
- スクリプトをheadで読み込み、正しいpixel IDで初期化を呼んでいる。
- 欧州向けサイトでは、initの前に同意処理を組み込んでいる。
- 標準イベントが正しい箇所で、正しいtypeフィールドとともに発火している。
- APIと二重に送る場合は重複排除を実装した。idとevent_idに同じ値、同じpixel IDを使用。
- 3つのディレクティブについてCSPを更新した。
- 受け入れテストのあいだdebugモードを有効にし、その後に無効化した。
- ランディングページがOAI-AdsBotからアクセス可能である。ブロックされたページはタグの品質と無関係に広告の却下を招きます。ChatGPT Ads ランディングページチェッカーはこの点を検査します。
- oCPCを狙うなら、目標として有効な標準イベントを1つだけ選んだ。キャンペーン作成後は変更できないことに留意してください。
よくあるご質問
ChatGPT Adsでコンバージョン計測は必須ですか
Conversions API は oppref を自動的に取得してくれますか
pixelとConversions APIのどちらかを選ぶ必要がありますか
コンバージョンを二重に数えないようにするには
カスタムイベントをoCPCの目標にできますか
pixelはユーザーの同意を尊重しますか
pixelが何も送っていません。最初に何を確認すべきですか
アプリのインストールはどう計測しますか
アトリビューションウィンドウはどれくらいですか
SEOスコア、GEOスコア、パフォーマンス、レスポンシブ:49項目をチェックし、AI Overviews対応の判定を即座に確認。
関連ガイド
ChatGPT Ads:ChatGPTに広告を出すための2026年完全ガイド
ChatGPT Adsの仕組み、提供地域、アカウントの作り方、キャンペーンの構成、context hintsによるターゲティング、予算の見積もり方をまとめた基準ガイド。変更があるたびに更新しています。
ガイドを読むChatGPT Ads料金:入札、予算、キャンペーンの実際のコスト
ChatGPT Adsキャンペーンに実際いくらかかるのか。3つの入札モデル、OpenAIが推奨する開始入札額、1日あたりの最低予算、そして支払いしきい値による請求の仕組みを解説します。
ガイドを読むEC向けChatGPT Ads:商品フィードから配信するキャンペーン
カタログをChatGPT Adsに接続する方法。フィード送信の3つの手段、商品の期限切れ、is_ads_eligibleフィールド、そしてオーガニックの商品表示との違いを扱います。
ガイドを読む