電話ボタンのタップやLINE友だち追加をGoogleアナリティクス4(GA4)で数えられるようになると、次に知りたくなるのは「どこのボタンが押されたか」です。同じ電話ボタンでも、ページ上部のヘッダーにあるものと、ブログ記事の末尾にあるものでは役割が違います。GA4ではこの違いを、イベントに付ける「イベントパラメータ」で送り、「カスタムディメンション」として登録してレポートに出します。この記事を読み終わると、サンプル料理教室のサイトで電話・LINE追加・体験申込の各ボタンを「ヘッダー」「記事の末尾」「フッター」に分けて数えられるようになります。前提として、Googleタグマネージャー(GTM)でボタンのクリックをイベントとして送る設定までは済んでいるものとします。
イベントパラメータとカスタムディメンションとは
GA4のデータは、すべて「イベント」の積み重ねです。ページが表示されたら page_view、電話ボタンが押されたら tel_tap のように、何が起きたかを1件ずつ記録します。イベントパラメータは、そのイベントに貼る付箋です。「電話ボタンが押された」というイベントに、「ヘッダーのボタンだった」「どのページだった」という付箋を何枚か貼って一緒に送ります。
ただし、付箋を貼って送っただけでは、自分で付けた付箋はレポートに出ません。GA4のレポートで行や列に使えるのは「ディメンション」と「指標」です。自動で集める情報(ページのURL、参照元など)や推奨イベントの決まったパラメータは、最初から用意されたディメンションに自動で入ります。一方、link_location のように自分で名前を付けたパラメータは、GA4の側で「このパラメータを、この名前のディメンションとして使う」と登録して初めてレポートや探索で選べるようになります。この登録したものがカスタムディメンションです。
| 言葉 | 意味 | サンプル料理教室の例 |
|---|---|---|
| イベント | サイトで起きたことの記録1件 | tel_tap(電話ボタンのタップ) |
| イベントパラメータ | イベントに付ける付箋(名前と値の組) | link_location = header |
| ディメンション | レポートで行や列に使う分類軸 | 「イベント名」「ページ パス」 |
| カスタムディメンション | 自分で送ったパラメータを登録して作るディメンション | 「リンクの場所」 |
| 指標 | 数えたり足したりする数字 | 「イベント数」「アクティブ ユーザー」 |
「電話タップが月に何回か」はイベント数という指標で分かり、「そのうちヘッダーから何回か」を知るには分ける軸として「リンクの場所」というディメンションが要ります。
先に決めること
GA4ではカスタムディメンションの範囲とパラメータ名を保存後に変えられないので、作り直しは手間が増えます。
何を分けたいかを1文で書く
サンプル料理教室で分けたいのは「申込につながるボタンが、ページのどの位置で押されたか」です。対象は電話ボタン(tel: のリンク)、LINE公式アカウントの友だち追加ボタン、体験レッスン申込ページへのボタンの3つ。位置はヘッダー・ブログ記事の末尾にある申込の案内枠・フッターの3つと、それ以外です。
この1文があると、何をカスタムディメンションにしないかも決まります。「どのページで押されたか」はGA4に最初からある「ページ パス」などのディメンションで分かるので、カスタムディメンションは作りません。公式ヘルプも、事前定義のディメンションがあるものはカスタムで作らないよう案内しています。
パラメータ名と値を決める
パラメータ名は全イベントで1つに揃えます。tel_tap でも line_add_click でも、位置は同じ link_location という名前で送ります。イベントスコープのカスタムディメンションはパラメータ名に対して1つ作るので、名前を揃えておけば登録は1回で済み、電話・LINE・体験申込を同じ軸で並べて比べられます。
値は英小文字とアンダースコアで決め打ちにします。
| 位置 | 送る値 |
|---|---|
| ヘッダー | header |
| ブログ記事の末尾の申込の案内枠 | article_end |
| フッター | footer |
| それ以外(本文の途中のリンクなど) | other |
日本語の値でも送れますが、GTMやデータポータルのフィルタで扱うときは英語の方が打ち間違いが減ります。表示名はディメンション側で「リンクの場所」と日本語にします。
パラメータ名は、公式の命名規則で予約されている名前や先頭文字を避けます。_・firebase_・ga_・google_・gtag. で始まる名前は使えず、user_id や session_id などは予約済みです。
範囲を決める
カスタムディメンションには3つの範囲(スコープ)があります。
| 範囲 | 何に付くか | 向く使い方 | サンプル料理教室 |
|---|---|---|---|
| イベント | イベント1件ごとのパラメータ | どのボタンか、どのフォームか | 使う(リンクの場所) |
| ユーザー | ユーザーに付くユーザープロパティ | 会員か非会員か、契約プラン | 今は使わない |
| アイテム | eコマースの商品(items配列)の中のデータ | 商品の色・サイズ | 使わない |
ボタンの位置はクリック1回ごとに変わる情報なので、範囲は「イベント」です。ユーザーは「その人がずっと持っている属性」に使いますが、ログインの無いこのサイトでは閲覧者が受講生かどうかを判定できません。アイテムは商品を売るeコマースのための範囲です。
登録はパラメータを送り始める日と同じ日にする
カスタムディメンションは、登録する前の日付にさかのぼって値が入りません。実際に運用していると、パラメータを送り始めてから1か月後に登録して、その1か月分が「(not set)」になっているのを何度も見ます。GTMのタグを公開した日に、GA4の登録も済ませます。
一覧の表
サンプル料理教室で送るイベントとパラメータは次のとおりです。
| ボタン | イベント名 | パラメータ名 | 値 |
|---|---|---|---|
| 電話番号のボタン | tel_tap | link_location | header / article_end / footer / other |
| LINE友だち追加ボタン | line_add_click | link_location | 同上 |
| 体験レッスン申込へのボタン | trial_click | link_location | 同上 |
GA4に登録するカスタムディメンションは1つだけです。
| 項目 | 入れる値 |
|---|---|
| ディメンション名 | リンクの場所 |
| 範囲 | イベント |
| 説明 | 申込ボタンが押されたページ内の位置(header / article_end / footer / other) |
| イベント パラメータ | link_location |
作れる数の上限は次のとおりです(2026年10月時点の公式ヘルプ)。
| 種類 | 標準のプロパティ | アナリティクス 360 |
|---|---|---|
| ユーザースコープのカスタムディメンション | 25 | 100 |
| イベントスコープのカスタムディメンション | 50 | 125 |
| アイテムスコープのカスタムディメンション | 10 | 25 |
| カスタム指標 | 50 | 125 |
| 計算指標 | 5 | 50 |
小さな会社のサイトで50個に届くことはまずありません。届くのは、ボタンごと・フォームごとに別々のパラメータ名を作ってしまったときです。位置は link_location、フォームの種類は form_name のように、意味ごとに1つの名前を使い回せば数個で収まります。
送る側にも上限があります。1つのイベントに付けられるパラメータは25個まで、パラメータ名は40文字まで、パラメータの値は100文字までです。ボタンの文言やURLを丸ごと値に入れると100文字を超えて途中で切れることがあるので、値は短い決め打ちの語にします。
手順
全体の流れは、GTMで位置を判定する変数を作る、イベントタグにパラメータを足す、プレビューとDebugViewで確かめる、GTMを公開する、GA4でカスタムディメンションを登録する、24〜48時間後にレポートで見る、の順です。
1. ボタンがどの枠の中にあるかを調べる
位置を判定するには、ヘッダー・記事の末尾・フッターの枠がHTML上で何という名前になっているかを知る必要があります。
- Chromeでサンプル料理教室のブログ記事を1つ開きます。
- ヘッダーの電話ボタンを右クリックし、「検証」を選びます。
- 開いた画面で、選ばれた
<a href="tel:...">の行から上へたどり、外側の枠のタグとclass名を控えます。 - 記事の末尾の申込の案内枠とフッターのボタンでも同じことをします。

WordPressのテーマでは、サイト全体のヘッダーに site-header、フッターに site-footer のようなclassが付いていることが多くあります。記事の末尾の案内枠は、制作会社がブロックやウィジェットで作ったもので、cta-box のような名前が付いています。ここでは例としてこの3つのclass名で進めます。実際のclass名はテーマごとに違うので、控えた名前に置き換えます。
<header> タグそのもので判定しない理由もここで確認しておきます。テーマによっては、記事のタイトル部分にも <header class="entry-header"> が使われています。タグ名だけで判定すると、記事の中のボタンまでヘッダー扱いになります。
2. GTMで組み込み変数「Click Element」を有効にする
- GTMでサンプル料理教室のコンテナ
GTM-XXXXXXXを開きます。 - 左のメニューで「変数」を選びます。
- 「組み込み変数」の「設定」を押します。
- 「クリック」の中の「Click Element」にチェックを入れます。
Click Elementは、クリックトリガーが成立したときに押された要素そのものを返す変数です。ボタンのクリックを計測する設定のときに「Click URL」や「Click Text」は有効にしているはずなので、ここで足すのはClick Elementだけです。
3. 位置を返すカスタムJavaScript変数を作る
- 「変数」の「ユーザー定義変数」で「新規」を押します。
- 変数の名前を
CJS - リンクの場所にします。 - 「変数の設定」で「カスタム JavaScript」を選びます。
- 次のコードを貼り、手順1で控えたclass名に置き換えます。
- 「保存」を押します。
function() {
var el = {{Click Element}};
if (!el || !el.closest) {
return 'other';
}
if (el.closest('.site-header')) {
return 'header';
}
if (el.closest('.cta-box')) {
return 'article_end';
}
if (el.closest('.site-footer')) {
return 'footer';
}
return 'other';
}
closest() は、押された要素から外側へ順にたどって、指定した条件に合う最初の枠を探します。ボタンの中にアイコン画像や <span> が入っていても、外側の枠までたどれば位置が分かります。どれにも当てはまらなければ other を返すので、値が空で送られることはありません。

テーマのHTMLに手を入れられる場合は、もっと確実な方法があります。制作会社に頼んで、各ボタンの <a> タグに data-link-location="header" のような属性を付けてもらい、GTMでは変数の種類「自動イベント変数」(名前はヘルプで確かめられなかったので、変数の一覧から画面で探してください)で「要素の属性」を選び、属性名 data-link-location を読みます。テーマを改修しても判定が崩れません。サンプル料理教室ではまずGTMだけで完結するこの変数で始め、次のテーマ改修のときに属性を足してもらいます。
4. GA4のイベントタグにパラメータを足す
ボタンのクリック計測で作った3つのタグ(電話・LINE・体験申込)に、同じパラメータを足します。
- 「タグ」で電話タップのタグ(タグの種類「Google アナリティクス: GA4 イベント」、イベント名
tel_tap)を開きます。 - 「イベント パラメータ」の欄で「パラメータを追加」を押します。
- 「イベント パラメータ」に
link_location、「値」に{{CJS - リンクの場所}}を入れます。 - 「保存」を押します。
line_add_clickとtrial_clickのタグでも、手順1〜4を同じ値で行います。

ボタンの種類が増えてきたら、変数の種類「Google タグ: イベントの設定」で link_location を1か所にまとめ、各イベントタグの「Event Settings Variable」(初期値は「なし」)でその変数を選ぶ方法もあります。1か所で直せるので漏れが出ません。
パラメータ名は1文字でも違うと別のパラメータとして届きます。link_location と link-location、Link_location は全部別物です。2つ目以降はコピーして貼ります。
5. プレビューとDebugViewで確かめる
公開する前に、値が正しく付いているかを確かめます。
- GTMの右上の「プレビュー」を押し、Tag Assistantでサンプル料理教室のブログ記事のURLを開きます。
- 開いたサイトで、ヘッダーの電話ボタンを押します。
- Tag Assistantの左の一覧でクリックのイベントを選び、電話タップのタグが「Tags Fired」に入っていることを見ます。
- 同じイベントの「Variables」で、
CJS - リンクの場所がheaderになっていることを見ます。 - 記事の末尾の電話ボタン、フッターの電話ボタンでも2〜4を行い、
article_end・footerになることを見ます。 - LINE追加ボタンと体験申込ボタンでも、3か所ずつ同じことをします。

次に、GA4の側に値が届いているかを見ます。
- GA4で「管理」→「データの表示」→「DebugView」を開きます。
- 中央の時系列(Seconds ストリーム)に
tel_tapが出たら、それを押します。 - 開いたパラメータの一覧に
link_locationがあり、値が押したボタンの位置になっていることを見ます。

GTMのプレビューから開いたブラウザは自動でデバッグモードになり、自分の端末の動きだけがDebugViewに出ます。中央には過去60秒のイベントが秒単位で並びます。
「レポート」→「リアルタイム」でも、イベント名ごとのイベント発生数のカードで tel_tap が届いているかを見られます。リアルタイムは全員の過去30分のデータが集まる画面なので、公開直後に本番のクリックが届いているかを見るのに向きます。1件ずつの値まで追うのはDebugViewです。
6. GTMを公開する
- GTMのワークスペース右上の「公開」を押します。
- 「送信設定」で「バージョンの公開と作成」を選びます。
- 「バージョン名」に「リンクの場所のパラメータを追加」のように、何を変えたかが分かる名前を入れます。
- 画面右上の「公開」を押します。
7. GA4でカスタムディメンションを登録する
GTMを公開したら、同じ日のうちにGA4に登録します。登録には、そのプロパティの編集者以上の権限が要ります。
- GA4の左下の「管理」を押します。
- 「データの表示」の中の「カスタム定義」を押します。
- 「カスタム ディメンション」タブを選びます。
- 「カスタム ディメンションを作成」を押します。
- 「ディメンション名」に「リンクの場所」と入れます。
- 「範囲」で「イベント」を選びます。
- 「説明」に「申込ボタンが押されたページ内の位置(header / article_end / footer / other)」と入れます。
- 「イベント パラメータ」に
link_locationと入れます。 - 右上の「保存」を押します。

ディメンション名にはハイフンが使えません。アンダースコアとスペースは使えます。範囲とイベントパラメータは保存したあとに変えられないので、保存の前にもう一度、GTMのタグに打った名前と1文字ずつ見比べます。
保存すると「カスタム定義」の一覧に並びます。作成パネルでは「範囲」でしたが、一覧の列見出しは「スコープ」です。画面右上の「割り当て情報」を押すと、範囲ごとにいくつ作ったかが見られます。

8. 24〜48時間後にレポートで見る
カスタムディメンションは、作成してから24〜48時間たつとレポートで使えるようになります。登録した日に見つからなくても失敗ではありません。
まずは探索で、ボタンごとと位置ごとの表を作ります。
- 「探索」を開き、空の探索を作ります(テンプレートの並びにある「空白」を選びます。名前はヘルプにないので、画面で確かめてください)。
- 左の「ディメンション」の「+」を押し、「イベント名」と「リンクの場所」を選んで「インポート」を押します(ヘルプでは選んだあとに「適用」を押す書き方です)。
- 「指標」の「+」で「イベント数」を選んで読み込みます。
- 「行」に「イベント名」、「列」に「リンクの場所」をドラッグします。
- 「値」に「イベント数」を入れます。
- 「フィルタ」で、イベント名が
tel_tap・line_add_click・trial_clickのいずれかに一致する条件を入れます。

これで「電話タップのうちヘッダーが何回、記事の末尾が何回」が1枚の表になります。探索の作り方そのものは「探索レポートの作り方:自由形式・ファネル・経路データ探索」で詳しく書いています。
いつものレポートに出したい場合は、「レポート」→「エンゲージメント」→「イベント」の表で、主のディメンション「イベント名」の横の「+」を押し、「カスタム」から「リンクの場所」を2つ目のディメンションとして足します。
数字の読み方
位置ごとの数字は、そのまま大小を比べると読み違えます。ヘッダーとフッターのボタンは全ページに出ていますが、記事の末尾の案内枠はブログ記事を最後まで読んだ人にしか見えません。記事の末尾が月に10回、ヘッダーが40回でも、枠の効き方としては記事の末尾の方が強いこともあります。
サンプル料理教室では、毎月の判断を2つに絞っています。
- どれかの位置が3か月続けて0回なら、そのボタンを外すか場所を変えるかを制作会社と相談する
- 記事の末尾から体験申込とLINE追加が出ているブログ記事は、同じ型で次の記事を書く
押された回数は、申込や電話がつながった件数とは違います。タップしただけで発信をやめる人もいます。位置の比較はこの数字で行い、申込の件数はサンクスページの表示や予約システムの記録で数えます。
応用
キーイベントの内訳として見る
電話タップとLINE追加をキーイベント(旧コンバージョン)にしている場合、同じ「リンクの場所」でキーイベントの内訳も分けられます。探索の指標に「キーイベント」を入れ、行を「イベント名」、列を「リンクの場所」にすれば、どの位置のボタンがキーイベントを生んでいるかが分かります。キーイベントの設定そのものは別の記事で扱っています。
データポータルの毎月の1枚に足す
代表が毎月見ているデータポータル(Looker Studio)のレポートにも「リンクの場所」を出せます。表のグラフを1つ足し、ディメンションに「イベント名」と「リンクの場所」、指標に「イベント数」を入れます。GA4で登録したばかりのディメンションがデータポータルの項目一覧に出てこないときは、データソースを編集し、左下の「フィールドを更新」を押して「適用」すると読み込まれます。
同じパラメータを別のイベントにも使う
link_location は、これから足すボタンにもそのまま使えます。たとえばInstagramへのリンクを計測するイベントを足すときも、GTMのタグに link_location = {{CJS - リンクの場所}} を1行足すだけで、GA4の登録は増やさずに位置で分けられます。カスタムディメンションはパラメータ名ごとに1つで、どのイベントに付いていても同じディメンションに集まるからです。
フォームが複数ある場合は、同じ考え方で form_name のようなパラメータを1つ決めて、「体験申込フォーム」「お問い合わせフォーム」を値で分けます。
ページの種類で分けたいときはコンテンツグループを使う
「ブログから来た申込」「レッスン紹介ページから来た申込」のように、ページの種類で分けたいことがあります。これはカスタムディメンションを作らなくても、GA4に用意されている content_group というパラメータをGoogleタグの設定で送れば、事前定義のディメンション「コンテンツ グループ」に入ります。カスタムディメンションの枠を使わずに済みます。
ボタンが見られた回数も測る
「記事の末尾の枠を見た人のうち何人が押したか」まで知りたい場合は、GTMの「要素の表示」トリガーで、案内枠が表示されたときにイベントを1つ送ります。表示と押された回数を並べれば、押される割合が出ます。まずは押された回数だけで3か月見て、判断に迷う位置が出てから足せば十分です。
gtag.jsで直接送る場合
GTMを使わずに、サイトのHTMLにGoogleタグ(gtag.js)を直接書いているサイトでは、イベントを送るコードの中にパラメータを書きます。
<a href="tel:0000000000" onclick="gtag('event', 'tel_tap', { 'link_location': 'header' });">電話で問い合わせる</a>
テーマのファイルを制作会社が管理しているサイトでは、ボタンを足すたびに依頼が要るので、GTMで判定する方が運用は楽です。
できないことと、その代わり
登録する前の期間はさかのぼれない
カスタムディメンションを登録しても、登録前の日付の行は「(not set)」のままです。過去分を位置で分ける手はGA4の画面にはありません。代わりの手は2つです。1つは、今日から登録して来月以降の数字で判断すること。もう1つは、GA4のデータをBigQueryに書き出す設定を先にしておくことです。BigQueryに書き出されたイベントには、カスタムディメンションとして登録したかどうかに関係なく、送ったパラメータがそのまま入っています。ただしBigQueryへの書き出しも設定した日から先のデータだけです。
BigQueryで位置ごとの件数を出すSQLは次のとおりです。プロジェクト名とデータセット名は自分の環境に置き換えます。
SELECT
event_name,
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'link_location') AS link_location,
COUNT(*) AS events
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261031'
AND event_name IN ('tel_tap', 'line_add_click', 'trial_click')
GROUP BY event_name, link_location
ORDER BY event_name, events DESC;
範囲とパラメータ名は後から変えられない
保存したカスタムディメンションの範囲とイベントパラメータは編集できません。間違えた場合は正しい内容で新しく作り、古いものはアーカイブします。アーカイブは、戻せるかどうかがヘルプに書かれていないので戻せない前提で、そのディメンションを使っていた探索やオーディエンスにも影響が出うるため、外す前に使っている場所を確かめます。上限に達してから削除やアーカイブをした場合、新しいディメンションを足せるのは48時間たってからです。
個人を特定できる情報は送れない
Googleアナリティクスには、メールアドレス、電話番号、氏名のような、個人を特定できる情報を送ってはいけない決まりがあります。公式ヘルプは、注意が要る場所の1つとして「すべてのカスタムディメンション」を挙げています。体験申込フォームに入力された名前やメールアドレス、希望日の自由記述を、パラメータの値に入れてはいけません。
うっかり送ってしまいやすいのは、フォームの入力内容がURLに付く作りのサイトです。サンクスページのURLが /thanks/?email=... のようになっていると、ページのURLと一緒にメールアドレスがGA4に届きます。GA4の「データストリーム」の設定には、メールアドレスや指定したURLのクエリパラメータを取り除く「データの除去」がありますが、メールアドレスの除去は「ベストエフォート」とされていて、確実ではありません。送らない作りにするのが先で、データの除去は保険です。
申込者が誰かはGA4では追いません。名前や連絡先はフォームの送信先と予約システムに残し、GA4には「どこから来て、どのボタンを押したか」という分類だけを送ります。
1人ずつ違う値は向かない
ユーザーごとに違うID、セッションごとのID、押した時刻のように、値の種類が非常に多くなるものをカスタムディメンションにすると、標準のプロパティでは表の下の方が「(other)」という1行にまとめられ、読めなくなることがあります。公式ヘルプもこうした使い方を避けるよう案内しています。位置のように、値が数種類に決まっているものがカスタムディメンションに向きます。
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| 登録したのに、レポートや探索で「リンクの場所」が選べない | 作成から24〜48時間たっていない | 翌々日まで待ってからもう一度見る |
| 登録した日より前の行がすべて「(not set)」 | カスタムディメンションは登録前にさかのぼらない | 登録した日以降の期間で見る。過去分はBigQueryの書き出しがあればそちらで集計する |
page_view などの行で「リンクの場所」が「(not set)」 | そのイベントには link_location を付けて送っていない | 正常。フィルタでボタンのイベントだけに絞って見る |
| DebugViewに何も出ない | GTMのプレビューから開いていない、Cookieの同意が無い、教室のWi-Fiを内部トラフィックとして除いている | プレビューからサイトを開き直す。同意のバナーで同意する。スマホのモバイル回線など、除外していない回線で試す |
DebugViewにイベントは出るが link_location が無い | タグの「イベント パラメータ」の行が抜けている、またはパラメータ名の打ち間違い | タグを開き、link_location の綴りを1文字ずつ確かめる |
値がすべて other になる | カスタムJavaScript変数のclass名がテーマと合っていない | Chromeの「検証」で外側の枠のclass名を調べ直し、コードを置き換える |
記事の中のボタンまで header になる | 判定に <header> タグを使っていて、記事タイトルの枠にも同じタグが使われている | サイト全体のヘッダーのclass名(例 .site-header)で判定する |
| 同じ位置が「Header」と「header」の2行に分かれる | 値の大文字・小文字が揃っていない | 値は英小文字に統一し、タグごとに違う書き方をしていないか見直す |
| パラメータ名を間違えて登録してしまった | イベントパラメータは保存後に変えられない | 正しい名前で作り直し、間違えた方をアーカイブする |
| 上限に達したので削除したのに、新しく作れない | 削除してから48時間は新しいディメンションを足せない | 48時間待つ。今後はパラメータ名を意味ごとに使い回す |
| 「1E5」のような値が数字として表示される | 数値に見える文字列は数値として解釈されることがある | 値は英字を含む語(area_1e5 など)にする |
| データポータルに「リンクの場所」が出てこない | データソースの項目が登録前のまま | データソースを編集し、左下の「フィールドを更新」→「適用」 |
| ディメンション名を保存できない | ディメンション名にハイフンが入っている | ハイフンを外すか、スペースかアンダースコアにする |
次にやること
続けて読むと、計測からレポートまでがつながります。
- GTMでボタンのクリックを計測する:電話・LINE追加・資料請求
- GA4のイベントとは:自動収集・拡張計測・推奨・カスタムの4種類
- 公開前の確認:GTMのプレビューとGA4のDebugView
- 探索レポートの作り方:自由形式・ファネル・経路データ探索