If you are looking for Google Tag Manager code for WooCommerce order complete, without any heavy plugin structure.
The code snippet is a self-explained. Code using standard WooCommerce thank you page filter. The script will process on order complete and user redirect on WooCommerce thank you page.
Here a code snippet for you. Place this code in your active theme functions.php file.
/**
* Adding custom javascripts or php action on WooCommerce Thank you page
* Works with WooCommerce 3.0 or above
*/
add_action( "woocommerce_thankyou", "replaceme_thank_you_script", 20 );
if ( ! function_exists( 'replaceme_thank_you_script' ) ) {
function replaceme_thank_you_script( $order_id ) {
if ( $order_id > 0 ) {
$order = wc_get_order( $order_id );
if ( $order instanceof WC_Order ) {
if( $order->get_used_coupons() ) {
$coupons_count = count( $order->get_used_coupons() );
$coupon_codes = '';
foreach( $order->get_used_coupons() as $coupon) {
$coupon_codes .= $coupon;
if( $i < $coupons_count )
$coupon_codes .= ' ';
$i++;
}
}
$order_id = $order->get_id(); // order id
$order_key = $order->get_order_key(); // order key
$order_total = $order->get_total(); // order total
$order_sub_total = $order->get_subtotal();
$order_currency = $order->get_currency(); // order currency
$order_payment_method = $order->get_payment_method(); // order payment method
$order_shipping_country = $order->get_shipping_country(); // order shipping country
$order_billing_country = $order->get_billing_country(); // order billing country
$order_status = $order->get_status(); // order status
$order_discount_total = $order->get_discount_total();
/**
* full list methods and property that can be accessed from $order object
* https://docs.woocommerce.com/wc-apidocs/class-WC_Order.html
*/
?>
<script type="text/javascript">
window.dataLayer = window.dataLayer || []
dataLayer.push({
'transactionId': '<?php echo $order_id ?>',
'transactionCurrency': '<?php echo $order_currency ?>',
'transactionAffiliation': 'Order Confirm',
'transactionTotal': <?php echo $order_total ?>,
'transactionSubTotal': <?php echo number_format($order_sub_total, 2, ".", "") ?>,
'transactionTax': <?php echo number_format($order->get_total_tax(), 2, ".", ""); ?>,
'transactionShipping': <?php echo number_format($order->calculate_shipping(), 2, ".", ""); ?>,
'transactionDiscount': <?php echo number_format($order_discount_total, 2, ".", "") ?>,
'transactionPromoCode': '<?php echo rtrim($coupon_codes) ?>',
'transactionProducts': [
<?php
foreach($order->get_items() as $key => $item):
$product = $order->get_product_from_item( $item );
$variant_name = ($item['variation_id']) ? wc_get_product($item['variation_id']) : '';
?>
{
'name': '<?php echo $item['name']; ?>',
'sku': '<?php echo $product->get_sku(); ?>',
'id': '<?php echo $item['product_id']; ?>',
'price': '<?php echo number_format($order->get_line_subtotal($item), 2, ".", ""); ?>',
'category': '<?php echo strip_tags($product->get_categories(', ', '', '')); ?>',
'variant': '<?php echo ($variant_name) ? implode("-", $variant_name->get_variation_attributes()) : ''; ?>',
'quantity': <?php echo $item['qty']; ?>
},
<?php endforeach; ?>
]
});
</script>
<?php
}
}
}
}



