3

我用我的訂單確認頁面上的通用分析:谷歌分析重複的事務

// 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'); 

出於某種原因,分析團隊已經決定,如果用戶刷新頁面兩次記錄相同的事務。

鑑於事務ID相同(它顯然代表相同的事務,爲什麼要複製它?),記錄同一事務似乎不合邏輯。

這是預期的行爲,因爲它沒有被記錄? GA團隊是否真的希望每個用戶都必須編寫代碼來防止重複?

回答

1

這是預期的行爲。這使您可以發送負面交易來取消購買。您需要修改頁面代碼,以便在重新加載時不包括電子商務跟蹤。

+6

這聽起來像一個可怕的設計feature..why不只是有一個獨立的方法根據這個想法刪除一個事務?我覺得很荒謬,我需要設置DB持久性來防止重複事務。 – 2014-11-03 00:27:58

+0

這是一個很好的設計功能。 GA電子商務追蹤不是面向交易的數據庫;它只是一個日誌記錄和報告引擎。它旨在讓您瞭解哪些內容有助於銷售。您不需要將任何內容持久保存到數據庫,以防止刷新頁面上的重複事務。你所需要的只是一點JavaScript。關於如何在堆棧溢出中使用JavaScript檢測頁面重新加載有很多建議。 – kevintechie 2014-11-03 06:10:40

+2

按照定義,您現在必須從無狀態遷移到有狀態系統。您可以將狀態存儲在cookie中,但如果用戶通過書籤或電子郵件發送確認頁並在另一個瀏覽器上打開,會發生什麼情況? – 2014-11-03 09:50:11

1

我們實際上寫了一點javascript,它將cookie的交易ID和防止它發送給Google兩次。避免需要開始編寫服務器端代碼或修改您選擇的電子商務平臺中的代碼。

http://www.inventpartners.com/eliminate-duplicate-transactions-in-google-analytics

從本質上講,只要有JS的位,然後換一個條件在你的GA交易跟蹤代碼:

<script type="text/javascript"> 
function checkIsSent(ref) { 
    var cookiename = 'gaSaleSent_' + ref; 

    var ca = document.cookie.split(';'); 

    for(var i=0; i<ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1); 
     if (c.indexOf(cookiename + '=') != -1){ 
      return true; 
     } 
    } 

    var d = new Date(); 
    d.setTime(d.getTime() + (90*24*60*60*1000)); 
    var expires = "expires="+d.toGMTString(); 
    document.cookie = cookiename + '=1; ' + expires; 

    return false; 
} 

if(!checkIsSent('YOUR CART ID HERE')){ 
     PASTE YOUR GOOGLE TRANSACTION TRACKING CODE HERE 
} 
</script> 
+0

您的鏈接已損壞,因此您的代碼幾乎無用。 – 2015-02-16 20:03:16

+0

反正這似乎並不是最好的解決方案。如果任何人都可以從不同的瀏覽器訪問該確認頁面,則cookie不會存在。 – rjso 2015-03-03 11:12:06