基本情報
| 項目 | 内容 |
|---|---|
| テーマ | GA4のアフィリエイトリンククリック計測: イベント名とパラメータ設計の調査結果 |
| 分類 | イベント |
| 読めること | アフィリエイトクリックをGA4イベントとして見るための命名とパラメータ設計。 |
| 形式 | 実務手順と確認項目を整理したガイド |
| 確認日 | 2026-07-16 |
調査結論
GA4の拡張計測機能を有効にすると、外部ドメインへ移動するリンククリックは自動的に click イベントとして収集される。自動収集される主なパラメータは link_url、link_domain、link_id、link_classes、outbound である。
ただし、アフィリエイト運用で必要になりやすい「広告主・ショップ」「商品識別子」「リンクの設置文脈」までは自動分類されない。そのため、単純な外部流出数だけを確認する場合は自動収集の click を使い、アフィリエイトリンクだけを独立集計して商材・掲載位置別に分析する場合は、カスタムイベント affiliate_click を追加する構成が適する。
affiliate_click はGoogleが定義する推奨イベント名ではなく、本記事で採用する運用上のカスタムイベント名である。Googleのイベント命名規則、予約済み名称・接頭辞、文字数制限を守って使用する。
基本情報
| 項目 | 推奨する設計 |
|---|---|
| 計測対象 | 自サイト上のアフィリエイトリンクを利用者がクリックした時点 |
| 標準イベント | GA4拡張計測の外部リンク用 click |
| 追加イベント | アフィリエイトだけを分けて分析するときの affiliate_click |
| 主なパラメータ | link_url、affiliate_merchant、product_id、link_context |
| 発火条件 | 管理済みの属性またはCSSクラスでアフィリエイトリンクと判定できるクリック |
| 検証方法 | Tag Assistantで発火条件を確認し、GA4 DebugViewでイベントと値を照合 |
| 対象外 | 広告主側の購入、承認、報酬確定、ASPの成果計測 |
| 確認日 | 2026-07-12 |
イベント名の決定
採用する名前
affiliate_click
採用理由:
- 何を計測したイベントかを名前だけで判断しやすい
- 自動収集イベント
clickと分離できる - 小文字とアンダースコアで統一できる
- 特定ASP名や広告主名をイベント名へ埋め込まず、パラメータで分類できる
- 広告主や商品が増えてもイベント定義を増やさずに済む
採用しない例
| Event name | 採用しない理由 |
|---|---|
click | GA4の拡張計測が送る外部リンククリックと区別しにくい |
amazon_click | 広告主ごとにイベントが増え、横断集計しにくい |
rakuten_product_123_click | 商品識別子をイベント名へ埋め込むとイベント数が増え、命名管理が破綻しやすい |
affiliateConversion | クリック時点をコンバージョンや成果確定と誤認させる |
ga_affiliate_click | ga_ など予約済み接頭辞との衝突を避けるため使用しない |
自動収集clickとaffiliate_clickの比較
| 比較項目 | 自動収集 click | カスタム affiliate_click |
|---|---|---|
| 設定 | Webデータストリームの拡張計測で外部クリックを有効化 | GTMまたはGoogleタグで追加実装 |
| 主目的 | サイト外へ移動したリンクの全体把握 | アフィリエイトリンクだけの業務分析 |
| 対象 | 現在のドメインから外部サイトへ向かうリンク | 自社がアフィリエイトリンクと定義したリンク |
| 主な情報 | link_url、link_domain、link_id、link_classes、outbound | link_url、affiliate_merchant、product_id、link_context など |
| 広告主別集計 | link_domain で概算可能だが、リダイレクトURLや同一ASPドメインでは不十分 | 正規化した affiliate_merchant で集計可能 |
| 商品別集計 | 原則として自動では取得しない | product_id を送れば可能 |
| 掲載位置別集計 | CSS classやIDで一部推測できる | link_context を明示して集計可能 |
| クロスドメイン設定の影響 | クロスドメイン計測対象のドメインへのリンクは外部クリックとして発火しない | 独自トリガー条件に一致すれば発火可能 |
| 二重計測 | affiliate_click と同時に記録される場合がある | 自動 click と目的を分けて分析する必要がある |
| 適するケース | 外部リンク全体の件数だけ確認したい | 収益導線、商材、カード位置、CTA別に改善したい |
パラメータ設計
最小必須パラメータ
| Parameter | Type | Example | Meaning | Source classification |
|---|---|---|---|---|
link_url | string | https://example-merchant.jp/item/abc | クリック時点の遷移先URL | GA4の外部クリックでも使用される公式パラメータ名 |
affiliate_merchant | string | example_merchant | 広告主・ショップ・サービスの正規化名 | 本記事のカスタムパラメータ |
product_id | string | SKU-ABC-001 | 自サイトまたはASPで管理する商品識別子 | 本記事のカスタムパラメータ |
link_context | string | article_body_product_card | リンクの設置位置やUI文脈 | 本記事のカスタムパラメータ |
推奨追加パラメータ
| Parameter | Type | Example | Purpose |
|---|---|---|---|
link_text | string | 公式サイトで確認 | CTA文言別の比較 |
content_id | string | ga4-affiliate-click-event-naming | クリック元記事・コンテンツの識別 |
placement_id | string | card_03_primary_cta | 同一ページ内の具体的な配置識別 |
affiliate_network | string | network_a | ASPまたは提携ネットワーク別の集計 |
campaign_id | string | summer_2026 | 自社管理キャンペーンとの関連付け |
値の正規化ルール
affiliate_merchantは表示名ではなく固定の小文字キーにするproduct_idは商品名ではなく変更されにくい識別子にするlink_contextは自由記述にせず列挙値を管理する- URLにメールアドレス、氏名、会員ID、検索語などの個人情報が含まれる場合は、そのまま送らない
- 値が存在しないときに空文字を送るのではなく、実装要件を見直す
- カスタムディメンション登録名と送信パラメータ名を混同しない
link_context の例:
header_nav
article_body_text
article_body_product_card
comparison_table
sidebar_banner
sticky_cta
footer_recommendation
GTMでaffiliate_clickを実装する手順
1. 対象リンクへ識別属性を付ける
プレーンなリンク:
<a
href="https://example-merchant.jp/item/abc"
data-affiliate-link="true"
data-affiliate-merchant="example_merchant"
data-product-id="SKU-ABC-001"
data-link-context="article_body_text"
>
公式サイトで確認
</a>
アフィリエイトリンクかどうかをURL文字列だけで判断すると、ASPのリダイレクトURL、短縮URL、通常の外部リンク、クロスドメイン対象リンクを混同しやすい。可能な場合は専用のdata属性または管理済みCSSクラスを付与する。
2. GTMで必要な変数を有効化する
クリック組み込み変数:
- Click URL
- Click Text
- Click Element
- Click Classes
- Click ID
DOM要素またはカスタムJavaScript変数で、クリックされたリンクの次の属性を取得する。
data-affiliate-merchantdata-product-iddata-link-context
3. リンククリックトリガーを作成する
推奨設定:
Trigger type: Click - Just Links
Fire on: Some Link Clicks
Condition: Click Element matches CSS selector
Value: [data-affiliate-link="true"], [data-affiliate-link="true"] *
子要素を含むボタン型リンクでは、クリック対象が <a> 内の画像や <span> になる場合がある。Click Element とCSSセレクターの一致方法をプレビューで確認する。
4. GA4イベントタグを作成する
Event name: affiliate_click
イベントパラメータ:
| Parameter name | GTM value |
|---|---|
link_url | {{Click URL}} |
affiliate_merchant | 対象リンクの data-affiliate-merchant |
product_id | 対象リンクの data-product-id |
link_context | 対象リンクの data-link-context |
link_text | {{Click Text}} |
content_id | ページまたは記事の固定識別子 |
GoogleタグまたはGA4設定タグとの関連付け、送信先測定ID、イベント設定変数の構成はコンテナの既存設計に合わせる。
5. GTMプレビューで発火を確認する
確認項目:
- 対象リンクをクリックしたときだけトリガーが成立する
- 通常の外部リンクでは
affiliate_clickが発火しない - 1回のクリックにつきGA4イベントタグが1回だけ発火する
link_urlが最終的なクリック先として取得されるaffiliate_merchant、product_id、link_contextが空でない- 新しいタブ、同一タブ、画像内クリックでも意図どおり動く
6. GA4 DebugViewでイベントを確認する
DebugViewで次を確認する。
- イベント名が
affiliate_click - イベント時刻が操作時刻と一致
- 必須4パラメータが存在
- 同一操作で複数の
affiliate_clickが発生していない - Consent Modeを使う環境では、同意状態がテスト条件と一致
- テスト端末が内部トラフィック除外やブラウザ拡張機能の影響を受けていない
7. カスタムディメンションを登録する
GA4の標準レポートや探索で継続的に分類へ使うカスタムパラメータは、イベントスコープのカスタムディメンションとして登録する。
登録候補:
affiliate_merchantproduct_idlink_contextaffiliate_networkplacement_id
link_url など既存ディメンションで利用できる値を、重複してカスタム定義しない。
8. 公開後の実データを確認する
公開後はリアルタイム、DebugView、探索、BigQuery Exportを用途に応じて確認する。DebugViewで見えることと、標準レポートへ処理済みデータが反映されることは同一ではないため、公開直後の判断をDebugViewだけで完結させない。
直接gtag.jsで送る代替例
<a
href="https://example-merchant.jp/item/abc"
data-affiliate-link="true"
data-affiliate-merchant="example_merchant"
data-product-id="SKU-ABC-001"
data-link-context="article_body_text"
>
公式サイトで確認
</a>
<script>
document.addEventListener("click", function (event) {
const link = event.target.closest('a[data-affiliate-link="true"]');
if (!link) {
return;
}
gtag("event", "affiliate_click", {
link_url: link.href,
affiliate_merchant: link.dataset.affiliateMerchant,
product_id: link.dataset.productId,
link_context: link.dataset.linkContext,
link_text: link.textContent.trim()
});
});
</script>
注意点:
gtagが初期化済みであることを確認する- 同じリンクをGTMでも計測すると二重送信になる
- SPAでDOMが動的に差し替わっても、documentへのイベント委譲なら追加要素を捕捉できる
- Consent ModeまたはCMPの処理順序に従う
- ページ遷移前にイベント送信を保証する目的で、安易に長い遅延や操作阻害を追加しない
実装シナリオ1: プレーンな外部リンク
状況
記事本文に、広告主の商品ページへ直接移動するテキストリンクが1つある。
推奨構成
- GA4拡張計測の
clickは外部リンク全体の把握用として維持 - 対象リンクへ
data-affiliate-link="true"を付ける - GTMで
affiliate_clickを追加送信 link_contextはarticle_body_textproduct_idは記事内で固定した商品管理ID- イベントをキーイベントへ指定するかは、クリックを事業上の重要行動として扱うかを別途判断
判断理由
このケースでは自動 click だけでも外部遷移は確認できるが、通常の参考リンクとアフィリエイトリンクを分離できない。収益導線だけを集計するため、カスタムイベントを追加する価値がある。
実装シナリオ2: 動的に描画される商品カード
状況
JavaScriptまたはCMSコンポーネントが商品カードを動的に描画し、カード全体、画像、商品名、CTAボタンの複数箇所から同じ商品ページへ移動できる。
推奨構成
- 各クリック可能要素を同じ商品IDへ関連付ける
- カード内のどこを押したかを
placement_idまたはlink_contextで分ける - DOM生成時にdata属性を付与する
- GTMではdocumentレベルのクリックリスナーが取得するイベントを利用し、動的描画後の要素も対象にする
- カード全体と内部ボタンのイベントがバブリングで重複しないか確認する
- 1操作1イベントになるよう、トリガー条件または実装コードを調整する
例:
<article
class="product-card"
data-product-id="SKU-ABC-001"
data-affiliate-merchant="example_merchant"
>
<a
href="https://example-merchant.jp/item/abc"
data-affiliate-link="true"
data-affiliate-merchant="example_merchant"
data-product-id="SKU-ABC-001"
data-link-context="article_body_product_card"
data-placement-id="card_03_image"
>
<img src="/images/abc.webp" alt="商品ABC">
</a>
<a
href="https://example-merchant.jp/item/abc"
data-affiliate-link="true"
data-affiliate-merchant="example_merchant"
data-product-id="SKU-ABC-001"
data-link-context="article_body_product_card"
data-placement-id="card_03_primary_cta"
>
公式サイトで確認
</a>
</article>
判断理由
動的カードは、クリック対象がリンク本体ではなく画像・アイコン・子要素になることがある。URL条件だけでなく、クリック要素と最寄りの対象リンク・カード属性を正しく参照する設計が必要である。
検証シーケンス
| Step | 操作 | Expected result |
|---|---|---|
| 1 | GA4 Webデータストリームで拡張計測の外部クリック設定を確認 | 自動 click を使うか、意図的に無効化しているかが記録されている |
| 2 | GTMプレビューを開始 | Tag Assistantが対象ページへ接続する |
| 3 | 通常の内部リンクをクリック | affiliate_click は発火しない |
| 4 | 通常の外部参考リンクをクリック | 自動 click は発生し得るが、affiliate_click は発火しない |
| 5 | プレーンなアフィリエイトリンクを1回クリック | affiliate_click が1回発火し、必須パラメータが埋まる |
| 6 | 動的商品カードの画像をクリック | 商品IDと画像用placementが送信される |
| 7 | 同じカードのCTAをクリック | 同じ商品IDとCTA用placementが送信される |
| 8 | GA4 DebugViewを確認 | affiliate_click と各パラメータが見える |
| 9 | 同意拒否・同意許可を別々にテスト | CMPとConsent Modeの設計どおりに送信・表示状態が変わる |
| 10 | クロスドメイン対象リンクをテスト | 自動 click が発火しない場合でも、カスタムトリガーの結果を別に確認できる |
| 11 | 公開後の実データを確認 | テスト用値、空値、重複、異常に多いイベント数がない |
| 12 | カスタムディメンションを確認 | 探索で広告主・商品・設置文脈を分類できる |
失敗・障害対応表
| Symptom | Likely cause | Verification | Correction |
|---|---|---|---|
1回のクリックで affiliate_click が2回以上発生する | GTMと直接gtagの併用、親子要素に複数トリガー、同一タグを複数コンテナから送信 | Tag Assistantで発火タグとコンテナを確認し、Networkリクエスト数も照合 | 送信経路を1つに統一し、トリガーを1操作1回へ限定 |
自動 click と affiliate_click の両方が記録される | 拡張計測の外部クリックとカスタムイベントがそれぞれ正常に発火 | DebugViewでイベント名を区別 | 二重障害ではない。用途を分ける。全外部流出は click、収益導線は affiliate_click で分析 |
affiliate_merchant が空 | data属性がない、変数が子要素を参照、属性名の表記不一致 | Tag AssistantのVariablesタブで値を確認 | closest() 相当で対象リンクを参照するか、DOM変数の取得元を修正 |
product_id が空 | 商品IDをHTMLへ出していない、動的描画前に取得している | 実DOMとdataLayerを確認 | コンポーネント描画時に固定IDを付与し、クリック時点で取得 |
link_url が想定外のASPリダイレクトURL | 実際のhrefが中継URLである | DOMのhrefとNetwork遷移を確認 | クリック先として中継URLを保持し、必要なら別パラメータに広告主・商品を正規化して送る |
| DebugViewに表示されない | デバッグモード未設定、誤った測定ID、プライバシー制御、Consent Modeで未同意、広告ブロッカー | Tag Assistant、測定ID、同意状態、ブラウザ拡張を確認 | テスト環境を分離し、同意条件を明示して再検証 |
| GTMでは発火するがGA4に届かない | Googleタグの設定、送信先、測定ID、同意状態、ネットワーク遮断 | Tag Assistantのタグ詳細とブラウザNetworkを確認 | GA4送信先とGoogleタグ構成を修正 |
クロスドメイン先へのリンクで自動 click が出ない | 対象ドメインがクロスドメイン計測に設定されている | Webデータストリームのクロスドメイン設定を確認 | 仕様どおり。外部流出として扱うべきか、同一ユーザージャーニーとして扱うべきかを再判断 |
| クロスドメイン計測を設定したのに購入成果が見えない | クリック計測と遷移先サイトのGA4実装・権限・成果イベントは別問題 | 遷移先ドメインのタグ、プロパティ、イベント、参照除外を確認 | 自社管理外の広告主サイトでは購入計測できない。ASP成果データと別管理 |
| パラメータはDebugViewにあるがレポートで使えない | カスタムディメンション未登録、反映前、スコープ不一致 | GA4管理画面のカスタム定義を確認 | イベントスコープで登録し、登録後のデータを確認 |
| アフィリエイトクリックが通常より極端に多い | ボット、誤発火、カード描画時発火、クリック以外の可視性トリガー | 発火イベント、ユーザー操作、ページ、デバイス別に確認 | クリック操作だけを条件にし、可視性イベントと分離 |
| 同意拒否時にも想定外のデータが送信される | Consent Modeの既定値・更新順序・タグ設定が不整合 | Consent overview、Tag Assistant、Networkを確認 | CMPとGoogleタグの初期化順序を修正し、法務・社内方針に従って再設定 |
| URLに個人情報が混入する | リンク先URLのクエリにメールアドレスや会員IDを含む | link_url の実値を確認 | URL設計を修正し、不要なクエリを除去または送信前に安全な値へ置換 |
制約と例外
クリックは成果確定ではない
affiliate_click は、自サイト上でリンクがクリックされた事実を示す。次の事実は示さない。
- 遷移先ページが正常に表示された
- 商品が購入された
- ASPが成果を受け付けた
- Cookieまたは識別情報が保持された
- 注文が承認された
- 報酬が確定した
売上・承認・報酬はASPまたは広告主側の成果データと突合する。
自動clickが発生しない外部リンクがある
クロスドメイン計測の対象に設定したドメインへのリンクは、GA4の外部クリックとして扱われない。この動作を計測漏れと誤認しない。
リダイレクトURLでは広告主をURLだけで判定できない
複数広告主のリンクが同一ASPドメインを経由する場合、link_domain はASPドメインになる。広告主別に分析するには、affiliate_merchant を自サイト側で付与する。
JavaScriptを使わない遷移・特殊UI
通常の <a href> ではないクリック、Shadow DOM、iframe、独自Web Component、別ウィンドウ制御では、GTMの標準クリック変数だけで取得できない場合がある。コンポーネント側からdataLayerイベントを送る実装を検討する。
カスタムパラメータには管理コストがある
自由な値を大量に送ると、表記揺れや高カーディナリティにより分析しにくくなる。広告主名、設置文脈、商品IDの命名台帳を管理する。
プライバシー・法令判断はGoogle公式文書だけで完結しない
Consent Modeは同意シグナルをGoogleタグへ伝える仕組みであり、個別サイトの法的適合性を保証するものではない。対象地域、利用規約、プライバシーポリシー、CMP、社内ルールを確認する。
Reference links
確認日: 2026-07-12
Google Analytics
- Enhanced measurement events
- Measure outbound clicks
- Automatically collected events
- Set up events
- Recommended events
- Set up event parameters
- Monitor events in DebugView
https://support.google.com/analytics/answer/9216061?hl=ja
https://support.google.com/analytics/answer/13566436?hl=ja
https://support.google.com/analytics/answer/9234069?hl=ja
https://developers.google.com/analytics/devguides/collection/ga4/events?hl=ja
https://developers.google.com/analytics/devguides/collection/ga4/reference/events?hl=ja
https://developers.google.com/analytics/devguides/collection/ga4/event-parameters?hl=ja
https://support.google.com/analytics/answer/7201382?hl=ja
Google Tag Manager and consent
- Click trigger
- The data layer
- Set up consent mode on websites
- Consent types
https://support.google.com/tagmanager/answer/7679320?hl=ja
https://developers.google.com/tag-platform/tag-manager/datalayer
https://developers.google.com/tag-platform/security/guides/consent?hl=ja
https://support.google.com/analytics/answer/12334711?hl=ja