トラップ1: リダイレクト1

事象

最初のトラップ事象はサーバーサイドのリダイレクトにより、クロスドメイン・トラッキング用のパラメーターが抜け落ちてしまうケースです。PC・スマートフォン間でURLが異なるケースでのリダイレクトの他、サイトのリニューアルやページの統廃合に伴い301/302リダイレクトを行っているケース、ログイン/非ログインによりページの表示内容を制御しており、その出しわけでリダイレクトを行っているケースなどで、リダイレクトの実装方法によって発生する可能性があります。

この罠にハマっているかどうかを確認するには、クロスドメインのリンクをクリックしたときに、「最初に遷移先のページURLにクエリパラメーターが付与されている」「ページ遷移時に、リダイレクトが行われ、リダイレクト後にクエリパラメーターが消えている」の2つを満たすかどうかで確認しましょう。

解決策

リダイレクトに対する解決策は、「ハッシュパラメーター」の利用です。具体的には、本サイトの過去記事「上級者向け、ハッシュ形式を使ったクロスドメイントラッキングで解説しているので、ご覧ください。本記事では、過去に紹介していることもあり、その記事のURLを引用するだけに留めます。

トラップ2: リダイレクト2

事象

リダイレクトには別パターンのトラップも存在します。それは、「HTML上のリンク先URLは同ドメインのURLであるが、そのリンク先URLからサーバーサイドのリダイレクトにより外部ドメインにリダイレクトされる」パターンです。リンク先URLが自ドメインと同じであるため、通常のクロスドメインの「自動リンクドメイン」の設定を行っても思い通りの結果にはなりません。

解決策

自動リンクドメインの設定では、現在のページのドメインとクリック先のドメインが一致していた場合、どのような設定を行ったとしても、クロスドメイントラッキングの機能は有効化されません。解決策としては、Googleタグマネージャーを使い、Googleアナリティクスタグの「リンクを装飾」機能を利用することです。「リンクを装飾」は、ページビュータグやイベントタグと同様に、Googleタグマネージャーを使って設定可能な「タグ」の1種です。

このタグは、リンククリック・トリガーと共に利用されることが想定されたタグであり、トリガーとなったリンクに対して、クロスドメイン・トラッキング用のクエリパラメーターを追加する役割があります。そして重要なことは、自動リンクドメインの設定に依存することもなく、また現在のページのドメインとリンク先URLのドメインが同一であったとしても、クロスドメイン・トラッキング用のパラメーターを追加する点です。

トラップ3: 遷移先ページのGAタグがiframeの中にある

事象

ASPの問い合わせフォームを利用しているケースなどでこの事象に該当するケースに遭遇する可能性があります。具体的には、下図のようにクロスドメイントラッキングの遷移先ページ本体にGTM/GAタグを設置することができず、遷移先ページ内のiframeの中にしかGTM/GAタグを設置できないケースです。

この場合、GTM/GAタグを設置するiframe内のページには、クロスドメイン・トラッキング用のパラメーターが付与されていないため、このままではクロスドメイントラッキングを成立させることができません。

解決策

iframeの外側にGoogleアナリティクスタグを設置できる場合は、そのようにするのが一番確実な解決策です。しかしながら、このような事象が発生しているケースで、iframeの外側にGoogleアナリティクスタグを設置することは難しいでしょう。

対策としては、iframeの中から呼び出し元のURLを取得してそのURLに設定されているクロスドメインのパラメーターを利用することです。具体的には、iframe内でJavaScriptを使ってリファラーを取得すると、親WindowのURLを取得でき、そこにクエリパラメーターが設定されています。

下記のHTMLタグを該当ページにおけるGoogleアナリティクスタグのセットアップタグとして設定します。このJavaScriptコードは、iframe内部で呼び出されることを前提としており、リファラーのURL(ここにクロスドメイントラッキング用のパラメーターがついていることが想定される)からクロスドメイントラッキングのパラメーターを抜き出して、現在のページ(iframe内のページ)のハッシュに設定しています。クエリパラメーターに設定すると、再びこのiframeの内部が再読み込みされてしまうため、ハッシュに設定するようにしています。

<script>
(function() {
  var _ga = document.referrer.match(/[?&]?_ga=([^&]*)/g)[0];
  location.hash = '#_ga=' + _ga;
})();
</script>

これにより、GTM/GAの設置しているページのURLにクロスドメイントラッキングのパラメーターが渡されるため、晴れてクロスドメイントラッキングが成功する、というわけです。

トラップ4: フォームによる外部ドメイン遷移

事象

通常のクロスドメイントラッキングの設定では、<a>タグ(厳密には、<area>タグも対象)による指定したドメインへの遷移の際に自動リンカープラグインにより、パラメーター追加の処理が実行されます。しかし、ページ遷移を行う方法は、<a>タグ以外に、フォームによる遷移も存在します。デフォルトの設定ではフォームによる遷移はサポートしていないので、クロスドメイントラッキングが失敗する要因になり得ます。

解決策

デフォルトの設定ではフォームによる遷移はサポートされていないですが、自動リンカープラグインのオプションを利用することで、フォームによる遷移をサポートするように設定することが可能です。

Googleタグマネージャーを使った設定では、以下のように「装飾フォーム」の設定をTrueにするだけで解決します。

トラップ5: JavaScriptのlocation.hrefなどを使ったページ遷移

事象

ページ遷移の方法は、<a>タグ(または<area>タグ)による遷移、<form>タグによる遷移だけとは限りません。他に、JavaScriptのlocation.hrefを直接書き換える方法でページ遷移することや、History APIを使ってページ遷移する方法が存在します。

このようなlocation.hrefやHistory APIを使った場合、自動リンカー・プラグインを動作させることはできません。History APIは、最近ではVue.js(Nuxt.js)やAngularJS、Reactなどを用いたシングルページ・アプリケーションで使われることがほとんどであるため、事前に対策することもできます。しかしlocation.hrefは、唐突に使われることも多いので、うまく動かなくて詳しく調べてみたらlocation.hrefが原因だった、ということもあります。

このトラップのハマりやすいポイントは、HTML上は<a>タグやフォームが用いられているので、簡単にクロスドメイン・トラッキングができるかと思いきや、JavaScriptコードの奥深くで、<a>タグやフォームの本来の動きをキャンセルして、location.hrefを使っていることにより、思い通りの挙動にならないことが多い点です。

解決策

これらの事象については、現時点で簡単にクロスドメイン計測を行う方法は存在しないと思います。自動リンカー・プラグインが利用できないため、手動でのリンカー追加を行う必要があります。手動でのリンカー追加については、公式の開発者向けヘルプページに書かれているので、こちらを参考にするよ良いでしょう。厳密には、手動追加の方法は、decorateメソッドを使う方法とlinkerParamフィールドから取り出してURLに追加する方法があります。decorateメソッドを使う方法は、トラップ2の解決策で提示している「リンクを装飾」タグの挙動と同じものになります。そのため、location.hrefやHistory APIなどによる遷移の場合、linkerParamフィールドからリンカーパラメーターを手動で取り出す方法が使われます。

以下は、サンプルのコード(イメージ)になります。実際に利用する際は、綿密にテストをしてご利用ください。

document.getElementById('site-search-btn').addEventListener('click', function() {
  var query = document.getElementById('query').value;
  var tracker = ga.getAll()[0];
  location.href = "https://mysite.search.com?q=" + query + "&_ga=" + tracker.get('linkerParam');
});

まとめ

今回の記事では、クロスドメイン・トラッキングで陥りやすいトラップについて4つ挙げるつもりで記事を書いたところ、最終的に5パターンも出てきてしまいました。基本的なクロスドメイン・トラッキングであれば、様々な記事でも取り上げられており、またGoogleタグマネージャーを使うことでプログラムコードを記述することなく実現できるため、身近に思う人も増えてきたと思います。しかしながら、どんなケースでも思い通りにクロスドメイン・トラッキングを成功させようと思うと、ここに出てきたようなトラップにも対処できる必要があります。