X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (https://forum.x-cart.com/forumdisplay.php?f=20)
-   -   Setting up Data Layer for Ecom tracking in GA4 (https://forum.x-cart.com/showthread.php?t=78393)

keystone 03-29-2022 12:03 PM

Setting up Data Layer for Ecom tracking in GA4
 
Hi, I've just installed the Google Tracking Manager code on my site and it seems to be connected and reading ok. I'd like to set up the Ecomm tracking. I've been following a tutorial on setting up the Data Layer required. I've kind of hacked together some code using existing Google Analytic code/variables from the built in x-cart module plus the example from the tutorial. Can someone take a look at what I've got to see if I'm even close to having what I need?

Code:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  {foreach from=$orders item="order"}
        'transactionId'          : "{$order.order.orderid}",          // order ID - required
      'transactionAffiliation' : "{$partner|default:'Main stock'}",  // affiliation or store name
      'transactionTotal'    : "{$order.order.total}",          // total - required
      'transactionShipping'    : "{$order.order.shipping_cost}",  // shipping
      'transactionTax'        : "{$order.order.tax}"    // tax
      'transactionProducts'        : [{
    {foreach from=$order.products item="product"}
        'transactionId'        : "{$order.order.orderid}",          // order ID - required
        'name'      : "{$product.product|wm_remove|escape:javascript}{if $active_modules.Product_Options ne "" and $product.product_options_txt} ({$product.product_options_txt|replace:"\n":", "|wm_remove|escape:javascript}){/if}", // product name
        'sku'      : "{$product.productcode|wm_remove|escape:javascript}", // SKU/code - required
        'category'  : "{$product.category|default:'Unknown category'}", // category or variation
        'price'    : "{$product.price}",          // unit price - required
        'quantity'  : "{$product.amount}"          // quantity - required
    {/foreach}
}]
});
</script>


the original GA code in x-cart google anyalytics module ecommerce section has some additional lines like below but not sure if I need those (mainly the ldelim and rdelim) or the {literal} tags.
Code:

ga('ecommerce:addTransaction', {ldelim}

PhilJ 04-07-2022 10:06 AM

Re: Setting up Data Layer for Ecom tracking in GA4
 
Looks like you might be missing a closing {/foreach}

BCSE 04-08-2022 10:29 AM

Re: Setting up Data Layer for Ecom tracking in GA4
 
yeah I agree on the missing end foreach
Should be like this:
Code:

<script>
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  {foreach from=$orders item="order"}
      'transactionId'          : "{$order.order.orderid}",          // order ID - required
      'transactionAffiliation' : "{$partner|default:'Main stock'}",  // affiliation or store name
      'transactionTotal'    : "{$order.order.total}",          // total - required
      'transactionShipping'    : "{$order.order.shipping_cost}",  // shipping
      'transactionTax'        : "{$order.order.tax}"    // tax
      'transactionProducts'        : [{
                    {foreach from=$order.products item="product"}
                        'transactionId'        : "{$order.order.orderid}",          // order ID - required
                        'name'      : "{$product.product|wm_remove|escape:javascript}{if $active_modules.Product_Options ne "" and $product.product_options_txt} ({$product.product_options_txt|replace:"\n":", "|wm_remove|escape:javascript}){/if}", // product name
                        'sku'      : "{$product.productcode|wm_remove|escape:javascript}", // SKU/code - required
                        'category'  : "{$product.category|default:'Unknown category'}", // category or variation
                        'price'    : "{$product.price}",          // unit price - required
                        'quantity'  : "{$product.amount}"          // quantity - required
                    {/foreach}
                }]
  {/foreach}
});
</script>


keystone 04-08-2022 11:28 AM

Re: Setting up Data Layer for Ecom tracking in GA4
 
Thanks Phil and Carrie, I haven't actually tried the code in my site yet. I need to get my development site back up to do some testing first.

keystone 04-08-2022 12:11 PM

Re: Setting up Data Layer for Ecom tracking in GA4
 
Do either of you already have this set up on your sites (or do you have gtag) for google analytics set up? I have the OLD universal analytics on my site still using ga() instead of gtag() so a bit of a confusing to try and get GA4 set up as well.

keystone 04-08-2022 12:35 PM

Re: Setting up Data Layer for Ecom tracking in GA4
 
Here is what I'm up to so far...
Code:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-#########"></script>
{literal}
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());


{if
  $config.Google_Analytics.ganalytics_e_commerce_analysis eq "Y"
  and $ga_track_commerce eq "Y"
  and $main eq "order_message"
  and $orders
}

  gtag('event', 'purchase', {
  {foreach from=$orders item="order"}
      'transactionId'          : "{$order.order.orderid}",          // order ID - required
      'transactionAffiliation' : "{$partner|default:'Main stock'}",  // affiliation or store name
      'transactionTotal'    : "{$order.order.total}",          // total - required
      'transactionShipping'    : "{$order.order.shipping_cost}",  // shipping
      'transactionTax'        : "{$order.order.tax}"    // tax
      'transactionProducts'        : [{
                    {foreach from=$order.products item="product"}
                        'transactionId'        : "{$order.order.orderid}",          // order ID - required
                        'name'      : "{$product.product|wm_remove|escape:javascript}{if $active_modules.Product_Options ne "" and $product.product_options_txt} ({$product.product_options_txt|replace:"\n":", "|wm_remove|escape:javascript}){/if}", // product name
                        'sku'      : "{$product.productcode|wm_remove|escape:javascript}", // SKU/code - required
                        'category'  : "{$product.category|default:'Unknown category'}", // category or variation
                        'price'    : "{$product.price}",          // unit price - required
                        'quantity'  : "{$product.amount}"          // quantity - required
                    {/foreach}
                }]
  {/foreach}
});
{/if}
  gtag('config', 'G-#######');
</script>
{/literal}


BCSE 04-11-2022 10:06 AM

Re: Setting up Data Layer for Ecom tracking in GA4
 
I'll be working on this soon for a website. If you want to drop us an email I can let you know how to do it when I'm done. (I'm afraid I'll forget otherwise) Just ask Luke to put it in 'quotes' and I'll see it and can give you instructions on what to do. I may write a blog post on it when I figure it all out.

Thanks,

Carrie

keystone 04-11-2022 10:45 AM

Re: Setting up Data Layer for Ecom tracking in GA4
 
That would be great. I'll do that. Thanks a lot.


All times are GMT -8. The time now is 07:27 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.