GA4, eCommerce Трекинг в WooCommerce
Этот код выполняет отслеживание различных событий электронной коммерции на сайте WooCommerce с использованием Google Analytics 4 (GA4) через объект dataLayer. В нем реализуются события для Google Analytics, такие как удаление товара из корзины, показ товаров, клики по товарам, просмотр корзины, оформление заказа и покупка.
Отслеживание удаления товара из корзины
jQuery(document).ready(function($) {
// Функция для отправки данных в dataLayer
function sendRemoveToDataLayer(productName, productPrice) {
window.dataLayer.push({
'event': 'remove_from_cart',
'ecommerce': {
'items': [{
'item_name': productName,
'price': productPrice
}]
}
});
}
// Отслеживание клика на кнопке удаления товара
$('body').on('click', '.remove-item.remove', function(e) {
e.preventDefault();
var $parentTR = $(this).closest('tr.cart-table-item');
var productName = $parentTR.find('.title.product-name a').text().trim();
var productPrice = $parentTR.find('.product-price .woocommerce-Price-amount').text().trim();
// Отправляем данные в dataLayer
sendRemoveToDataLayer(productName, productPrice);
window.location.href = $(this).attr('href');
});
});
Показ товаров в списке (категории и главная страница)
<?php if (is_shop() || is_product_category()) : ?>
<script>
window.dataLayer.push({
'event': 'view_item_list',
'ecommerce': {
'items': [
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
global $product;
$product_id = $product->get_id();
$product_name = $product->get_name();
$product_price = $product->get_price();
$product_brand = $product->get_attribute('pa_brand');
$product_category = get_the_terms($product_id, 'product_cat')[0]->name;
?>
{
'item_name': '<?php echo esc_js($product_name); ?>',
'item_id': '<?php echo esc_js($product_id); ?>',
'price': '<?php echo esc_js($product_price); ?>',
'item_brand': '<?php echo esc_js($product_brand); ?>',
'item_category': '<?php echo esc_js($product_category); ?>',
'quantity': 1
},
<?php endwhile; endif; ?>
]
}
});
</script>
<?php endif; ?>
Функция отправки уведомлений в Telegram
function sendTelegramNotification($botToken, $chatId, $message) {
$url = "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=".urlencode($message);
file_get_contents($url);
}
Клик по товару в списке (выбор товара)
<?php if (is_shop() || is_product_category()) : ?>
<script>
document.addEventListener('DOMContentLoaded', function() {
function sendProductToDataLayer(eventType, productName, productPrice) {
window.dataLayer.push({
'event': eventType,
'ecommerce': {
'items': [{
'item_name': productName,
'price': productPrice
}]
}
});
}
document.querySelectorAll('.product-card').forEach(function(card) {
card.addEventListener('click', function() {
var productName = card.querySelector('.product-card__content-title a').textContent.trim();
var productPrice = card.querySelector('.product-card__content-price').textContent.trim();
sendProductToDataLayer('select_item', productName, productPrice);
});
});
});
</script>
<?php endif; ?>
Просмотр карточки товара (детальный просмотр)
<?php if (is_product()) :
$product_id = $product->get_id();
$product_name = $product->get_name();
$product_price = $product->get_price();
$product_brand = $product->get_attribute('pa_brand');
$product_category = get_the_terms($product_id, 'product_cat')[0]->name;
?>
<script>
window.dataLayer.push({
'event': 'view_item',
'ecommerce': {
'items': [{
'item_name': '<?php echo esc_js($product_name); ?>',
'item_id': '<?php echo esc_js($product_id); ?>',
'price': '<?php echo esc_js($product_price); ?>',
'item_brand': '<?php echo esc_js($product_brand); ?>',
'item_category': '<?php echo esc_js($product_category); ?>',
'quantity': 1
}]
}
});
</script>
<?php endif; ?>
Просмотр корзины (событие view_cart)
<?php if (is_cart()) : ?>
<script>
window.dataLayer.push({
'event': 'view_cart',
'ecommerce': {
'items': [
<?php
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$product_id = $product->get_id();
$product_name = $product->get_name();
$product_price = $product->get_price();
$product_brand = $product->get_attribute('pa_brand');
$product_category = get_the_terms($product_id, 'product_cat')[0]->name;
?>
{
'item_name': '<?php echo esc_js($product_name); ?>',
'item_id': '<?php echo esc_js($product_id); ?>',
'price': '<?php echo esc_js($product_price); ?>',
'item_brand': '<?php echo esc_js($product_brand); ?>',
'item_category': '<?php echo esc_js($product_category); ?>',
'quantity': <?php echo esc_js($cart_item['quantity']); ?>
},
<?php } ?>
]
}
});
</script>
<?php endif; ?>
Покупка (событие purchase)
if (is_order_received_page()) :
$order_id = $order->get_id();
$order_total = $order->get_total();
$order_tax = $order->get_total_tax();
$order_shipping = $order->get_shipping_total();
?>
<script>
var orderId = localStorage.getItem('orderId');
if (orderId !== '<?php echo esc_js($order_id); ?>') {
window.dataLayer.push({
'event': 'purchase',
'ecommerce': {
'transaction_id': '<?php echo esc_js($order_id); ?>',
'value': '<?php echo esc_js($order_total); ?>',
'tax': '<?php echo esc_js($order_tax); ?>',
'shipping': '<?php echo esc_js($order_shipping); ?>',
'items': [
<?php
foreach ( $order->get_items() as $item_id => $item ) {
$product_name = $item->get_name();
$product_id = $item->get_product_id();
$product_price = $item->get_total() / $item->get_quantity();
$product_quantity = $item->get_quantity();
$product_brand = $item->get_meta('pa_brand');
$product_category = get_the_terms($product_id, 'product_cat')[0]->name;
?>
{
'item_name': '<?php echo esc_js($product_name); ?>',
'item_id': '<?php echo esc_js($product_id); ?>',
'price': '<?php echo esc_js($product_price); ?>',
'item_brand': '<?php echo esc_js($product_brand); ?>',
'item_category': '<?php echo esc_js($product_category); ?>',
'quantity': '<?php echo esc_js($product_quantity); ?>'
},
<?php } ?>
]
}
});
localStorage.setItem('orderId', '<?php echo esc_js($order_id); ?>');
}
</script>
<?php endif; ?>
Этот код предназначен для реализации детализированного отслеживания электронной коммерции на сайте WooCommerce, интегрированного с Google Analytics 4 через dataLayer. Включение этих событий позволяет получать важную информацию о действиях пользователей: что они смотрят, какие товары выбирают, что добавляют в корзину, удаляют, изменяют количество, и, наконец, какие покупки совершают.
Весь код находится в github, а сам видео-урок на моем канале, кликай чтобы перейти.