コールトラッキングを行うための2つの手法

コールトラッキングを行うための方法には、大きく2種類存在します。1つ目は、ウェブサイト内の電話番号の書かれたリンクを「タップした回数」をカウントする方法で、2つ目は電話番号を変えてしまい電話会社からの利用明細を元にカウントする方法です。

リンクをタップした回数をカウントする方法

この方法は、ウェブサイト上の実装が非常に簡単にでき、かつ利用にコストがかからないため、Googleアナリティクスのイベントトラッキングを駆使して実装している方も多いと思います。しかしながら一方で、あくまでも計測できるのは「リンクをタップした回数」であり、その後本当に架電したかどうかを計測することはできません。そのため、Googleアナリティクスのイベントを計測して数値として見えるようにすることを行なっている方はいますが、Web広告のコンバージョンとして設定し、その数値で運用している方は一気に減ってしまいます。また、この計測方法では、スマートフォンへのサイトアクセスについてしかコンバージョンをカウントできず、PCでサイトにアクセスしたユーザーのコンバージョンはカウントできません。

電話会社からの利用明細を元にカウントする方法

よくあるコールトラッキングの有料サービスではこの手法を採っています。具体的にはフリーダイヤルを大量に保有するベンダーが電話番号を貸し出して、サイトへの流入経路に応じて電話番号を出し分けた上で、電話会社からの利用明細を元に電話番号ごとに架電数をカウントします。この方法は、サービスの利用料が必要になるため有料になってしまうものの、実際の架電数(サービスによっては通話時間)を元にカウントすることができるため精度の高いコールトラッキングが可能です。さらには、PCでサイトにアクセスしたユーザーが手元のスマートフォンで電話したケースでのコンバージョンカウントも可能です。

2つの手法のまとめ

手法 メリット デメリット
リンクをタップした回数をカウント 無料で気軽に行うことができる 計測の精度に課題がある
利用明細を元にカウント 実際の架電数・通話時間を元にカウントでき、精度が高い 基本的に有料でかつコストが高い

解決案

一般的に使われている2つの手法はどっちも一長一短あり、満足できる計測が実現できているサイトはほとんどないのが現状です。
この記事では、「リンクをタップした回数をカウントする」方法をベースにしながら、計測精度の問題を向上させる方法を紹介します。

核となるアイディア

今回のアイディアは「実際に電話をしていないのであれば(間違って電話番号リンクをタップした場合)、リンクをクリックしてからサイトに戻ってくるまでの時間が短いはずである」という考えに基づいています。当然ながら、実際に架電した場合は5秒程度でサイトに戻ってくることは難しいはずです。

上記のアイディアに基づいて、今回の解決案では、 電話番号リンクをタップしたタイミングではイベントを送信せず に、タップした後 サイトに戻ってきたタイミングでイベントを送信する だけです。そして、リンクをタップしてからサイトに戻ってくるまでの時間を測って置き、一定時間経過していなければイベント送信を取りやめるようなロジックを仕込みます。

これなら、計測の精度を飛躍的に高めることができそうですよね。

Googleタグマネージャにおける実装例

では、上記のアイディアをGoogleタグマネージャで実装する方法を紹介します。

イベント初期化のためのカスタムHTMLタグを作成

下記の内容のカスタムHTMLタグを作成してください。トリガーは、架電計測を行いたいページの「DOM Ready」が望ましいです。「document.write」は使っていないので有効にする必要はありません。

<script type="text/javascript">
;(function() {
  var calltracking = undefined;
  document.addEventListener('click', function(e) {
    if (e.target && e.target.href && e.target.href.indexOf('tel:') == 0) {
      calltracking = {
        timestamp: (new Date()).getTime(),
        element: e.target
      };
    }
  });
  callListener = function () {
    if (calltracking) {
      var diff = (new Date()).getTime() - calltracking.timestamp;
      dataLayer.push({
        'event': 'Call',
        'gtm.element': calltracking.element,
        'duration': Math.floor(diff / 1000)
      });
      calltracking = undefined;
    }
  };
  document.addEventListener('touchstart', callListener);
  document.addEventListener('mousemove', callListener);
})();
</script>

データレイヤー変数を作成する

上記のスクリプトでは、独自のデータレイヤー変数として「duration」を定義しているので、Googleタグマネージャ上で「duration」変数が利用できるようにデータレイヤー変数に登録します。ここでは変数名は「Duration」としています。

「Duration」には、電話番号リンクをクリック(タップ)してから、次にページに戻ってきてアクション(スクリーンのタッチまたはマウスの移動)を行うまでの時間が「秒」で設定されます。

架電計測のためのトリガーを作成する

上記のスクリプトでは、電話番号リンクをクリックしたのちにページに戻ってきてから「スクリーンのタッチ」「マウスの移動」を行ったタイミングで、「Call」という名前のカスタムイベントが送信されるようになっています。

また、「Call」というカスタムイベントは電話番号リンクをクリックした後、「一定時間が経過した」かどうかに関わらず実行されます。そこで、トリガーの条件を追加して、経過時間(「Duration」)に対する条件を指定します。例えば、「Duration」「大きい」「5」と指定することで、5秒以上経過した時にしか反応しないトリガーとなります。この秒数の制限は自由に変えることができるので、実装して一定期間テストしたのちに判定条件を変えるのがいいでしょう。

イベントタグを作成する

作成した「架電計測のためのトリガー」を紐付けたGoogleアナリティクスのイベントトラッキングタグを作成します。
カスタムHTMLタグ上で、dataLayer変数にイベントをpushするタイミングで、「gtm.element」にクリックされた要素を指定しているため、「Click URL」をイベントラベルなどに指定することが可能です(gtm.elementにクリックされた要素を入れているので、架電計測のためのトリガーを作成する時に、「Click URL」や「Click Element」などで対象となるリンクを絞り込むことも容易です)。

また、トリガーで設定した「経過時間の閾値(Duration)」の最適化を測るためにも、イベント値(またはイベントラベルなど)に対して「Duration」を入れておくのも良いと思います。

まとめ

実装が容易で単純なアイディアで、さらに計測精度を高めることができるにも関わらず、今までこの架電計測方法がどこにも紹介されていないのが今となっては不思議で仕方ないですが、架電計測を行う際はぜひ試してみてください。