この記事はバージョン Winter ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。
「PV(ページビュー)の計測はできた。でも、もっと深いユーザーの行動を知りたい」
Webサイト運営者なら誰もがそう思うはずです。
前回の記事では、リアルタイムのアクティブユーザー数とページビュー (PV) 数が計測できるように設定しました。
Salesforce公式ドキュメントには、PV計測以外にも以下の4つの重要なトラッキング手法(Example 2〜5)が紹介されています。
- クリック計測 (Example 2): どのボタンが押されたか?
- フォーム計測 (Example 3): どのフォームに入力や送信が行われたか?
- 外部リンク計測 (Example 4): どのリンクからどの外部サイトへ遷移したか?
- 滞在時間計測 (Example 5): どのくらいの時間ページを見ていたか?
LWRサイトでは、標準コンポーネントやLWCに備わっている「CSSクラス」機能と、トラッキングコードを組み合わせることで、これらを驚くほど簡単に実装できます。
今回は、これら4つをまとめて実装し、サイト分析レベルを一気に引き上げる手順を解説します。
Step 1: まとめてコードを実装する
まずは「監視役」となるプログラムをヘッドマークアップに追加します。 4つの機能すべてを網羅したコードを作成しました。これをそのまま貼り付けるだけで準備完了です。
- ビルダーの [設定] > [詳細] > [ヘッドマークアップを編集] を開きます。
- 基礎編(PV計測)で追加したコードの下に、以下のコードを追記してください。
クリックしてコードを見る
<x-oasis-script>
(function() {
// 安全策: gtag関数を安全に呼び出すためのラッパー関数
function safeGtag(command, action, params) {
if (typeof window.gtag === 'function') {
window.gtag(command, action, params);
}
}
// 設定エリア:ここで監視するクラス名を定義します
const CONFIG = {
clickClass: 'track-click', // Example 2: ボタン計測用
formClass: 'track-form', // Example 3: フォーム計測用
outboundClass: 'track-outbound' // Example 4: 外部リンク計測用
};
// -------------------------------------------------------
// 1. クリック計測 (Example 2 and 4)
// -------------------------------------------------------
document.addEventListener('click', function(event) {
// Shadow DOMの境界を越えて、クリックされた要素の完全な経路を取得
var path = event.composedPath();
// 判定用フラグの初期化
var linkElement = null; // Aタグが見つかったら格納
var hasOutboundClass = false; // クラスが見つかったらtrue
// 経路を奥の要素から親の要素へ順番に全てチェック
for (var i = 0; i != path.length; i++) {
var node = path[i];
// windowやdocumentなど、タグではないノードはスキップ
if (!node.tagName) continue;
// ---------------------------------------------------
// A. 特定ボタンのクリック (Example 2) - 最優先
// ---------------------------------------------------
// ボタン計測クラスがあれば即座に送信して終了
if (node.classList.contains(CONFIG.clickClass)) {
safeGtag('event', 'click_button', {
'event_category': 'engagement',
'event_label': node.innerText || 'Button'
});
return; // ボタン計測完了。ここで処理を終える
}
// ---------------------------------------------------
// B. 外部リンクのクリック (Example 4) - 情報収集
// ---------------------------------------------------
// 1. リンクタグ(Aタグ)を見つけた場合、記録する
if (node.tagName === 'A') {
linkElement = node;
}
// 2. 計測用クラスを見つけた場合、記録する
// (Aタグ自身、親、子、どこにあってもここで検知されます)
if (node.classList.contains(CONFIG.outboundClass)) {
hasOutboundClass = true;
}
}
// ループ終了後、判定を行う
// 「リンクタグ」かつ「計測クラス」の両方が経路内に存在した場合に送信
if (linkElement && hasOutboundClass) {
safeGtag('event', 'click_outbound', {
'event_category': 'outbound',
'event_label': linkElement.href
});
}
});
// -------------------------------------------------------
// 2. フォーム操作の計測 (Example 3)
// -------------------------------------------------------
document.addEventListener('change', function(event) {
var target = event.target;
var form = target.closest('form');
if (form && form.classList.contains(CONFIG.formClass)) {
safeGtag('event', 'form_interaction', {
'event_category': 'form',
'event_label': 'Input Changed: ' + target.name
});
}
});
// -------------------------------------------------------
// 3. 滞在時間の計測 (Example 5)
// -------------------------------------------------------
var startTime = new Date().getTime();
window.addEventListener('beforeunload', function() {
var endTime = new Date().getTime();
var timeSpent = Math.round((endTime - startTime) / 1000); // 秒単位
safeGtag('event', 'visit_duration', {
'event_category': 'engagement',
'value': timeSpent,
'event_label': document.title
});
});
})();
</x-oasis-script>

Step 2: 計測したい場所に「CSSクラス」を付ける
コードを埋め込んだだけでは、まだ計測は始まりません。 「どのボタンを計測するか?」をシステムに教えてあげる必要があります。
ここで使うのが、Step 1のコード内で定義した以下のクラス名です。
track-click: クリック計測用track-outbound: 外部リンク計測用track-form: フォーム計測用
これらを、標準コンポーネントやLWCに付与していきます。
1. 標準コンポーネントの場合(ノーコード)
ビルダーで配置した「ボタン」「HTML エティター」「フォーム」内の要素を計測する場合です。
- 計測したいコンポーネントをクリックして選択します。
- プロパティパネルの [スタイル] タブ(または [高度] タブ)を開きます。
- [CSS クラス] の入力欄に
track-clickなどのクラス名を入力します。 - これで設定完了です。
- クリック計測
- 外部リンク計測
- フォーム計測



2. LWC(カスタムコンポーネント)の場合
開発者が作成するLWCコンポーネントを計測する場合、HTMLテンプレート内で直接クラスを記述します。
A. ボタンクリックを計測したい場合 (Example 2)
<button> タグや <lightning-button> コンポーネントにクラスを追加します。
<template>
<button class="track-click slds-button slds-button_brand" onclick={handleClick}>
資料請求はこちら
</button>
<lightning-button
label="お問い合わせ"
class="track-click"
onclick={handleContact}>
</lightning-button>
</template>
B. フォームを計測したい場合 (Example 3)
フォーム全体を囲むラッパー要素(divやform)にクラスを付与することで、その内部の変更をまとめて検知できます。
<template>
<div class="track-form">
<lightning-input label="お名前" name="username"></lightning-input>
<lightning-input label="メールアドレス" name="email"></lightning-input>
<lightning-button label="送信" type="submit"></lightning-button>
</div>
</template>
C. 外部リンクを計測したい場合 (Example 4)
外部サイトへ遷移する <a> タグにクラスを付与します。 lightning-button などで window.open を使う場合ではなく、HTML標準の <a> タグを使用するケースで有効です。
<template>
<p>詳細については公式サイトをご覧ください。</p>
<a href="https://www.salesforce.com" target="_blank" class="track-outbound">
Salesforce.comへ移動
</a>
</template>
x-oasis-script 内のイベントリスナーは、Shadow DOMの境界を越えてイベントをキャッチできる仕組み(composed: true なイベントや、特権スクリプトの仕様)を利用しています。そのため、LWC内部の要素にクラスを付けるだけで、外部のスクリプトからクリックを検知可能です。
滞在時間を計測したい場合 (Example 5)
これだけは特別です。設定不要です。
Step 1のコードが入っていれば、すべてのページで自動的に滞在時間が計測され、ページ移動時や離脱時にデータが送信されます。
Step 3: Google Analytics でデータを確認する
設定が完了したら、必ずサイトを [公開] してから動作確認を行います。
確認手順
- 公開サイトにアクセスし、設定したボタンをクリックしたり、フォームに入力したりします。
- Google Analyticsの管理画面を開きます。
- [レポート] > [リアルタイムの概要] をクリックします。
- ページ下部の 「イベント数(イベント名)」 カードを確認します。
滞在時間は以下のように確認します。
- Google Analyticsの管理画面を開きます。
- [レポート] > [ビジネス目標] > [ウェブ / アプリのトラフィックの分析] > [ページとスクリーン] をクリックします。

期待される表示
正しく設定できていれば、以下のイベント名がリストに表示されます。
click_button > event_label: ボタンをクリックした時click_outbound > event_label: 外部リンクをクリックした時form_start > page_title: フォームを送信した時
- ボタンクリック
- 外部リンククリック
- フォーム送信



まとめ
LWRサイトでの高度な分析は、決して難しいものではありません。
- ヘッドマークアップに「統合コード」を入れる。
- 標準コンポーネント設定、またはLWCのHTMLで「CSSクラス」を付与する。
この2ステップだけで、Salesforce公式が推奨するすべてのトラッキングパターンを網羅できます。ぜひ実装して、ユーザーの動きを解像度高く分析してみてください。
参考URL
Examples: Use Google Analytics in LWR Sites




読者の声