web-dev-qa-db-ja.com

ページの更新が原因のGoogleアナリティクスでのトランザクションの重複

注文確認ページでユニバーサルアナリティクスを使用しています:

// Create the tracker
ga('create', 'UA-XXXXX-Y');

// Fire off a pageview
ga('send', 'pageview');

// Include the ecommerce plugin
ga('require', 'ecommerce', 'ecommerce.js');

// Initialize the transaction
ga('ecommerce:addTransaction', {
             id: '1234abc',     // Transaction ID*
    affiliation: 'Tech Shirts', // Store Name
        revenue: '52.19',       // Total
       shipping: '10',          // Shipping
            tax: '3.22'         // Tax
});

// Add a few items
ga('ecommerce:addItem', {
          id: '1234abc',            // Transaction ID*
         sku: 'TSHIRT-12A',         // Product SKU
        name: 'Analytics Wizard',   // Product Name*
    category: 'Men\'s Shirts',      // Product Category
       price: '12.99',              // Price
    quantity: '1'                   // Quantity
});
ga('ecommerce:addItem', {
          id: '1234abc',            // Transaction ID*
         sku: 'TSHIRT-36B',         // Product SKU
        name: 'Best Developer',     // Product Name*
    category: 'Women\'s Shirts',    // Product Category
       price: '12.99',              // Price
    quantity: '2'                   // Quantity
});

// Send off the transaction
ga('ecommerce:send');

何らかの理由で、ユーザーがページを更新した場合、分析チームは同じトランザクションを2回記録することにしました。

トランザクションIDが同じ場合、同じトランザクションを2回記録するのは非論理的です(明らかに同じトランザクションを表しているので、なぜそれを複製するのですか?)。

文書化されていないので、これは予想される動作ですか? GAチームは、すべてのユーザーが重複を防ぐためにコードを記述する必要があることを本当に期待していますか?

4
DD.

シンプルなJQuery Cookieソリューション。

  if (!$.cookie('myOrderReference')){
//insert analytics code here

       $.cookie('myOrderRefernce', true);  

 }

「myOrderReference」の代わりに注文参照を動的に挿入するようにスクリプトをセットアップする必要があります。

ただし、ユーザーが注文確認ページを別のブラウザーにロードすると、重複が発生します。

0
DD.

この問題には2つの解決策があります。

1)サーバー側のスクリプトを使用して、トラッキングコードが複数回表示されるのを防ぎます。これは、トランザクション情報がデータベースに入れたかどうかを確認することで実行できます。 OR eコマース情報がGoogleアナリティクスに送信された後、ユーザーをレシートページからリダイレクトして、ユーザーがそのページに戻るのを防ぐことができます。

2)ブラウザCookieとトランザクションタイムスタンプを使用して重複を検出する

LunaMetricの Googleアナリティクスでのトランザクションの重複-チェックと修正 投稿をご覧ください。

2
dasickle

中間ページを設定し、トランザクションが送信されたら、ウィンドウの場所を変更します。中間ページはブラウザの戻るボタンの履歴に表示されないため、ユーザーはページを簡単にリロードできません。

  // Send off the transaction
  ga('ecommerce:send'); 

  $(document ).ready(function() {
      window.location = "/order-confirmed?orderReference=#{order.reference}";
    });

これは、Cookieを設定したり、ページの再読み込みを防ぐよりもはるかに簡単です。

1
DD.