
Google Analytics 4(GA4)でサイトのデータを見ていると、「この記事、どこまで読まれているんだろう」という気持ちが出てきました。GA4でページビューを確認しても、どのリンクへの移動が多いのか、ページのどこまで読まれているかはわかりません。
そこで取り組んだのが、Googleタグマネージャー(GTM)を使った独自イベントの設定です。具体的には、内部リンククリックと50%スクロールの2つをGA4に送る設定をしました。
私はGTMなどの専門家ではないので、設定中に何度も詰まりました。この記事は、そのときの記録をもとに書いています。「こういうところで迷った」という体験をそのまま伝えることで、同じように挑戦しようとしている方の参考になればと思っています。
非エンジニアがClaude codeとGA4を連携させるまでの記録を綴った記事もあります。興味がある方は、ぜひ読んでみてください。
GA4標準ではなく、GTMで計測しようと思った理由
GA4にはもともと、いくつかのイベントが自動で計測される仕組みがあります。「拡張計測」と呼ばれる機能で、スクロールやクリックも一定の条件で取れるようになっています。
ただ、自分が見たいデータとは、少し違いがありました。
クリックについて:GA4の拡張計測のクリックイベントは、主に外部リンク(別ドメインへのリンク)を対象にしています。サイト内の別記事・別ページへ移動する「内部リンク」のクリックは、標準のままでは確認できませんでした。どの記事からどの記事へ読者が流れているのかを見たければ、GTMで独自に設定する必要があります。
スクロールについて:GA4の拡張計測のスクロールイベントは、基本的に「90%到達時」に発火します。つまり、記事をほぼ最後まで読んだ人の記録しか残りません。「記事をある程度まで読み進めているか」を知りたい場合、90%では遅すぎます。50%スクロールのデータがあれば、「半分までスクロールしているか」を見る判断材料になります。
こういった「標準では見づらい行動」を計測するために、GTMで自分のイベントを作ることにしました。
最初につまずいたのは、GTMの設定ではなく権限だった
GTMを開いたとき、最初に違和感を覚えました。他の方の解説記事に掲載されているGTMの画面と、自分が見ている画面が明らかに違っていたのです。
(参考に見ていたページ:GA4で内部リンクのクリック数を確認する方法)
その方の画面には「タグ」「トリガー」「変数」などのタブがあるのに、自分の画面ではそれが表示されていませんでした。最初は「自分の操作が間違っているのかな」「何か設定を飛ばしたのかな」と思っていました。

しかし原因は、GTMの「権限」の問題でした。
GTMには、アカウントレベルとコンテナレベルがあり、それぞれに権限の種類があります。
権限の種類 | できること |
|---|---|
読み取り | 設定を見る |
編集 | タグやトリガーを作成・変更 |
承認 | 他ユーザーが編集した内容を承認 |
公開 | バージョン・ワークスペースの作成・公開 |
私に付与されていたのは「読み取り」だったため、タグやトリガーを作成する画面自体が表示されない状態だったのです。
私は、こうした権限まわりの確認を後回しにしてしまいました。「設定できない」と思ったとき、まず自分の操作や理解を疑いますが、権限の確認までするのがおすすめです。
GTMの権限確認は、管理画面の「管理」→「ユーザー管理」から行います。GTMの管理者に依頼して、編集以上の権限を付与してもらうことで、設定作業ができるようになります。
内部リンククリック用のタグを作成した
権限の問題が解決してから、実際の設定作業に入りました。まず取り組んだのは、内部リンククリックの計測です。
タグ・トリガー・変数の役割を整理する
GTMを触りはじめた頃、「タグ」「トリガー」「変数」という3つの言葉が頭の中で混ざっていました。ひとつひとつの意味を整理してから作業すると、設定の流れが見えてきます。
タグ:GA4に「何を送るか」です。イベント名やパラメータをここで定義します。
トリガー:「いつ送るか」の条件です。クリックされたとき、スクロールしたときなどです。
変数:タグやトリガーが使う「そのときの情報」です。クリックされたURLやクリックされたテキストなど、発火した瞬間の状況を取り出すものです。
設定の流れ
内部リンククリックのタグを作る大まかな手順は次のとおりです。
変数を追加する
次の手順2で必要になる「変数」を予め追加しておきます。右上の「設定」ボタンから、以下の組み込み変数を追加してください。
ページ
・Page URL
・Page Hostname
・Page Path
・Referrer
ユーティリティ
・Event
クリック
・Click Element
・Click Classes
・Click ID
・Click Target
・Click URL
・Click Text
スクロール
・Scroll Depth Threshold
追加できたら、以下のような画面になります。

2. トリガーを設定する
タグをいつ発火させるかを決めます。右上の「新規」から作成を始め、名前は「サイト内リンククリック」としました。
トリガーのタイプは「クリック - リンクのみ」を選択してください。
「イベント発生時に~このトリガーを配信します。」という部分を次に設定します。
左端の枠をクリックすると、手順1で追加した変数が表示されます。その中の「{{Click URL}}」を選択します。真ん中の枠は「含む」を選択してください。右端は「https://example.com/」のように、自分のサイト内のリンクに共通するドメインを入力します。
GTMはクリックされたURLを自動で取得します。その値が自分のサイトURLを含むかどうかで、内部リンククリックを判定する仕組みです。

ここまでできたら、右上のボタンから保存してください。
3. タグを作成する
GTM画面左側の「タグ」を開き、新しいタグを作成します。右上の「新規」から作成を始め、名前は「click_Inpagelink」としました。この名前が表示されるイベントの名前になります。スペースは使えないので、アンダーバーでつなぎます。
タグの種類は「Googleアナリティクス: GA4イベント」を選択します。
測定IDは、GA4から確認します。GA4のページ左下にある歯車マークの「管理」→「データの収集と修正」→「データストリーム」の中の測定ID「G-xxxxxxxxxx」をコピーして貼り付けます。
イベント名は「click_Inpagelink」としました。

次に、イベントパラメーターの中を設定します。
「Event Settings Variable」は「なし」のままにしてください。
「イベント パラメータ」は「Click_URL」と入力してください。(※空白は使わないことをおすすめします。確認でGA4を使う際に、設定できなくなるため。)
その右隣の「値」は、手順1で追加しておいた変数である「{{Click URL}}」を選択します。
最後に、トリガーの選択をします。手順2で作っておいた「サイト内リンククリック」というトリガーを選択してください。

ここまでできたら、右上の青いボタンから保存してください。
設定後の確認方法は、後ほど説明します。
変数について詰まったこと
私は最初「変数を作る」というのは、自分でコードを書くような操作が必要なのかと思っていました。しかし、「Click URL」のような基本的な変数はGTMにあらかじめ用意されているものがあります。「変数」メニューの「組み込み変数を設定」から有効にするだけで使えます。
「変数を自分で一から作る」のではなく、「すでにある変数を有効にして使う」ということが分かり、身構えずに済みました。
50%スクロール用のタグを作成した
次に取り組んだのが、50%スクロールの計測です。こちらはGA4標準のスクロール計測(90%到達)では足りない部分を補うための設定です。
内部リンククリックとの違い
設定の流れは内部リンククリックと似ています。大きく違うのは「トリガー」の部分です。
内部リンククリック:「リンクがクリックされたとき」に発火
50%スクロール:「ページの50%の位置までスクロールされたとき」に発火
イベントは別々ですが、タグの作り方は共通しています。
設定の流れ
1. 変数を追加する
内部リンククリックの設定時に既に必要な変数を追加済みのため、ここでは操作不要です。
2. トリガーを設定する
右上の「新規」から作成を始め、名前は「スクロール50%」としました。
トリガーのタイプは「スクロール距離」を選択してください。
「縦方向スクロール距離」にチェックを入れ、「割合」を選び、「50」%とします。(もし25%到達も計測したい場合は、同じ手順で「割合」を「25」に設定したトリガーを作成します。)
「このトリガーの発生場所」は「すべてのページ」を選択します。

これで、ページを50%まで読んだタイミングでトリガーが発火します。
3. タグを作成する
GTMの「タグ」から新しいタグを作成します。右上の「新規」から始め、名前は「GA4_scroll_50」としました。タグの種類は「Googleアナリティクス: GA4イベント」を選択します。
測定IDは、GA4から確認します。画面の左下にある歯車マークの「管理」タブ→「データの収集と修正」→「データストリーム」の中の測定ID「G-xxxxxxxxxx」をコピーして貼り付けます。
イベント名は「scroll_50」としました。

次に、イベントパラメータの中を設定します。
「Event Settings Variable」は「なし」のままにし、「イベント パラメータ」は「percent_scrolled」と入力してください。
その右隣の「値」は、手順1で追加していた変数「{{Scroll Depth Threshold}}」を選択します。
最後にトリガーは、手順2で作っておいた「スクロール50%」を選択してください。
GA4で反映確認するときに迷ったこと
タグの設定が終わったとき、「本当にGA4で計測できているのか」を確認する方法が分かりませんでした。ここが一番迷ったポイントです。
確認は3段階で進めるのがおすすめ
設定後の確認は、次の順番で進めると混乱が少ないです。
1. GTMプレビューで発火を確認する(設定直後から確認可能)
タグが設定通りに動くかどうかをまず確認します。GTMの画面右上側にある「プレビュー」ボタンを押します。新しいタブで、プレビューモードを開始するための画面が表示されます。URLが自サイトのものかを確認し、「リンク」ボタンを押すと、プレビューが開始されます。

開始されると、新しいページで自分のサイトのトップページが表示されます。Tag Assistantの画面には、プレビュー対象ページで発生したイベントが表示されます。
プレビュー中のサイトページをスクロールしたり、ページ遷移したりすると、Tag Assistantの画面の「概要」と書かれた下に、そのページ内での動きがどんどん記録されていきます。

この時に、発生したイベント名をクリックすると、詳細を確認できます。例えば、以下の画像内に表示されているイベント番号「14」をクリックすると、タイトルは「スクロール距離」となっており、「配信されたタグ」が「GA4_scroll_50」となっています。ページの半分ほどまでスクロールをしてからこれが出てきていたので、タグは正しく動いています。

2. GA4のリアルタイムまたはDebugViewで確認する(設定直後から確認可能)
Google Chromeの拡張機能にある「Google Analytics Debugger」を入れてください。

Chromeを開いて、今インストールした拡張機能をクリックすると、デバッグモードがONになります。(その拡張機能のアイコンの「ON」の文字が出ていれば有効になっています。)その状態で、サイトページを開いておいてください。
次に、GA4の画面左下の歯車マークの「管理」→「データ表示」→「Debug View」を開いてください。ここで、デバッグモードをONにした後で自分が閲覧したサイトのページやそのデータを確認することができます。(私の環境では、DebugViewにイベントが表示されるまで少し時間がかかりましたが、少し待つとデータが表示されました。)

内部リンククリックやスクロールをしてみると、Debug Viewの画面に、何時何分何秒に何のイベントが発生したかを見ることができます。中央の枠の中のイベント名をクリックすると、詳細も確認できます。
3. GA4の探索レポートで確認する(設定から24時間以上経過後、確認可能)
GA4の探索レポートにデータが反映されるまでには、数時間〜24時間程度かかり、場合によってはそれ以上かかることもあります。設定直後にここを見ても何も出ないことがあるので、翌日以降に確認してください。
まず先に、カスタムディメンションを設定する必要があります。
GA4を開いて、歯車マークの「管理」→「プロパティ設定」の中の「データの表示」→「カスタム定義」ページを開いてください。右上の「カスタムディメンションを作成」をクリックします。
先に内部リンククリック用から設定します。ディメンション名は「click_URL」としました。
イベントパラメータは、「Click_URL」とします。ここはGTMで設定した、内部リンククリックのタグの「イベントパラメータ」と全く同じ文字列にする必要があります。(※スペースは使えません。)

イベントパラメータの役割を理解しておらず、▼マークを押して出てくる選択肢から、それっぽいのを選んでいて、GA4での計測確認がなかなかできずにいました。それで、カスタムディメンションをさらに作ってみたり、調査したりと、かなり手こずりました。
GTMから送信するイベントパラメータ名と、GA4のカスタムディメンションに登録するイベントパラメータ名で異なる文字列を設定すると、GA4側で対応するパラメータとして認識されません。
右上の「保存」を押すとカスタムディメンションが設定できます。
次に、スクロール割合用のカスタムディメンションを設定します。
ディメンション名は「スクロール割合」、イベントパラメータは「percent_scrolled」(こちらも「スクロール50%」のタグのイベントパラメータと全く同じ文字列にしてください。)とします。

右上の「保存」をクリックして、作成した2つのカスタムディメンションが一覧に表示されていることを確認してください。
カスタムディメンションの設定が完了したら、探索レポートのページを開いてください。「新しいデータ探索を開始する」から空白のページを作成します。
まず、使いたい項目をインポートします。左側の「変数」パネルの「+」ボタンから、以下を追加してください。
ディメンション:「イベント名」「ページパス + クエリ文字列」、「click_URL」「スクロール割合」(これら2つは「カスタム」タブの中にあります)
指標:「イベント数」「セッション」

追加できたら、内部リンククリックのイベント計測を確認するために、以下のように設定します。
手法:自由形式
行:「click_URL」
値:「イベント数」「セッション」
以下の画像のような表が出てくると思います。

デバッグモードで確認した時に、自分で内部リンククリックをしたページが表示されていると思います。これで、どの記事への内部リンクが多くクリックされているかを確認できるようになりました。
(not set)」には、主に「click_URL」パラメータを持たないイベントが含まれます。
次に、スクロール50%のイベントの計測を確認します。
手法:自由形式
行:「ページパス + クエリ文字列」
列:「スクロール割合」
値:「イベント数」「セッション」

これを確認すれば、読者がどの記事で50%地点までスクロールされているかを把握でるので、リライトをする前の判断材料にできそうです。
GA4の拡張計測では、ページの90%地点までスクロールされると、自動的にスクロールイベントが計測されます。現時点では、「90」のイベント数より「50」のイベント数の方が少なく表示される可能性がありますが、スクロール50%は設定したばかりのタグなので、今はその状態で大丈夫です。
このような探索レポートを作っておけば、今回作った click_Inpagelink や scroll_50 などのイベントが、どれくらい発生したのか一覧で確認できます。
まとめ
GTMで実際にイベント設定をしてみて感じたことをまとめます。
権限の確認を最初にやること
画面が違う、操作できないと感じたら、設定ミスより先に権限を疑ってみてください。「タグ=何を送るか」「トリガー=いつ送るか」「変数=そのときの情報」
この3つを分けて考えると、設定の意味や自分が何をしているのか、が見えてきます。確認は順番通りに進める
GTMプレビュー → GA4リアルタイム/DebugView → 探索レポートの順に確認すると、「どこまでは届いていて、どこから先がおかしいのか」を切り分けやすくなります。いきなり探索レポートを開いても数字が出なくて焦ってしまいそうなので、まずリアルタイムで動作を確認するのが確実です。
権限の確認、変数の有効化、確認手順など、最初から知っていれば迷わずに済む部分があります。自分で実際に設定・確認をしている中でかなり手こずったので、この記事に残しました。
GTMの設定は、非エンジニアでも一つずつ確認しながら進めれば対応できます。ただし、確認作業を含めると一定の時間はかかります。同じように挑戦しようとしている方の、少しでも参考になれば嬉しいです。
著者
名前:minoRi
Tableau Certified Data Analyst(2025年4月取得)。エンジニアではない立場から、Tableauを独学で使いはじめ、実務でダッシュボード構築を経験。データ活用を仕事に取り入れようとしている方に向けて、実務ベースの記事を書いています。