3

Я использую Universal Analytics на моей странице подтверждения заказа:Google Analytics Повторяющиеся Операции

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

По какой-то причине команда аналитики решили записать ту же операцию дважды, если пользователь обновляет страницу.

Кажется нелогичным записывать одну и ту же транзакцию дважды, учитывая, что идентификатор транзакции является одним и тем же (очевидно, это одна и та же транзакция, поэтому зачем ее дублировать?).

Ожидается ли такое поведение, поскольку оно не документировано? Действительно ли команда GA ожидает, что каждый пользователь должен написать код, чтобы предотвратить дублирование?

ответ

1

Ожидаемое поведение. Это позволяет отправлять отрицательные транзакции для отмены покупки. Вам нужно изменить код страницы, чтобы не включать отслеживание электронной торговли при перезагрузке.

+6

Это звучит как страшный дизайн feature..why не просто отдельный метод удаления транзакции на основе идеи? Мне смешно, что мне нужно настроить постоянство БД для предотвращения дублирования транзакций. –

+0

Это прекрасная особенность дизайна. Прослеживание электронной коммерции GA - это не транзакционная база данных; это всего лишь механизм ведения журнала и отчетности. Он разработан, чтобы дать вам представление о том, какой контент способствует продажам. Вам не нужно ничего хранить в базе данных, чтобы предотвратить дублирование транзакций при обновлении страницы. Все, что вам нужно, это немного JavaScript. Существует множество предложений о том, как обнаружить перезагрузку страницы с помощью JavaScript здесь, в Stack Overflow. – kevintechie

+2

По определению вам теперь нужно перейти от системы без состояния к состоянию. Вы можете сохранить состояние в файле cookie, но что произойдет, если пользователь заметит или отправит письмо на страницу подтверждения и откроется в другом браузере? –

1

На самом деле мы написали немного javascript, который купит идентификатор транзакции и предотвращает его отправку в 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

У вас отключена ссылка, поэтому ваш код практически бесполезен. –

+0

И все равно это не лучшее решение. При условии, что любой пользователь может получить доступ к этой странице подтверждения из другого браузера, поэтому cookie не будет присутствовать. – rjso

Смежные вопросы