Adobe Analyticsとの連携方法


Adobe Analytics(旧サイトカタリスト)と連携することで、VWOのキャンペーンデータをAdobe Analyticsアカウントにインポートすることが可能になります。


連携の手順は下記の2ステップです。


カスタムコンバージョン変数を指定する

Adobe Analytics のアカウントにログインして、トラッキング用の変数としてカスタムコンバージョン変数を指定します。


連携用コードを設置する

Adobe Analytics はVWOの同期タグ、非同期タグのどちらとも連携する事ができます。ただしいずれの場合も、VWOタグは必ず「s_code.js」より先に読み込まれるように設置してください。


連携用コード

VWOと Adobe Analytics を連携させる場合、トラッキング用の変数としてカスタムコンバージョン変数を指定した後、開発元にて提供しているコードをウェブサイトにコピー&ペーストする必要があります。


そのページで走っているキャンペーンが1つのみの場合の連携用コード

キャンペーンが1つのみの場合、下記のコードを使用します。


(function () {

  window.VWO = window.VWO || [];

  var WAIT_TIME = 100,

    analyticsTimer = 0,

    dataSendingTimer;

  var getAccount = function () {

    // Change the variable according to your page

    return window.s_gi(window.s_account || window.s.account);

  };

  // All tracking variable will be contained in this array

  var v = [];

  v.add = function (w, o) {

    v.push({

      w: w,

      o: o

    });

  };

  // Function to send data to Omniture backend

  var sendData = function () {

    var s = getAccount();

    for (var i = 0; i < v.length; i++) {

      s[v[i].w] = v[i].o;

      v[i] = v[i].w;

    }

    s.linkTrackVars = v.join(',');

    s.tl(true, 'o', 'VWO Tracking');

    v.splice(0, v.length);

  };

  //Function to wait for some analytics variables before sending data

  function waitForAnalyticsVariables() {

    if (window.s_gi && window.s && (window.s.account || window.s_account)) {

      clearInterval(analyticsTimer);

      sendData();

    } else if (!analyticsTimer) {

      analyticsTimer = setInterval(function () {

        waitForAnalyticsVariables();

      }, WAIT_TIME);

    }

  }

  window.VWO.push(['onVariationApplied', function (data) {

    if (!data) {

      return;

    }

    var expId = data[1],

      variationId = data[2];

    if (typeof (_vwo_exp[expId].comb_n[variationId]) !== 'undefined' && ['VISUAL_AB', 'VISUAL', 'SPLIT_URL', 'SURVEY'].indexOf(_vwo_exp[expId].type) > -1) {

      // Add the variable (eVar) name and it's value here.

      // In case you have multiple campaigns and you want to send the data to different eVars, add a switch case here

      v.add('eVarYY', 'VWO-' + expId + ':' + _vwo_exp[expId].comb_n[variationId]);

      // Only send if data is available

      if (v.length) {

        clearTimeout(dataSendingTimer);

        // We are using setTimeout so that all experiment can be sent in just one call to Omniture

        dataSendingTimer = setTimeout(waitForAnalyticsVariables, WAIT_TIME);

      }

    }

  }]);

})(); 


上記のタグ49行目「eVarYY」を、カスタム変数IDに書き換える必要があります。

例えば、「eVar55」と設定すると、このデータはカスタム変数55にプッシュされます。

作成したカスタム変数IDに合わせて変更してください。


そのページで複数のキャンペーンが走っている場合の連携用コード

そのページで複数のキャンペーンが走っている場合、下記の連携用コードを使用します。


(function () {

  window.VWO = window.VWO || [];

  var WAIT_TIME = 100,

    analyticsTimer = 0,

    dataSendingTimer;

  var getAccount = function () {

    // Change the variable according to your page

    return window.s_gi(window.s_account || window.s.account);

  };

  // All tracking variable will be contained in this array

  var v = [];

  v.add = function (w, o) {

    v.push({

      w: w,

      o: o

    });

  };

  // Function to send data to Omniture backend

  var sendData = function () {

    var s = getAccount();

    for (var i = 0; i < v.length; i++) {

      s[v[i].w] = v[i].o;

      v[i] = v[i].w;

    }

    s.linkTrackVars = v.join(',');

    s.tl(true, 'o', 'VWO Tracking');

    v.splice(0, v.length);

  };

  //Function to wait for some analytics variables before sending data

  function waitForAnalyticsVariables() {

    if (window.s_gi && window.s && (window.s.account || window.s_account)) {

      clearInterval(analyticsTimer);

      sendData();

    } else if (!analyticsTimer) {

      analyticsTimer = setInterval(function () {

        waitForAnalyticsVariables();

      }, WAIT_TIME);

    }

  }

  window.VWO.push(['onVariationApplied', function (data) {

    if (!data) {

      return;

    }

    var expId = data[1],

      variationId = data[2];

    if (typeof (_vwo_exp[expId].comb_n[variationId]) !== 'undefined' && ['VISUAL_AB', 'VISUAL', 'SPLIT_URL', 'SURVEY'].indexOf(_vwo_exp[expId].type) > -1) {

      // Add the variable (eVar) name and it's value here.

      // In case you have multiple campaigns and you want to send the data to different eVars, add a switch case here

      switch (expId) {

        //campaign id = XX

        case XX:

          v.add('eVarYY', 'VWO-' + expId + ':' + _vwo_exp[expId].comb_n[variationId]);

          break;

        //campaign id = XX

        case XX:

          v.add('eVarYY', 'VWO-' + expId + ':' + _vwo_exp[expId].comb_n[variationId]);

          break;

        // 上記のcampaign id以外

        default:

          v.add('eVarYY', 'VWO-' + expId + ':' + _vwo_exp[expId].comb_n[variationId]);

          break;

      }


      // Only send if data is available

      if (v.length) {

        clearTimeout(dataSendingTimer);

        // We are using setTimeout so that all experiment can be sent in just one call to Omniture

        dataSendingTimer = setTimeout(waitForAnalyticsVariables, WAIT_TIME);

      }

    }

  }]);

})(); 



上記のタグ内の50行以降にある「case XX」と「eVarYY」を、それぞれ書き換える必要があります。

XX = キャンペーンID

YY = カスタム変数ID


例えば、

case 1

eVar55


case 2

eVar56


default

eVar57


このようにそれぞれ設定した時、キャンペーンID1の情報はカスタム変数55にプッシュされ、キャンペーンID2の情報はカスタム変数56にプッシュされます。

そして、その他のキャンペーン(case XXで指定されていないキャンペーン)はカスタム変数57にプッシュされます。

作成したキャンペーンのIDとカスタム変数IDに合わせて変更してください。