Intro.js と
この
結果を
作成した JavaScript と、 サンプル HTML
作成した JavaScript と、
IntroStarter.js
以下のような、
window.IntroStarter = { _sendGTM : function(tutorialId, eventName) { window.dataLayer = window.dataLayer || []; dataLayer.push({"event" : "tutorial.event", "eventCategory" : "tutorial", "eventLabel" : tutorialId, "eventAction" : eventName, "eventValue" : 1 }); }, start : function(tutorialId) { var self = this; // Start! self._sendGTM(tutorialId, "start"); introJs().oncomplete(function() { // Complete! self._sendGTM(tutorialId, "complete"); }).onexit(function() { // Exit.. self._sendGTM(tutorialId, "exit"); }).onbeforechange(function(targetElement) { // Beforechange if (typeof targetElement === "undefined") { return; } var step = targetElement.getAttribute("data-step"); if (typeof step === "undefined") { return; } // eventName var eventName = "Change To Step [" + step + "]"; self._sendGTM(tutorialId, eventName); }).start(); } };
実装内容の
説明
実装した内容の 説明を 記載します。 _sendGTM
GTM のdataLayer 変数を 使って、 GTM イベントを 送信する メソッドです。
コールバック関数内で何度か 使用するので、 対象箇所を メソッド化しました。 start
Intro.js のチュートリアル開始時に、 各コールバック関数を 追加する メソッドです。
Intro.js を少し動かした 感じだと、 onexit
、oncomplete
、onbeforechange
に実装して おけば チュートリアルの 挙動は 大体拾えそうに 思いましたので その 3つに 実装しています。
Intro.js にはhint と いう チュートリアルの 表示方法も あり、 そちらを 使う 場合は、 onhintclick
、onhintclose
に追加実装を すると いい 感じに 拾えると 思います。ちなみに、 チュートリアル開始前に、 self._sendGTM(tutorialId, "start");
でstart を 送信していますが、 初回の 表示も、 onbeforechange
で表示できるのでいらない 気も しています。
呼び 出し側の 記述
呼び出し側の
<a class="navbar-link" href="javascript:void(0)" onclick="javascript:IntroStarter.start('1234')">Demo</a>
GTM と 連携させた サンプル
Github page に
GTM イベントが
GTM の 実装
Alert ダイアログの
変数
以下、
IntroJS イベントアクション
データレイヤから、eventAction
変数を取得しています。 IntroJS イベントカテゴリ
データレイヤから、eventCategory
変数を取得しています。 IntroJS イベントラベル
データレイヤから、eventLabel
変数を取得しています。 IntroJS イベント値
データレイヤから、eventValue
変数を取得しています。
トリガー
以下、
- tutorial.event 発火
GTMイベント tutorial.event
を捕捉する トリガーです。
特に条件は なく、 すべての<wbr>カスタム イベント
を捕捉します。
タグ
以下、
GA IntroJS Event 送付
以下、Google Analytics タグの 設定に なります。 イベント送付だけだと、 時系列の 送付タイミング、 誰が 送信したのかが わかりにくいので、 clientId と TimeStamp を 送付しています。 clientId に
ついて
custumTask として 送付しています。 GTMで Googleアナリティクスの Client IDを 取得する 一番確実で 楽な 方法(2018年版) - 清水誠メモ に 記載されている 方法で 送付しています。 TimeStamp に
ついて
GTMでGoogleアナリティクスの アクセス時間を 計測しよう - 清水誠メモ に 記載されている 方法で 送付しています。
clientId X TimeStamp
の組み合わせで イベントが サマリ表示されないようになります。
IntroJs Alert 出力
以下、JavaScript で GTM イベントで 捕捉した データを Alert 出力する タグです。
上記は画像なので、 コードの 部分を 使用する 場合は 以下を コピー & ペーストしてください。 <script> var messageString = "category:" + {{IntroJSイベントカテゴリ}} + ",action:" + {{IntroJSイベントアクション}} + ",label:" + {{IntroJSイベントラベル}} + ",value:" + {{IntroJSイベント値}}; alert(messageString); </script>
業務上使用する 場合の 留意事項
以下、
会員制の
サイトでは 会員を 特定できる カスタムディメンションを 設定する
会員制サイトの場合、 会員 ID を 紐付けしないと 誰が チュートリアルを 触ったのかわからない 場合が あります。
そのような ケースでは、 会員 ID (ログイン時に 使わない システム的な ID) を セキュリティルールを クリアしたうえで 設定するのが いいかと 思います。 コンテンツ情報を
含めたい 場合、 PageUrl も カスタムディメンションに 設定する
このイベント設定だと、 PageUrl の 確認が 若干面倒です。 使用用途に よっては、 PageUrl も カスタムディメンションに 入れておいた ほうが いいかもしれません。
参考
以下、
- こんな
ときどうする ?Intro.js設定・Tips集 - Qiita - dataLayerへ値を
渡す 記述を .pushで 統一する 方法 - Firing javascript function between intro.js steps - Stack Overflow
以上です。
コメント