1. Hjem
  2. Dokumentation
  3. WooCommerce CVR Payment G...
  4. Udviklere
  5. Jeg vil gerne tracke med Google Analytics 4

Jeg vil gerne tracke med Google Analytics 4

Når en EAN ordre oprettes er der ikke en ekstern betalingsgateway da alt håndtering foregår på selve webshoppen, derfor sendes der ikke transaktions ID retur og derfor skal tracking af køb foretages på følgende måde

Bemærk nedenstående er et eksempel du skal selv tilpasse koden så den passer med jeres opsætning

<?php

add_action('woocommerce_thankyou', 'yanco_cvr_payment_track_google_analytics_4_orders', 12, 1);
function yanco_cvr_payment_track_google_analytics_4_orders($order_id)
{
    $order = wc_get_order($order_id);

    $total = $order->get_total();
    $total_tax = $order->get_total_tax();
    $total_shipping = $order->get_shipping_total();
    $order_items = $order->get_items();

    $order_email = $order->get_billing_email();
    $order_phone = $order->get_billing_phone();

    $google_analytics_conversion_id = 'AW-123456789/XXXXXXX-YYYYYYY'; // IMPORTANT: Modify this ID to the correct ID
    $trasaction_id = $order_id; // Defaults to the order ID
    $transaction_affiliation = 'YOUR COMPANY NAME HERE'; // IMPORTANT: Modify this


    $script = "<!-- Event snippet for Google Ads sporing conversion page -->";
    $script .= "<script>";
    $script .= "gtag('event', 'conversion', {";
    $script .= "'send_to': '".$google_analytics_conversion_id."',";
    $script .= "'value': " . $total . ",";
    $script .= "'currency': 'DKK',";
    $script .= "'transaction_id': '" . $order_id . "'";
    $script .= "});";
    $script .= "</script>";

    $script .= "<script>
		dataLayer.push({";
    $script .= "'event': 'itmrevenue',";
    $script .= "'transactionId': '" . $order_id . "',";
    $script .= "'transactionAffiliation': '".$transaction_affiliation."',";
    $script .= "'transactionTotal': " . $total . ",";
    $script .= "'transactionTax': " . $total_tax . ",";
    $script .= "'transactionShipping': " . $total_shipping . ",";
    $script .= "'transactionEmail': '" . $order_email . "',";
    $script .= "'transactionPhone': '" . $order_phone . "',";

    if (count($order_items) > 0) {
        $number_items = count($order_items);
        $current_count = 1;
        $script .= "'transactionProducts': [";
        foreach ($order_items as $item_id => $order_item) {
            $product = $order_item->get_product();

            if ($product) {
                $sku = $product->get_sku();
                if (empty($sku)) {
                    $sku = $product->get_id();
                }

                $categories = '';
                $wc_categories = wc_get_product_category_list($product->get_id(), ',', '', '');
                if (!empty($wc_categories)) {
                    $categories = strip_tags($wc_categories);
                }

                $script .= "{";
                $script .= "'sku': '" . $sku . "',";
                $script .= "'name': '" . $order_item->get_name() . "',";
                $script .= "'category': '" . $categories . "',";
                $script .= "'price': " . $order_item->get_total() . ",";
                $script .= "'quantity': " . $order_item->get_quantity();
                $script .= "}";

                if ($current_count != $number_items) {
                    $script .= ",";
                }
            }
            $current_count++;
        }
        $script .= "]";
    }

    $script .= "});";
    $script .= "</script>";

    // Set meta_data to prevent double tracking if the browser gets reloaded for the order received page
    $cvr_order_has_been_custom_tracked = get_post_meta($order_id, 'cvr_order_has_been_custom_tracked', true);

    if ($cvr_order_has_been_custom_tracked == false ) {
        echo $script;
        update_post_meta($order_id, 'cvr_order_has_been_custom_tracked', true);
    }
}

Hvordan kan vi hjælpe?