WooCommerce Revenue Tracking
Track cart and checkout events in WooCommerce for revenue attribution.
Last updated
add_action('wp_head', function() {
?>
<script>
!(function (w) {
w._alhenaEventQueue = w._alhenaEventQueue || [];
w.trackAlhenaEvent = w.trackAlhenaEvent || function (method, data) {
w._alhenaEventQueue.push({ method: method, args: data });
};
})(window);
</script>
<?php
});add_action('wp_footer', function() {
?>
<script>
jQuery(document).on('added_to_cart', function(event, fragments, cart_hash, button) {
var productId = button.data('product_id');
var productName = button.data('product_name') || 'Product';
var price = parseFloat(button.data('price')) || 0;
trackAlhenaEvent('sendCartEvent', {
type: 'ITEM_ADDED',
productId: String(productId),
productName: productName,
value: price,
currency: '<?php echo get_woocommerce_currency(); ?>',
quantity: 1
});
});
</script>
<?php
});add_action('woocommerce_thankyou', function($order_id) {
$order = wc_get_order($order_id);
if (!$order) return;
$line_items = [];
foreach ($order->get_items() as $item) {
$product = $item->get_product();
$line_items[] = [
'productId' => (string) $product->get_id(),
'productName' => $item->get_name(),
'quantity' => $item->get_quantity(),
'value' => (float) $item->get_total(),
'currency' => $order->get_currency()
];
}
?>
<script>
trackAlhenaEvent('sendCheckoutEvent', {
orderId: '<?php echo $order_id; ?>',
value: <?php echo $order->get_total(); ?>,
currency: '<?php echo $order->get_currency(); ?>',
lineItems: <?php echo json_encode($line_items); ?>
});
</script>
<?php
});add_action('wp_footer', function() {
?>
<script>
jQuery(document).on('removed_from_cart', function(event, fragments, cart_hash, button) {
var productId = button.data('product_id');
trackAlhenaEvent('sendCartEvent', {
type: 'ITEM_REMOVED',
productId: String(productId)
});
});
</script>
<?php
});add_action('wp_footer', function() {
?>
<script>
jQuery(document).on('added_to_cart', function(event, fragments, cart_hash, button) {
var productId = button.data('product_id');
// Fetch product details via AJAX if needed
jQuery.get('/wp-json/wc/v3/products/' + productId, function(product) {
trackAlhenaEvent('sendCartEvent', {
type: 'ITEM_ADDED',
productId: String(productId),
productName: product.name,
value: parseFloat(product.price),
currency: '<?php echo get_woocommerce_currency(); ?>',
quantity: 1
});
});
});
</script>
<?php
});