• Google Analyticsのクロスドメイン計測はリンクとフォームでcookie情報を渡す

Google Analyticsのクロスドメイン計測はリンクとフォームでcookie情報を渡す

公開日: 執筆:佐藤

Google Analyticsで二つの別ドメインを一つの訪問として計測するには、両方で同じトラッキングIDを使い、_setAllowLinker(true)を設定します。そのうえで、ドメインを移るリンクは_link()、フォーム送信は_linkByPost()を使い、訪問者と流入元を示すcookie情報を移動先へ渡します。

同じトラッキングコードを置くだけでは、別ドメインのcookieを共有できません。反対に、外部サイトへのすべてのリンクへ設定する必要もありません。一続きとして分析するドメインと、実際にまたぐリンクまたはフォームを先に特定します。

クロスドメイン計測が必要なのは一続きの利用経路だけ

たとえば、商品説明とカートが次のように分かれている場合です。

www.example-shop.com
cart.example-service.com

商品説明からカートへ進み、注文完了までを一続きの訪問として見たいなら、クロスドメイン計測を検討します。二つのサイトを同じレポートへ入れたいという理由だけでは決めません。利用者が実際に両方を行き来し、その流れを同じ訪問として分析する目的が必要です。

サブドメインは、別のトップレベルドメインとは設定が異なります。shop.example.comとcart.example.comは、親ドメインexample.comへcookieのdomainを合わせれば、リンクごとに情報を渡さずに計測できます。example-shop.comとexample-service.comのような別ドメインはcookieを直接共有できないため、リンクまたはフォームで渡します。

両方のドメインで同じトラッキングIDを使う

複数ドメイン計測のGoogle公式ガイドは、一つのprofileで複数ドメインを計測する場合、参加するすべてのサイトへ同じトラッキングコードを使うよう案内しています。

両方のドメインで、同じUA-XXXXX-Xを設定します。_setDomainName()には、そのページでcookieを保存するdomainを指定し、_setAllowLinker(true)を_trackPageview()より前に置きます。

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_setDomainName', 'example-shop.com']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);

移動先では、_setDomainName()を移動先のdomainに変えます。_setAllowLinker(true)は、URLまたはフォームから渡されたcookie情報を使えるようにする設定です。片方だけへ入れても、受け渡しは完了しません。

リンクは_link()で移動先URLへ情報を加える

別ドメインへ移る通常のリンクには、_link()を使います。

<a href="https://cart.example-service.com/start"
   onclick="_gaq.push(['_link', this.href]); return false;">
  カートへ進む
</a>

_link()のGoogle公式APIリファレンスは、Google Analyticsのcookie情報をURLパラメータとして別サイトへ渡す命令と説明しています。移動先でも_setAllowLinker(true)が必要です。

同じドメイン内のリンクや、計測対象ではない外部サイトへのリンクには使いません。商品ページからカート、カートから商品ページなど、同じ訪問としてつなぐ境界だけを対象にします。往路だけを設定し、復路のリンクを忘れると、戻ったときに訪問が分かれる可能性があります。

フォームは_linkByPost()でactionへ情報を加える

カートへの移動がフォーム送信なら、_link()ではなく_linkByPost()を使います。

<form action="https://cart.example-service.com/start"
      method="post"
      onsubmit="_gaq.push(['_linkByPost', this]);">
  <button type="submit">購入手続きへ進む</button>
</form>

_linkByPost()は、フォームのactionへcookie情報を加えて送ります。商品IDや数量など、フォーム本来の入力値をGoogle Analyticsが作るわけではありません。注文フォームの値と、訪問をつなぐ情報は別です。

JavaScriptで画面遷移を組み立てる場合や、送信前に別の処理を挟む場合は、_link()または_linkByPost()が実行される順序を確認します。別ドメインへ移れたことだけで、cookie情報まで渡ったとは判断できません。

同じURLパラメータでもutmとは役割が違う

_link()が加える値は、二つのドメイン間で訪問者とキャンペーンのcookie情報を渡すためのものです。utm_source、utm_medium、utm_campaignは、外部の広告やメールから来た流入元を分類するために使います。

Google Analyticsのセッション更新に関する公式記事が説明するように、キャンペーン情報が変わると新しい訪問が始まります。自社サイトから自社カートへ移るリンクへ、新しいutmパラメータを付けて接続を表現しません。それでは、元の流入元を引き継ぐ代わりに、カートへの移動を新しいキャンペーンとして記録することになります。クロスドメインの接続と、外部キャンペーンの命名を分けます。

レポートにはdomain名を含めて同じパスを区別する

複数ドメインを同じprofileへ入れると、Contentレポートには初期状態でRequest URIが表示されます。二つのドメインに/complete.htmlがある場合、どちらのページかを区別できません。

公式ガイドは、クロスドメイン用のprofileを別に作り、HostnameとRequest URIを結合して表示するAdvanced Filterを案内しています。

Field A: Hostname       (.*)
Field B: Request URI    (.*)
Output:  Request URI    $A1$B1

フィルタを最初から唯一のprofileへ適用せず、フィルタのない基準用profileを残します。クロスドメイン用profileで、www.example-shop.com/product.htmlとcart.example-service.com/complete.htmlを区別します。

クリックとフォームを実際に通して確認する

設定後は、コードを見ただけで終えず、利用者と同じ順に移動します。

  1. 両方のドメインで同じUA-XXXXX-Xを使っているか確認する。
  2. 両方で_setAllowLinker(true)が_trackPageview()より前にあるか確認する。
  3. 対象リンクを押し、移動先URLへGoogle Analyticsの値が加わるか確認する。
  4. 対象フォームを送信し、移動先ページまで開くか確認する。
  5. 往路と復路、注文完了までの各境界を確認する。
  6. レポートでHostnameを含むページ名と流入元を確認する。

ブックマークやURLの直接入力で二つのサイトを別々に開いた場合は、linkerを通りません。公式ガイドも、独立して訪れた二つのサイトを一つの開始訪問へ結び付けることはできないと説明しています。クロスドメイン計測は、設定したリンクまたはフォームを通る移動に使います。

第三者のカート側でトラッキングコードやページを変更できない場合は、この方法を完成できません。契約前に、同じGoogle Analyticsコードの設置、_setAllowLinker(true)、URLパラメータの受け入れ、注文完了ページの計測が可能かを確認します。作業を外部へ頼んでも、二つのドメイン、トラッキングID、対象リンク、対象フォーム、基準用profileは事業者側で把握します。

戻る