8

スクリプトの管理に Google タグ マネージャー コンテナを使用しています。サーバー側の最適化/分析の実験を実行しようとしています。パフォーマンス上の理由から、サーバー側が必要です。GTM/Optimize コンテナを使用して、クライアント側の実験を問題なく実行しました。

ここに私のGTMコードがあります:

window.dataLayer = window.dataLayer || [];
....    
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXXX');</script>
<!-- End Google Tag Manager -->

どのバリエーションをトリガーするかをトリガーするために、次のさまざまな方法を試しました。

// These fn get called only once GA exists via setTimeout. They get called correctly.
// I've setup the experimentTrigger via GTM container and it triggers correctly to Analytics.
function setGAExperiment1(_expIdvId){
    // Matches ga('set', 'exp', '$experimentId.$variationId');
    //   https://developers.google.com/optimize/devguides/experiments
    ga('set', 'exp', _expIdvId);
    dataLayer.push({'event': 'experimentTrigger', 'exp': _expIdvId }); // to trigger data send of exp
    // I receive the experimentTrigger event with 'exp' value on Analytics but not any experiment data into Optimize/Analytics.
}

function setGAExperiment2(_expIdvId){
    // Matches ga('set', 'exp', '$experimentId.$variationId');
    //   https://developers.google.com/optimize/devguides/experiments
    ga('set', 'exp', _expIdvId);
    ga('send', 'event', 'experiment', 'view'); // to trigger data send of exp
}

Google オプティマイズまたは Google アナリティクス -> Behaviors -> Experiments でテスト データを受け取っていません。どうすればこれを修正できますか?

このトピックに最も近い議論はここここにありますが、具体的な答えはありません。

4

3 に答える 3

8

Google タグ マネージャーの [設定するフィールド] オプションを使用して、ページの読み込み時に Google アナリティクス変数を設定できます。

  1. GTM でユニバーサル アナリティクス タグを開く
  2. クリックEnable overriding settings in this tag
  3. クリックMore Settings > Fields to Set
  4. という新しいフィールドを作成しますexpId。このフィールドには、英数字の実験 ID が含まれている必要がありますXXXXXXXXXXX
  5. という新しいフィールドを作成しますexpVar。このフィールドには、実験バリアント番号が含まれている必要があります (オリジナルの場合は 0、カスタム バージョンの場合は 1、2、3 など)。

重要: オプティマイズ タグがアナリティクス タグの前にトリガーされていることを確認してください。

私の場合、フィールドとフィールドにCustom Javascript変数を使用しました。この変数は、カスタム コードを使用して正しい実験 ID とバージョン ID を取得しました。expIdexpVar

「Analytics Field Reference」ページをチェックして、フィールド名を見つけました。

https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#expId

https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#expVar

この方法は、追加のイベントをトリガーする必要がないため、おそらく独自の回答よりも優先されます。それに加えて、これを GTM で完全に構成できます。

参照用のスクリーンショット:

ここに画像の説明を入力

于 2018-09-04T01:56:43.123 に答える
1

この根本的な原因は、タグ マネージャーでイベントを設定し、Google アナリティクスの設定変数を使用すると、テスト ID とバリアントが GTM で設定したイベントと一緒に送信されないことにあるようです。何らかの理由で、サーバーから設定した実験を取得できません。

GA 設定変数を使用しないように GTM をセットアップするが、設定をすべての GA タグに個別に配置すると、機能します。

2 つの異なる Web サイトに Optimize、GA、および GTM を同じように実装していますが、2 つの異なる GTM コンテナに実装しています。1 つは GA 設定変数を使用してセットアップされ、もう 1 つはすべてのタグで個別に GA 設定を使用してセットアップされます。GA設定変数を持つものでは、初期設定は機能しませんでしたが、他のものでは機能しました。

ミラノの答えはそれを解決しました。

Milan の回答では、実験 ID とバリアントを .xml ファイルに入れる必要はありませんga('set', 'exp', ...)。それをデータレイヤーに入れてから変数として使用することも、私が期待するように機能するはずです(まだテストしていません)。利点は、その ID とバリアントを再度取得するために、エキゾチックなカスタム JavaScript を使用する必要がないことです。

于 2018-09-13T16:51:17.117 に答える