開発情報・ナレッジ

投稿者: ShiningStar株式会社 2026年1月29日 (木)

クリックカウントとGoogleAnalyticsのおすすめ連携例

本記事では、SPIRAL(ver.2)の クリックカウント/HTMLメール開封確認Google Analytics 4(GA4) を組み合わせて、
「メールでアンケートURLを送ったときに 誰がクリックしたかフォームを開いたが未回答か」などを把握し、
リマインド・フォーム改善・ナーチャリングに繋げるための設定手順例をまとめます。

ポイントは、
GA4へメールアドレス等の個人情報を送らず、
URLパラメータに トークン(tid) のみを付与して SPIRAL 側で突合することです。

この記事でできるようになること

メール内リンクをクリックされた回数を計測(クリックカウント)
フォームの 入力→確認→完了 の閲覧状況を GA4 で把握
「クリックしたのに未回答」などの層を抽出して再送(運用例)

注意点(重要)

GA4/GTM は Google 社の仕様変更の影響を受けます(SPIRALのサポート対象外)。
GA4 に メールアドレス/氏名 等の個人情報(PII)を送らない設計にしてください。
クリックカウントのドメイン運用(サイト識別名変更/削除)は配信済みURLが壊れるリスクがあるため運用ルール化を推奨します。

2つの計測パターン(重要)

ver.2のクリックカウント機能では、
パラメータに付与できるのは
mailID
(配信ID)と
urlID
(リンク識別名)のみです。
顧客DBのフィールド(tid等)を差替えキーワードで付与しようとすると、
URLが正しく解析されない制限があります。

そのため、要件に応じて以下の2パターンから選択してください。
パターンA:クリックカウントを使用する場合
クリック数の計測:SPIRAL配信ログで確認(誰がクリックしたかも分かる)
GA4での分析:フォーム全体の離脱率・完了率を把握(個人追跡は不可)
未回答者の特定:SPIRAL配信ログで「クリックあり」かつ「回答なし」を抽出
パターンB:クリックカウントを使用しない場合
メール本文のURLに直接
tid
を差替えキーワードで埋め込む
GA4で個人追跡が可能(誰がどこまで進んだかを可視化)
クリック数はGA4のイベントで代替計測

全体像(データの流れ)

パターンAの場合
1. メール本文に「クリックカウントURL」を差し込み
2. クリック→LP/フォームに遷移(
mailID
/
urlID
が付与される)
3. GA4でフォームの閲覧/完了を計測(全体の離脱率分析)
4. SPIRAL配信ログで「誰がクリックしたか」を確認し、未回答者を抽出・再送
パターンBの場合
1. メール本文に「tid付きURL」を直接差し込み(クリックカウント不使用)
2. クリック→LP/フォームに遷移(URLに
tid
が付与される)
3. GA4でフォームの閲覧/完了を計測(個人追跡可能)
4. GA4から
tid
をエクスポートし、SPIRAL側で突合して未回答者を抽出・再送

事前準備

本手順では以下が前提です。

SPIRAL ver.2 のメール配信機能(フォームメールアクション/一斉配信/トリガー配信等)を利用している
サイト機能(サイト管理)でフォーム/ページを作成済み、または作成予定
GA4のプロパティ作成済み(計測IDを確認できる)
GTM を利用する場合はコンテナ作成済み(Web)

Step 1:メールにリンクを設定する

【パターンA】クリックカウントを使用する場合

参考:メールのクリックカウント/HTMLメール開封確認
クリック回数をカウントしたいリンクは、
メール文面中に クリックカウントURL を挿入します。

1-A-1. URL識別名(urlID)を設計する
メール本文に載せるURLに 識別名 を付けます。
例:
PRICE
(価格表)、
CASE
(事例)、
SURVEY
(アンケート)など。
後で「どのリンクが効いたか」を分析しやすくなります。
1-A-2. parameter(パラメータ自動付与)を設定する

クリックカウントURLには、
配信/リンクを識別する動的値を付与できます。
GA4で配信別・リンク別の効果測定に使えます。

重要:パラメータに付与できるのはアプリID、DBID、メール配信設定ID、URL識別名のみです。

1-A-3. クリックカウントURLのドメインを選ぶ
cc.spiral-platform.com

サイト管理で作成した標準サイトドメイン(
xxxx-xxxx.spiral-site.com
等)
独自ドメインオプション導入時は独自ドメインへ差し替わります

注意:同一文面内に複数のクリックカウントURLがあっても、
異なるドメインを混在できません

【パターンB】クリックカウントを使用しない場合
GA4で個人追跡を行いたい場合は、
クリックカウントを使用せず、メール本文のURLに直接
tid
を埋め込みます。
この方式では、
クリック数はSPIRAL配信ログでは取得できませんが、
GA4のイベント(
page_view
click
)で代替計測できます。

Step 2:GA4タグを設置する(サイト全体 or ページ個別)

参考:Google Analyticsの解析タグで正しく計測したい
ver.2はサイト機能で生成したページに、
GA4タグを 一括 または 個別 に設置できます。

2-1. (一括指定)共有ソースに入れて全ページで計測
サイト管理 > サイト一覧 > 対象サイト
設定 > テスト環境 > 共有ソース > 共通ソース(head)にGA4タグを貼り付け
2-2. (個別指定)ページのheadに入れてページ単位で計測
設定 > テスト環境 > ページ > 該当する識別名(パス)
タブ「head」(推奨:なるべく上部)にGA4タグを貼り付け

Step 3:GA4の二重計測防止(必須)

参考:Google Analyticsの解析タグで正しく計測したい
SPIRALのフォームではURLが書き換わる/仮想遷移が発生するケースがあり、
GA4の設定によってはページビューが二重計測されることがあります。

手順(GA4側)
1. 管理 > データストリーム > 対象ストリームを選択
2. 「拡張計測機能」がオンであることを確認
3. 歯車 > ページビュー数「詳細設定を表示」
4. 「ブラウザの履歴イベントに基づくページの変更」 のチェックを外す
5. 保存

Step 4:GTMで仮想ページビュー(フォーム各画面を見える化)

フォームが「入力/確認/完了」など複数ページで構成されるため、
GTMで ページタイトル(title) をキーに仮想URLを割り当て、
GA4へ
page_view
を送る方法が扱いやすいです。
4-1. フォーム各ページの<title>を決める
SPIRAL ver.2 のサイト機能では、
フォームブロックの各ステップ(入力/確認/完了/エラー)ごとにHTMLを編集できます。
各ステップの
<title>
を決めて、
区別できるようにします。
4-2. GTMでdocument.titleを変数化
変数 > ユーザー定義変数 > 新規
変数タイプ:JavaScript変数
グローバル変数名:
document.title

4-3. ルックアップテーブル(title→仮想URL)を作成

フォームのタイトルごとに、
GA4上で集計しやすい仮想URLを返すようにします。

変数タイプ:ルックアップテーブル
入力変数:上で作成した title 変数
例)「お問い合わせフォーム(入力)」→
/contact/entry

デフォルト値:Page Path
4-4. GA4イベント(page_view)を送る
タグ:Googleアナリティクス(GA4イベント)
イベント名:
page_view

イベントパラメータ:
page_location
= ルックアップテーブル(仮想URL)
トリガー:仮想URLごとのページビュー(または正規表現でまとめる)
4-5. 既存GA4設定タグから重複を除外

サイト全体を計測するGA4設定タグ(GA4設定)を使っている場合、
仮想PV用のトリガーを「除外」に追加して二重計測を避けます。

4-6. (GTM利用時)body設置が必要なケース
GTMを使って
<body>
にタグを入れる必要がある場合、
フォームブロックのHTML側にタグを入れ、
入力/確認/完了/エラー等の各画面(ステップ)にも漏れなく設置してください。

Step 5:未回答者の特定方法(パターン別)

【パターンA】クリックカウント使用時:SPIRAL配信ログで特定

クリックカウントを使用した場合、
GA4では個人追跡ができないため、SPIRAL配信ログで「誰がクリックしたか」を確認します。

1. 配信ログでクリックログを確認(誰がどのリンクをクリックしたか)
2. 回答DBと突合し、「クリックあり・回答なし」のレコードを抽出
3. 抽出ルールを作成してリマインドメールを送信

GA4では、
フォーム全体の離脱率・完了率を分析し、
どのステップで離脱が多いかを把握してフォーム改善に活用します。

【パターンB】クリックカウント不使用時:GA4で個人追跡
メール本文のURLに直接
tid
を埋め込んだ場合、
GA4で「誰がどこまで進んだか」を追跡できます。
ただし、入力画面URLにだけ
tid
が付与され、
確認/完了のURLには付与されないため、
GTMで
tid
をCookieに保存して引き継ぎます。
5-B-1. GTM変数:クエリ文字列
tid
を取得
変数 > 新規
変数タイプ:URL
コンポーネント:クエリ
クエリキー:
tid

例:変数名
QS_tid

5-B-2. GTMタグ:
tid
をCookieに保存

重要:Cookie保存のような副作用のある処理は、GTMの「変数」ではなく カスタムHTMLタグ で行います。

<script>
(function () {
  var mailID = {{QS_mailID}};
  var urlID  = {{QS_urlID}};
  var tid    = {{QS_tid}};

  var maxAge = 60 * 30; // 30分

  if (mailID) document.cookie = "cc_mailID=" + encodeURIComponent(mailID) + "; path=/; max-age=" + maxAge + "; SameSite=Lax";
  if (urlID)  document.cookie = "cc_urlID="  + encodeURIComponent(urlID)  + "; path=/; max-age=" + maxAge + "; SameSite=Lax";
  if (tid)    document.cookie = "cc_tid="    + encodeURIComponent(tid)    + "; path=/; max-age=" + maxAge + "; SameSite=Lax";
})();
</script>
            
トリガーは一旦 All Pages で動作確認し、問題なければ入力画面だけに絞るのがおすすめです。
入力画面だけに絞る場合は、トリガーの条件に「Page Path」が
/entry
を含む、または「Page URL」がフォームの入力画面URLに一致する条件を設定します。
Cookieが書けない環境の場合は、sessionStorageで保持する方式に切り替えます。
5-B-3. GTM変数:Cookieから
tid
を読む
変数タイプ:ファーストパーティCookie
Cookie名:
tid

例:変数名
CK_tid

5-B-4. GA4イベントに
tid
をイベントパラメータとして付与
対象:仮想PV用の
page_view
、または任意の完了イベント(例:
form_complete

イベントパラメータ:
tid
=
{{CK_tid}}

(デバッグ用)必要に応じて
debug_mode
=
true

5-B-5. 確認方法(GTM/GA4)
GTMプレビュー(Tag Assistant)で
CK_tid
が入力→確認→完了で同じ値になっていること
GA4のDebugViewで、イベント(例:
page_view
/
form_complete
)のパラメータに
tid
が入っていること
GA4のリアルタイムにイベントが出ること(標準レポート/探索は反映に時間がかかる場合があります)
5-B-6. GA4:
tid
を探索で使う(カスタムディメンション)
1. 管理 > カスタム定義 > カスタムディメンションを作成
2. 範囲(スコープ):イベント
3. イベントパラメータ:
tid

4. 保存
探索(Explore)に反映されるまで 数時間〜最大24時間程度 かかることがあります。

Step 6:GA4で「誰がどこまで答えたか」を確認する(パターンBのみ)

※このステップはパターンB(クリックカウント不使用)の場合のみ有効です。
カスタムディメンション
tid
を登録した後、GA4の 探索(Explore) 機能を使って、
「どのユーザーがどのステップまで進んだか」を可視化できます。
6-1. 探索レポートの作成手順
1. GA4 > 探索 > 「空白」を選択して新規作成
2. ディメンションに以下を追加:
 ・
tid
(カスタムディメンション)
 ・
ページロケーション
または
ページパス

3. 指標に
イベント数
を追加
4. 行に
tid
、列に
ページロケーション
を配置
5. フィルタで対象フォームのURLに絞り込み(例:
/contact/
を含む)
6-2. ファネルデータ探索で離脱ポイントを可視化

「入力→確認→完了」の各ステップの通過率を見たい場合は、
ファネルデータ探索 が便利です。

1. 探索 > 「ファネルデータ探索」テンプレートを選択
2. ステップを設定:
 ・ステップ1:
page_view
かつ
page_location
/contact/entry
を含む
 ・ステップ2:
page_view
かつ
page_location
/contact/confirm
を含む
 ・ステップ3:
page_view
かつ
page_location
/contact/complete
を含む
3. 内訳に
tid
を追加すると、個別ユーザーの離脱状況が見える
6-3. 「クリックしたが未完了」のユーザーを抽出する

GA4の探索で セグメント を活用し、
「入力ページは見たが完了ページに到達していない」ユーザーを抽出します。

1. 探索 > セグメント > 「ユーザーセグメント」を新規作成
2. 条件1(含める):
page_location
/contact/entry
を含む
3. 条件2(除外):
page_location
/contact/complete
を含む
4. このセグメントを適用し、
tid
を行に配置
5. 表示された
tid
の一覧をエクスポート(CSV)
6-4. SPIRAL側で突合してリマインド対象を特定
GA4からエクスポートした
tid
の一覧を、
SPIRAL側のDBと突合して「誰が未回答か」を特定します。
1. GA4の探索結果をCSVでダウンロード
2. SPIRALのDB(顧客マスタ等)で
tid
(トークン)と紐づくレコードを検索
3. 該当レコードに「リマインド対象」フラグを立てる、または抽出ルールを作成
4. 抽出ルールを配信先に指定してリマインドメールを送信

ユースケース別の活用例

ユースケース1:アンケート回収率の向上
配信後3日経過時点で「クリックあり・完了なし」の層を抽出
「まだ回答いただけていないようです」とリマインドメールを送信
回収率の推移をGA4のファネルで週次モニタリング
ユースケース2:フォーム離脱ポイントの改善
ファネルで「入力→確認」の離脱率が高い場合:入力項目の見直し、必須項目の削減
「確認→完了」の離脱率が高い場合:確認画面の表示内容、送信ボタンの視認性を改善
特定の
tid
が繰り返し入力画面で離脱している場合:個別フォローを検討(パターンBのみ)
ユースケース3:セグメント別の反応分析
SPIRAL側で顧客属性(業種、地域、契約プラン等)と
tid
を紐づけ
GA4のデータと突合し、「どの属性の顧客が完了率が高いか」を分析(パターンBのみ)
完了率の低いセグメントには別のアプローチ(電話フォロー等)を検討
ユースケース4:キャンペーン効果測定
メール配信時に
utm_campaign
パラメータも付与
GA4で「キャンペーン別の完了率」を比較
件名やCTAの違いによる効果差を定量的に把握

Step 7:動作確認(チェックポイント)

パターンA(クリックカウント使用)の場合
1. テスト配信を行い、メールのリンクをクリックして遷移できること
2. 配信ログでクリックログ/開封ログが増えること
3. GA4のリアルタイムでフォームページビュー(仮想URL)が取れること
4. 入力→確認→完了のPV/イベントが想定通り増えること
パターンB(クリックカウント不使用)の場合
1. テスト配信を行い、メールのリンクをクリックして遷移できること
2. 遷移先URLに
tid
パラメータが付与されていること
3. GTMプレビューで
CK_tid
が入力→確認→完了で同じ値になっていること
4. GA4のDebugViewで
tid
パラメータが送信されていること
5. GA4の探索で
tid
ごとの進捗が確認できること

よくある失敗と対処

GA4のPVが二重になる:GA4の二重計測防止設定(履歴イベント)を確認
仮想PVが取れない:GTMの変数(document.title)とルックアップの一致を確認
クリックカウントURLにtidを付与できない:ver.2の仕様制限。パターンBに切り替えるか、SPIRAL配信ログで個人追跡する
クリックはあるのに回答が増えない:フォームUX(必須項目/エラー/導線)を改善、リマインド運用を追加

まとめ

ver.2では、クリックカウント機能の制限により、
GA4での個人追跡とクリック数計測を両立することが難しい場合があります。
要件に応じて以下のパターンを選択してください。

パターンA:クリック数計測を重視 → クリックカウント使用、個人追跡はSPIRAL配信ログで
パターンB:GA4での個人追跡を重視 → クリックカウント不使用、URLに直接tid埋め込み

いずれの場合も、
GA4には個人情報を送らず、トークン(tid)のみを付与する設計により、
安全に「誰が未回答か」を追跡できます。

解決しない場合はこちら コンテンツに関しての
要望はこちら