Googleタグマネージャー(GTM)は、サイトに入れるタグをまとめて管理する道具です。最初にコンテナを作ってサイトに2つのコードを入れておけば、あとのタグはGTMの画面だけで足したり直したりできます。この記事では、GTMのアカウントとコンテナを作り、サイトにコードを入れ、Googleアナリティクス4(GA4)のタグを1つ置いて公開するところまでを、1つのサイトを例に通して書きます。読み終わると、GA4のページビューがGTM経由で届き、誰が公開できるかまで決まった状態になります。GA4のプロパティと測定IDはできている前提です。GTMが何をするものかは「GTM(Googleタグマネージャー)とは:タグを直接貼るのと何が違うか」に書いています。
例は全記事共通の「サンプル料理教室」です。スタッフ6名ほどの予約制の料理教室で、ホームページ sample-cooking.example はWordPressで外部の制作会社が作ったものです。テーマの直しは制作会社に頼み、GTMの中はこちらで触る、という分担で進めます。画面の名前は2026年10月時点のものです。
先に決めること
ここを決めずに作り始めると、あとで作り直しになったり、辞めた人の個人アカウントにコンテナが残ったりします。
誰のGoogleアカウントで作るか
GTMのアカウントを最初に作った人が、そのアカウントの「管理」権限を持ちます。担当者の個人のGmailで作ると、その人が辞めたときに権限の引き継ぎで困ります。サンプル料理教室では、GA4を作ったときと同じ、教室の管理用のGoogleアカウント(代表が持つもの)で作り、そこから担当者を招待します。制作会社や広告代理店のアカウントで作ってもらうのは避けます。契約が終わったときに、こちらで中身を動かせなくなるからです。
アカウントとコンテナをいくつ作るか
アカウントは会社に1つ、コンテナはサイトに1つが基本です。サンプル料理教室なら、アカウント「サンプル料理教室」の中にコンテナ「sample-cooking.example」を1つ作ります。外部の予約システム reserve.example は別の会社のサービスなので、こちらのコンテナのコードは入れられません。予約システム側の計測は「クロスドメイン計測:予約システムや決済ページへ移るサイト」で扱います。
GA4がいまサイトに直接入っていないか
GA4を先に入れたとき、測定IDのコード(gtag.js)をテーマに直接貼っていることがよくあります。その状態でGTMにもGA4のタグを置くと、同じページビューが2回送られます。GTMでGA4を入れるなら、直接入っているほうは最後に外します。どこに入っているかを先に確かめておくと、外すときに迷いません。確かめ方は手順7に書きます。
コードを誰が貼るか
GTMのコードはサイトのすべてのページのHTMLに入れる必要があります。WordPressならテーマかプラグインで入れます。サンプル料理教室では制作会社にテーマへ入れてもらいます。依頼するときに渡すもの(コンテナIDと2つのコード、入れる場所)は手順2にまとめました。
公開できる人を誰にするか
GTMは公開ボタンを押した瞬間に、すべてのページへ変更が出ます。間違ったタグを公開すると、計測が止まったりサイトの表示が崩れたりします。公開できる人は1〜2人に絞ります。サンプル料理教室では代表と計測の担当者の2人だけにします。詳しくは「ワークスペースとユーザーの権限」の節に書きます。
この記事で作るものの一覧
| 作るもの | サンプル料理教室での値 | どこで作るか |
|---|---|---|
| GTMアカウント | アカウント名「サンプル料理教室」、国「日本」 | GTMの「アカウントを作成」 |
| コンテナ | コンテナ名「sample-cooking.example」、ターゲット プラットフォーム「ウェブ」 | アカウント作成と同じ画面 |
| コンテナID | GTM-XXXXXXX | ワークスペースの右上に出る |
| headのコード | <head> のできるだけ上に入れる <script> | 制作会社がテーマに入れる |
| bodyのコード | <body> の直後に入れる <noscript> | 制作会社がテーマに入れる |
| GA4のタグ | タグの種類「Google タグ」、タグ ID G-XXXXXXXXXX | GTMの「タグ」→「新規」 |
| トリガー | 「Initialization – All Pages」 | タグの「トリガー」欄 |
| 最初のバージョン | 「2026-10-28 GA4 Googleタグ追加」 | 右上の「公開」→「バージョンの公開と作成」 |
| ユーザー | 公開は2人、制作会社は読み取り | 「管理」→「ユーザー管理」 |
手順
手順1:アカウントとコンテナを作る
- tagmanager.google.com を開き、教室の管理用のGoogleアカウントでログインします。
- 左上の「アカウント」タブを開き、右上の「アカウントを作成」を押します。「新しいアカウントの追加」の画面が開き、「アカウントの設定」「コンテナの設定」「ターゲット プラットフォーム」が1つの画面に並びます。
- 「アカウントの設定」で、アカウント名に「サンプル料理教室」と入れ、国は「日本」を選びます。
- 「Google や他の人と匿名でデータを共有」は任意です。チェックしなくても使えます。
- 「コンテナの設定」で、コンテナ名に「sample-cooking.example」と入れます。サイトの最上位のURLにしておくと、あとでどのサイトのコンテナか迷いません。
- 「ターゲット プラットフォーム」は「ウェブ」を選びます。ほかの「iOS」「Android」「AMP」「Server」はこの教室では使いません。
- 「作成」を押し、利用規約に同意します。

作成が終わると、コードを貼る場所を示す「Google タグ マネージャーをインストール」の画面が出ます。閉じてしまっても、ワークスペースの右上に出ている GTM- で始まるコンテナIDを押せば、同じ画面がもう一度出ます。
同じアカウントに2つ目のサイトのコンテナを足すときは、「アカウント」タブでアカウント名の横のメニューから「コンテナを作成」を選びます。
手順2:2つのコードをサイトに入れる
GTMのコードは2つに分かれています。1つ目はJavaScriptの <script> で、ページの <head> のできるだけ上に入れます。2つ目は <noscript> で、<body> の開始タグの直後に入れます。どちらもサイトのすべてのページに入れます。

入れるコードの形は次のとおりです。実際には GTM-XXXXXXX の部分が自分のコンテナIDになったものを、画面からそのままコピーして使います。手で打ち直すと1文字違いが起きます。
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
サンプル料理教室では、制作会社に次のように頼みます。
- コンテナIDは
GTM-XXXXXXXです。 - 添付のコードの1つ目を全ページの
<head>のできるだけ上に、2つ目を<body>の開始タグの直後に入れてください。 - テーマの更新で消えないよう、子テーマに入れてください。
- 入れ終わったら日時を教えてください。こちらでプレビューを確かめます。
制作会社がテーマのfunctions.phpで入れる場合は、次のような形になります。wp_body_open はWordPress 5.2で追加された、<body> の開始タグの直後で動くフックです。古いテーマはこのフックを呼んでいないことがあるので、その場合はテーマのheader.phpの <body> 直後に直接書いてもらいます。
<?php
// 子テーマの functions.php に追記する例
add_action( 'wp_head', function () {
?>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');</script>
<!-- End Google Tag Manager -->
<?php
}, 1 );
add_action( 'wp_body_open', function () {
?>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<?php
} );
wp_head の最後の 1 は、ほかのプラグインより先に出すための優先度です。WordPressのプラグインでGTMを入れる方法や、Shopify・STUDIOの場合は「WordPress・Shopify・STUDIOにGA4とGTMを入れる:サービスごとの入れ方」に分けて書いています。
入れ終わったら、「Google タグ マネージャーをインストール」の画面でサイトのURLを入れて「テスト」を押すと、コンテナが見つかるかを確かめられます。ブラウザでページのソースを開き、GTM-XXXXXXX を検索して、トップ以外のページ(ブログ記事や体験レッスン申込のサンクスページ /thanks/)にも入っているかも見ておきます。
手順3:GA4の測定IDを確かめる
GTMに入れるのはGA4の測定IDです。
- GA4の「管理」を開きます。
- 「データの収集と修正」の「データ ストリーム」を開きます。
- 「ウェブ」タブで sample-cooking.example のストリームを選びます。
- 「ストリームの詳細」の最初の行にある
G-で始まるIDが測定IDです。右のコピーのボタンでコピーします。

手順4:GA4のタグを1つ置く
- GTMの「ワークスペース」タブで左の「タグ」を開き、「新規」を押します。
- 左上の「名前のないタグ」を押して、名前を「GA4 – Googleタグ」にします。
- 「タグの設定」を押し、タグの種類の一覧から「Google タグ」を選びます。一覧で見つからないときは、一覧の上の検索に「Google タグ」と入れます。選ぶと、タグの種類の欄に「Google タグ」と小さく「Google」と出ます。
- 「タグ ID」の欄に手順3でコピーした
G-XXXXXXXXXXを貼ります。 - その下の「設定」「共有イベントの設定」「詳細設定」は、最初は何も触りません。空のままで、ページビューと拡張計測機能のイベントが送られます。
- 「トリガー」を押し、「Initialization – All Pages」(日本語表示では「初期化 – すべてのページ」)を選びます。
- 右上の「保存」を押します。

トリガーを「Initialization – All Pages」にするのは、初期化のトリガーが同意の初期化の次に早く動くからです。あとでクリックやフォーム送信のタグを足したとき、Googleタグがそれより先に読み込まれていれば、GA4への送り先や共通の設定が先に決まります。「All Pages」(ページビューのトリガー)でもページビューは届きますが、あとからイベントのタグを増やすことを考えて、最初から初期化のほうにしておきます。
GA4のヘルプでは、Googleタグはページに読み込まれると、GA4の共通の設定を宣言し、GA4のCookieを設定し、自動で集めるイベントと拡張計測機能のイベントを送る、と説明されています。ページビューのために別のタグを作る必要はありません。
タグの種類には、「Google タグ」とは別に「Google Analytics(Google アナリティクス)」もあります。2026年10月時点の画面では、選ぶと欄の名前が「Measurement ID」になり、読み込みが速いといった説明が出ます。ヘルプの英語版ではこちらが推奨です。この記事は日本語版のヘルプの手順に合わせて「Google タグ」で進めます。どちらでもGA4にデータは届き、測定IDとトリガーの入れ方も同じです。大事なのは、1つのサイトでGA4のタグをどちらか1つにすることです。
手順5:プレビューで確かめる
公開する前に、自分のブラウザだけでタグが動くかを見ます。
- 「ワークスペース」タブの右上の「プレビュー」を押します。新しいタブでTag Assistantが開きます。
- サイトのURL
https://sample-cooking.example/を入れます。 - 「接続」を押します。サイトが別のウィンドウで開き、右下に「接続済み」と出ます。
- Tag Assistantのタブに戻り、「続行」を押します。
- 左の一覧で「Initialization」を選び、「GA4 – Googleタグ」が発火したタグの欄(英語表示では Tags Fired。この語はヘルプにないので画面で確かめてください)に出ているかを見ます。
- サイトでレッスン紹介やブログに移り、ページを変えても毎回動いているかを見ます。

GA4の側でも、DebugViewでイベントが届いているかを見られます。プレビューの見方とDebugViewの使い方は「公開前の確認:GTMのプレビューとGA4のDebugView」で詳しく書きます。終わるときは、デバッグ画面の左上の「X」を押し、「デバッグを停止」を押します。
手順6:公開してバージョン名を付ける
- 「ワークスペース」タブの右上の「公開」を押します。
- 送信設定で「バージョンの公開と作成」を選びます。公開せずに保存だけしたいときは「バージョンの作成のみ」です。
- 「バージョン名」に「2026-10-28 GA4 Googleタグ追加」と入れます。
- 「バージョンの説明」に、何をなぜ変えたかを1〜2行で書きます。例は「GA4のGoogleタグをGTMから配信。テーマに直接入っていたgtag.jsは同日に制作会社が削除」。
- 画面の下に並ぶ変更の一覧で、前のバージョンから何が変わったかを確かめます。
- 右上の「公開」を押します。

バージョン名は、日付と変えた中身が一目で分かる形にそろえます。名前がないと、数字がおかしくなったバージョンを探すときに1つずつ開くことになります。実際に運用していると、名前のないバージョンが20個並んでいて、計測が止まった日の原因を追えないことがあります。公開とバージョンの運用は「公開前の確認:GTMのプレビューとGA4のDebugView」にも続きを書いています。
公開したら、GA4の「レポート」→「リアルタイム」を開き、自分のスマホでサイトを開いて1人増えるかを見ます。
手順7:直接入っていたGA4のタグを外す
GTMでGA4を入れたあと、テーマに直接入っていたgtag.jsが残っていると、同じページビューが2回送られます。GoogleのGA4の開発者向けドキュメントには、タグ マネージャーを使っているなら、gtag.jsでサイトに追加のコードを入れる必要はない、と書かれています。
直接入っているかは、次のどれかで分かります。
- ブラウザでページのソースを開き、
gtag/js?id=G-を検索する。出てきたら直接入っています。 - Tag Assistantで接続したとき、GTMのコンテナとは別に同じ
G-XXXXXXXXXXのタグが見つかる。 - WordPressの管理画面で、GA4の測定IDを入れる欄があるプラグインやテーマ設定がないかを見る。
外す順番は、GTMのタグを公開してから、直接のタグを外す、です。逆にすると、直接のタグを外してからGTMを公開するまでの間、計測がまったく取れません。サンプル料理教室では、GTMを公開したらすぐにテーマのgtag.jsを外してもらいます。重なった時間の分だけ、その日のページビューが少し多く出ます。外した日時はバージョンの説明に書いておきます。
| どこに入っていたか | 外し方 |
|---|---|
| テーマのheader.phpやfunctions.php | 制作会社にgtag.jsの部分だけ消してもらう。GTMのコードは消さない |
| GA4を入れるプラグイン | プラグインの設定で測定IDを空にするか、GA4の出力を止める |
| テーマの設定画面の「アクセス解析」の欄 | 欄の測定IDを消して保存する |
| ほかの人が作った別のGTMコンテナ | そのコンテナのGA4タグを止めるか、コンテナごと外す |
外したあとは、もう一度ページのソースで gtag/js?id=G- が出てこないことと、プレビューでGA4のタグが1回だけ動くことを見ます。
ワークスペースとユーザーの権限
ワークスペース
ワークスペースは、公開前の変更を置いておく下書きの場所です。最初は「Default Workspace」が1つあります。無料のGTMでは、Default Workspaceを含めて同時に3つまで作れます。サンプル料理教室のように触る人が1〜2人なら、Default Workspace 1つで足ります。広告代理店にGoogle広告やMeta広告のタグを足してもらうときだけ、「広告タグ追加(代理店)」のような名前で別のワークスペースを作ってもらうと、こちらの作業と混ざりません。
ワークスペースは、公開すると追加で作ったものが削除され、Default Workspaceは作り直されます。作業途中で長く放っておいたワークスペースがあると、ほかのワークスペースで公開した変更との食い違いが出ます。使い終わったワークスペースは公開するか消して、3つの枠を空けておきます。
ユーザーと権限
権限は、アカウントにかかるものと、コンテナにかかるものの2段です。アカウントの権限は「管理」か「ユーザー」で、「管理」はコンテナを作ったり、ほかの人の権限を変えたりできます。コンテナの権限は「公開」「承認」「編集」「読み取り」の4つのチェックボックスで選びます。どれにもチェックを付けなければ、その人にはコンテナが見えません(アクセス権なし)。
| コンテナの権限 | 画面の説明 | サンプル料理教室で付ける人 |
|---|---|---|
| 公開 | コンテナのバージョンを公開できる | 代表と計測の担当者 |
| 承認 | コンテナのバージョンを作成できる。公開はできない | 使わない |
| 編集 | ワークスペースの作成と、タグ・トリガー・変数の編集ができる。ユーザー権限は変えられない | 広告代理店 |
| 読み取り | タグ・トリガー・変数を見るだけ | 制作会社 |
| チェックなし | コンテナが見えない | ほかのスタッフ |
ユーザーを足す手順は次のとおりです。
- GTMの上の「管理」を開きます。
- コンテナの権限だけ渡すなら、「コンテナ」の列の「ユーザー管理」を開きます。アカウントごと渡すなら「アカウント」の列の「ユーザー管理」です。
- 右上の追加のアイコンから、「招待状の送信」の画面を開きます。
- 相手のGoogleアカウントのメールアドレスを入れます。
- 「コンテナの権限」でチェックを付け、右上の「招待する」を押します。

公開できる人を絞る理由は、公開した変更がその場で全ページに出るからです。広告代理店に「編集」を渡しておけば、代理店はワークスペースでタグを作り、プレビューまで確かめられます。公開はこちらで中身を見てから押します。「承認」という権限名から、誰かの承認がないと公開できない仕組みを想像しがちですが、承認の流れが使えるのは有料のタグ マネージャー 360だけです。無料版では、公開できる人を絞ることがそのまま承認の代わりになります。
もう1つ、アカウントの「管理」を持つ人は、「管理」→「アカウント設定」で「一部の操作で 2 段階ログイン認証を要求する」をオンにしておきます。オンにすると、カスタムHTMLタグやカスタムJavaScriptを作る・直すときと、ユーザーの設定を変えるときに、2段階認証が求められます。誰かのパスワードが漏れても、そのままサイトにスクリプトを入れられることを防げます。
辞めた人や契約が終わった会社は、同じ「ユーザー管理」から外します。権限の棚卸しは「GA4・GTMの権限:制作会社・広告代理店に渡すとき、辞めた人を外すとき」で扱います。
応用
データレイヤーを使うときはGTMのコードより上で宣言する
あとでフォームの送信内容やページの種類をGTMに渡したくなったら、データレイヤーを使います。そのときは、GTMのコードより上で次のように宣言します。dataLayer = [] と書くと、それより前に入っていた値が消えます。
<script>
window.dataLayer = window.dataLayer || [];
</script>
<!-- この下に Google Tag Manager のコード -->
dataLayer は大文字と小文字を区別します。datalayer.push() と書くと動きません。データレイヤーの使い方は「GTMのトリガーと変数:組み込み変数とデータレイヤーの使い分け」に書いています。
同意バナーを入れるならトリガーの順番を覚えておく
GTMのページを開いたときのトリガーには、早い順に「同意の初期化」「初期化」「ページビュー」「DOM Ready」「ウィンドウの読み込み」があります。同意バナー(Cookieの同意を取るツール)を入れるときは、そのタグを「同意の初期化 – すべてのページ」(英語表示では Consent Initialization – All Pages)に置き、GA4のGoogleタグはその後の「初期化 – すべてのページ」(Initialization – All Pages)に置きます。最初からGoogleタグを初期化のトリガーにしておくと、この順番を後から組み替えなくて済みます。日本の小さな会社にどこまで要るかは「同意モードとCookieの扱い:日本の小さな会社に何が必要か」で扱います。
前のバージョンに戻す
公開したあとに表示が崩れたら、まず戻します。「バージョン」を開き、戻したいバージョンの行の右の「⋮」メニューから「公開」を選ぶと、そのバージョンがすぐ公開されます。「最新バージョンに設定」は、ワークスペースの中身をそのバージョンに置き換えるだけで、公開はしません。原因を直してから公開し直すときに使います。
次に置くタグ
GA4のGoogleタグが動いたら、体験申込の完了、電話番号のボタン、LINEの友だち追加のボタンを数えるタグを足していきます。ボタンのクリックは「GTMでボタンのクリックを計測する:電話・LINE追加・資料請求」、フォームは「GTMでフォーム送信を計測する:サンクスページ型と送信イベント型」で書きます。
できないことと、その代わり
| できないこと | 代わりの手 |
|---|---|
| GTMのコードを入れていないページは計測できない | 外部の予約システムには入れられない。予約システム側の計測機能を使うか、「クロスドメイン計測:予約システムや決済ページへ移るサイト」の方法でつなぐ |
| GTMを入れただけでは何も計測されない | コンテナは空で始まる。GA4のタグを置いて公開して、はじめてデータが届く |
| 過去の分をあとから取り直せない | 二重計測や取りこぼしがあった期間は、その日付をメモしておき、比べるときに除く |
| 無料版では承認の流れを組めない | 公開の権限を1〜2人に絞り、ほかの人には「編集」までを渡す |
| ワークスペースは無料版で同時に3つまで | 使い終わったワークスペースは公開するか消す |
| サイトのフォームや文言の不具合はGTMでは直らない | サイト側の直しは制作会社に頼む。GTMのカスタムHTMLでページを書き換える使い方はしない |
サイトの見た目やフォームの動きまでGTMで変えると、制作会社が直したときに食い違って壊れます。GTMは計測と広告のタグを入れる場所と決めておきます。
よく詰まるところ
| 症状 | 原因 | 直し方 | ||
|---|---|---|---|---|
| プレビューでは動くのに、GA4のリアルタイムに出ない | 公開していない。保存しただけでは本番に出ない | 右上の「公開」→「バージョンの公開と作成」→「公開」まで押す | ||
| プレビューで「接続」してもつながらない | サイトにGTMのコードが入っていない、または別のコンテナIDが入っている | ページのソースで GTM- を検索し、ワークスペース右上のIDと一致するかを見る | ||
| 一部のページだけ数字が出ない | ブログやサンクスページなど、別のテンプレートにコードが入っていない | トップ以外のページのソースも確かめ、制作会社に全テンプレートへの追加を頼む | ||
| ページビューがGTM導入の日から2倍近くになった | テーマのgtag.jsが残っていて二重に送っている | 手順7のとおり直接のタグを外す | ||
| GA4に何も届かない | タグ ID に別のプロパティの測定IDや、古いUAのID(UA-で始まる)を入れた | GA4の「データ ストリーム」で測定IDをコピーし直して貼る | ||
| 制作会社が入れたのに、ソースにコードが出ない | キャッシュのプラグインやサーバーのキャッシュが古いHTMLを返している | キャッシュを消してもらい、ログアウトした状態のブラウザで見直す | ||
| headのコードがbodyに、bodyのコードがheadに入っている | 2つのコードを取り違えた | 1つ目の <script> をheadの上、2つ目の <noscript> をbodyの直後に入れ直してもらう | ||
| 右上の「公開」を押しても公開まで進めない | 自分のコンテナの権限が「編集」か「承認」 | 公開の権限を持つ人に公開してもらうか、権限を見直してもらう | ||
| プレビューでサイトの表示が崩れる | URLに付くデバッグ用の文字列をサイトが受け付けない | プレビューの開始画面で「URL にデバッグ シグナルを含める」のチェックを外して接続する | ||
| 公開したら「ワークスペースが最新ではない」と出る | 別のワークスペースで先に公開された | ワークスペースを更新し、食い違いを確かめてから公開する | ||
| プレビューで自分のアクセスが数字に入る | プレビュー中もGA4にデータは届く | 社内のアクセスは「自分と社内のアクセスを除外する:IPアドレスの除外と内部トラフィック」の設定で除く | ||
| データレイヤーの値がGTMで読めない | GTMのコードより下で dataLayer = [...] と書いて上書きしている | `window.dataLayer = window.dataLayer | []; で宣言し、値は dataLayer.push()` で足す |
次にやること
- 公開前の確認:GTMのプレビューとGA4のDebugView
- GTMでボタンのクリックを計測する:電話・LINE追加・資料請求
- WordPress・Shopify・STUDIOにGA4とGTMを入れる:サービスごとの入れ方
- GTM(Googleタグマネージャー)とは:タグを直接貼るのと何が違うか