アクセス解析Google Tag Manager

GTM で Meta Pixel を設定するとき、タグの重複で計測がずれないようにする

GTM などで、カスタム HTML タグに Meta Pixel のタグが大量に埋め込まれているのをよく目にします。これは、広告代理店ごとにタグを追加していることが原因です。

実はこれが、コンバージョンを正しく計測できない原因になっていることがあります。この記事では、Meta Pixel (旧 Facebook ピクセル) を Google タグ マネージャー (GTM) で管理するときに、タグの重複で計測がずれないようにするための設定方法を説明します。

まず確認するタグ

サイトの HTML や GTM のカスタム HTML タグに、次のような Meta Pixel の基本コードが入っていないか確認してください。注目するのは最後の fbq('track', …) です。

<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', '111111111111111');
  fbq('track', 'PageView');
</script>
見つかった書き方判定
fbq('track', …)、fbq('trackCustom', …)対象です。そのページにあるすべての Meta Pixel にイベントが送られ、重複の原因になります
fbq('trackSingle', 'ピクセルID', …)、fbq('trackSingleCustom', 'ピクセルID', …)問題ありません。指定したピクセルにだけ送られます
GTM の「Meta Pixel」テンプレート (作成者 facebook) のタグ問題ありません。ほかのタグから独立して、設定したとおりに動きます (推奨)

track を使ったタグがあれば、次のどちらかの方法に置き換えてください。

方法 1 (推奨)

Meta Pixel テンプレートを使う

コミュニティ テンプレート ギャラリーで Meta が公開しているテンプレートです。入力したピクセル ID にだけ送信します。

方法 2

カスタム HTML なら trackSingle を使う

基本コードの fbq('track', …) を fbq('trackSingle', 'ピクセルID', …) に書き換えます。

GTM と Meta の画面の文言やレイアウトは、予告なく変わることがあります。この記事と画面の表示が異なる場合は、画面の案内に従ってください。

なぜ重複が問題になるのか

fbq はページに 1 つだけ

Meta Pixel の基本コードは、fbq('init', 'ピクセルID') でピクセルを登録し、fbq('track', …) でイベントを送ります。

fbq はページ全体で 1 つだけです。サイトに直接書いたコード、自社の GTM コンテナ、広告代理店の GTM コンテナ、CMS やカートのプラグインなど、どこから読み込んだ Meta Pixel も同じ fbq に登録されます。

そして fbq('track', …) は、fbq に登録済みのすべてのピクセルに送信されます。自分のタグで init したピクセルだけに送られるわけではありません。

同じイベントが、すべてのピクセルに複数回届く

基本コードやイベント用のタグは、それぞれが自分で fbq('track', …) を実行します。GTM ではセットアップ (init) が先に動くことが多く、その時点でページ内のピクセルはすべて登録済みです。そのため、どのタグの track もすべてのピクセルに届き、1 回の購入が、すべてのピクセルに複数回届きます。

広告管理画面のコンバージョンが実際より多くなり、広告の成果を正しく判断できなくなります。init と track が動く順番によって、どのピクセルがどれだけ重複するかは変わります。ページや閲覧ごとに数がばらつくこともあります。

PageView について2026 年 10 月にダミーのピクセル ID で確認したところ、PageView は同じページで複数回 track しても、ピクセルごとに 1 回だけ送信されていました。一方、Purchase などの標準イベントやカスタムイベントは、track を実行した回数だけ送信されました。PageView で重複が見えなくても、ほかのイベントは重複している可能性があります。

テンプレートで追加すれば、ほかのタグから独立する

GTM の Meta Pixel テンプレートで追加したピクセルは、ほかのタグから独立して動きます。ページにほかの Meta Pixel (直接書かれたコード、別の GTM コンテナ、プラグイン) があっても、設定したピクセルに、設定したイベントだけが送られます。ほかのピクセルにイベントを送ることも、ほかのタグのイベントを受け取ることもありません (2026 年 10 月に実際の GTM で確認)。

  • 自社のピクセルは、テンプレートで追加すれば正しく計測できます。
  • 基本コード (track) で入っているほかのピクセル同士は、引き続き重複し合います。制作会社、広告代理店、プラグインの設定者など、ほかの関係者にもテンプレートへの置き換えを勧めてください。

よくある重複のパターン

  • サイトに直接貼った基本コードを残したまま、GTM にも同じピクセルを設定した
  • 広告代理店ごとに、GTM のカスタム HTML で基本コードを追加した
  • 広告代理店が自社の GTM コンテナをサイトに追加し、その中に Meta Pixel を入れていた
  • EC カートや CMS のプラグインが Meta Pixel を自動で入れていた

設定の前に、いまの設置状況を確認する

GTM に設定する前に、サイトにすでに Meta Pixel が入っていないか確認します。自社の GTM コンテナだけでなく、ページに入っているものすべてを確認します。

  1. 対象のページを Chrome で開きます。
  2. Meta Pixel Helper(Chrome 拡張機能) を開き、表示されるピクセル ID と件数を確認します。
  3. ページのソースを表示し、fbevents.js や fbq( で検索します。サイトに直接書かれた基本コードが見つかります。
  4. 同じソースで GTM- を検索し、GTM コンテナがいくつ入っているか確認します。自社以外のコンテナがあれば、管理している会社に Meta Pixel の有無を確認します。
  5. 自社の GTM のタグ一覧で、Meta Pixel テンプレートのタグと、fbq を含むカスタム HTML タグを洗い出します。
サイトに直接書かれた基本コードがある場合GTM に移すときは、GTM 側を公開するのと同じタイミングで、サイトの基本コードを削除します。両方が残っている期間は、イベントが二重に計測されます。

方法 1 (推奨): Meta Pixel テンプレートを使う

GTM のコミュニティ テンプレート ギャラリーにある、Meta (作成者: facebook) の Meta Pixel テンプレートを使います。

  • ほかのタグから独立して動きます。ページにほかの Meta Pixel があっても、設定したピクセルに、設定したイベントだけが送られます。
  • 同じピクセル ID を 2 回 init しないため、テンプレートのタグが複数あっても二重に登録されません。
  • コードを書かないため、貼り間違いや書き換え漏れが起きません。

手順 1: 新しいタグを作る

GTM のワークスペースで「タグ」→「新規」をクリックします。タグ名を分かりやすい名前 (例: Meta Pixel - PageView) に変え、「タグの設定」の枠をクリックします。

GTM の「名前のないタグ」画面。「タグの設定」と「トリガー」の枠が並んでいる

手順 2: タグタイプで「Meta Pixel」を選ぶ

「ギャラリータグ タイプ」の一覧から「Meta Pixel (facebook)」をクリックします。一覧にない場合は「コミュニティ テンプレート ギャラリー」を開き、Meta Pixel で検索します。

「タグタイプを選択」画面。ギャラリータグ タイプの一覧に「Meta Pixel / facebook」がある

手順 3: 作成者を確認して追加する

作成者が「facebook」で、認証済みのマークが付いていることを確認し、右上の「ワークスペースに追加」をクリックします。名前が似ていても、作成者が違うテンプレートは使わないでください。

「テンプレートの詳細」画面。Meta Pixel、作成者 facebook に認証済みのマークが付いている

手順 4: 権限を確認して追加する

テンプレートが使う権限を確認し、「追加」をクリックします。「スクリプトの挿入」に警告のマークが付きますが、Meta Pixel は Meta のスクリプトを読み込むため、必要な権限です。

テンプレート追加の確認ダイアログ。スクリプトの挿入、グローバル変数へのアクセスなど 5 つの権限が並んでいる

手順 5: ピクセル ID とイベントを設定する

「Facebook Pixel ID (s)」にピクセル ID を入力します。複数のピクセルに送る場合は、カンマ区切りで入力します。「Event Name」で送るイベントを選びます。ページビューなら「Standard」→「PageView」のままにします。

Meta Pixel タグの設定画面。Facebook Pixel ID(s)、Event Name、Consent Granted などの入力欄

次の項目は初期値のまま使わず、社内の方針に合わせて決めます。

項目初期値確認すること
Consent Granted (GDPR)True同意管理ツール (CMP) を使っている場合は、同意状態の変数を指定するか検討します
Opt in to a Meta-enabled Conversions API integrationオンMeta 側でコンバージョン API 連携を設定してよいか、運用の担当者と確認します
Enable Advanced Matchingオフメールアドレスなどの顧客情報を送るかどうか。送る場合はプライバシーポリシーとの整合を確認します

手順 6: トリガーを設定して公開する

トリガーに「All Pages (すべてのページ)」を選んで保存します。購入完了などのイベント用のタグは、そのページだけで配信されるトリガーを作ります。プレビューで動作を確認してから (公開前の確認)、公開します。

PageView 用と、購入 (Purchase) などのイベント用でタグを分けます。どのタグにも同じピクセル ID を入力して構いません。init は最初の 1 回だけ行われます。

方法 2: カスタム HTML では trackSingle を使う

テンプレートで対応できない事情があり、カスタム HTML タグに基本コードを書く場合は、fbq('track', …) を使わず、送信先のピクセル ID を指定する trackSingle を使います。

送るイベント基本コードのまま (使わない)書き換え後
標準イベント (PageView、Purchase など)fbq('track', 'PageView')fbq('trackSingle', 'ピクセルID', 'PageView')
カスタムイベントfbq('trackCustom', 'Step4')fbq('trackSingleCustom', 'ピクセルID', 'Step4')

PageView 用のタグ (基本コード)

<script>
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');

  fbq('init', '111111111111111');
  // track ではなく trackSingle。送信先のピクセル ID を必ず書く
  fbq('trackSingle', '111111111111111', 'PageView');
</script>
  • 111111111111111 は自社のピクセル ID に置き換えます。init と trackSingle の ID は同じものにします。
  • Meta の基本コードに含まれる <noscript> の部分は貼りません。GTM は JavaScript で動くため、<noscript> は機能しません。
  • 「詳細設定」→「タグの配信オプション」は「1 ページにつき 1 回」にします。

購入などのイベント用のタグ

<script>
  fbq('trackSingle', '111111111111111', 'Purchase', {
    value: {{購入金額}},
    currency: 'JPY'
  });
</script>
  • 二重の波かっこで囲んだ「購入金額」は GTM の変数です。実際の変数名に置き換えます。
  • このタグは、基本コードのタグより後に動く必要があります。「詳細設定」→「タグの順序付け」で、「このタグが配信される前にタグを配信」に PageView 用のタグを指定します。
カスタム HTML は、ほかのタグの影響を受けることがあるtrackSingle にすれば、自社のイベントがほかのピクセルに流れることは防げます。ただし、同じページの別のタグ (別の GTM コンテナや、サイトに直接書かれたタグを含む) が fbq('track', …) を使っていると、そのイベントが自社のピクセルにも届くことがあります。ほかのタグから独立させたい場合は、方法 1 のテンプレートを使ってください。

公開前の確認

GTM のプレビューでサイトを開き、次の 3 点を確認します。

確認すること確認方法正しい状態
タグの配信回数プレビュー画面 (Tag Assistant) の「Tags Fired」Meta Pixel のタグが 1 ページにつき 1 回だけ配信されている
ピクセルごとのイベントMeta Pixel Helper を開き、購入などのイベントも実際に発生させるピクセル ID ごとに、各イベントが 1 件ずつ。重複の警告が出ていない
Meta 側の受信Meta イベントマネージャの「テストイベント」意図したピクセルにだけイベントが届いている

よくある失敗

症状原因対処
コンバージョンが実際より多いサイトに直接書いた基本コードと GTM のタグが両方ある、またはどこかで track を使っているどちらか一方にします。GTM に移す場合は、サイトの基本コードを削除します
別の代理店のピクセルに自社のコンバージョンが入るカスタム HTML で fbq('track', …) を使っているtrackSingle に書き換えるか、テンプレートに置き換えます
テンプレートとカスタム HTML の両方で、同じイベントを送っている移行の途中のタグが残っている古いカスタム HTML タグを一時停止し、確認してから削除します
カスタム HTML で入れたピクセルのイベントが多い別の GTM コンテナ、サイトに直接書かれたコード、プラグインが track を使っている自社のピクセルをテンプレートに置き換えます。ほかのタグの影響を受けなくなります
購入イベントが届かないイベント用のタグが、基本コードより先に動いているタグの順序付けで、PageView 用のタグを先に配信します

参考リンク

GTM と GA4 の設定、計測の見直しもお引き受けしています。

  • 記事や技術資料の内容についてのご質問とサポートは、保守・サポートのご契約、またはスポットでのご契約をいただいたうえでお受けしています。無償でのサポートは行っておりません。
  • 記事や技術資料の内容は、公開の時点の情報にもとづいて作成しています。内容の正確性、完全性、最新性を保証するものではなく、内容にもとづいて行った作業の結果について、弊社は責任を負いかねます。設定や変更は、ご自身の責任で、検証用の環境で確かめてから行ってください。
  • 記事や技術資料の内容について、ご指摘や誤りにお気づきの点がありましたら、その他のお問い合わせからお知らせください。

ご相談・お問い合わせ

内容が固まっていない段階からご相談いただけます。各分野のプロフェッショナルがご対応いたします。ご相談・お見積もりは無料です。