Sending dynamic data to Google Tag Manager dataLayer without event

I installed some custom tags for the Google Tag Manager on the website to track some user data, but this is not tracking. The dataLayer variable matches multiple data, like this, in the header above the tag manager code.

The process is that the user lands on the page and clicks, it receives data from Wordpress, etc. using localized data and writes this information through an ajax call. We also wanted to register this data with Google Analytics using the tag manager before calling ajax.

Here is the javascript.

// JavaScript Document
jQuery(document).ready(function($){

        console.log(gg_data_object);

        var MyObject = {

            load: function(){
            MyObject._do_ajax('landed', null, null);    
        },

        _readCookie: function (name) {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for(var i=0;i < ca.length;i++) {
            var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
            }
            return 0;
        },

        _click_trace: function(event){      
            MyObject._do_ajax('clicked', this.href, $(this).attr('class'));         
        },
        _submit_trace: function(event){
            gg_data_object.user_id = MyObject._readCookie('user_id');
            MyObject._do_ajax('submission', gg_data_object.post_type, $(this).attr('class'));           

        },
        _do_ajax: function(event_action, href, class_ref){

            var data = {
                'action'                : 'track_event',
                'security'              : gg_data_object.ajax_nonce,
                'event_action'          : event_action,             
                'current_url'           : gg_data_object.current_url,
                'date'                  : gg_data_object.date_today,
                'phpsessionid'          : gg_data_object.phpsessionid,
                'post_id'               : gg_data_object.post_id,
                'post_type'             : gg_data_object.post_type,
                'referrer'              : gg_data_object.referrer,
                'unique_id'             : gg_data_object.unique_id,
                'user_id'               : gg_data_object.user_id,
                'clickedon'             : href,
                'class_location_type'   : class_ref

            };



            /// Now ping event to google analytics - Nothing works
            dataLayer.push(data);
            dataLayer.push({'gg_event_action': event_action});

            // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
            jQuery.ajax({
                type : "post",
                dataType : "json",
                url : gg_data_object.ajaxurl,
                data : data,
                success: function(response) {
                    console.log(response);

                    return true;
                }
            });

        }, 

    }

    MyObject.load();
    $(document).on('click', 'a', MyObject._click_trace);
    $(document).on('click', 'input[type="submit"]', MyObject._submit_trace);

});

, , , , , , , .

:

  • Google Universal Analytics
  • : gg_event_type
  • DataLayer

Google Analytics. , , .

+4
2

, . , .

, , .

.

TAG. {{event}} , .

I

/// Now ping event to google analytics      
        dataLayer = []; 
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : event_action,
            'gtmLabel'              : gg_data_object.current_url            
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'sessionid',
            'gtmLabel'              : gg_data_object.phpsessionid           
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'post_id',
            'gtmLabel'              : gg_data_object.post_id            
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'post_type',
            'gtmLabel'              : gg_data_object.post_type          
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'referrer',
            'gtmLabel'              : gg_data_object.referrer           
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'unique_id',
            'gtmLabel'              : gg_data_object.unique_id              
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'user_id',
            'gtmLabel'              : gg_data_object.user_id            
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'clickedon',
            'gtmLabel'              : gg_data_object.href           
        });
        dataLayer.push({
            'event'                 : 'trackEvent',
            'gtmCategory'           : 'track_event',
            'gtmAction'             : 'class_ref',
            'gtmLabel'              : gg_data_object.class_ref,
            /*'event_action'            : event_action,             
            'current_url'           : gg_data_object.current_url,
            'phpsessionid'          : gg_data_object.phpsessionid,
            'post_id'               : gg_data_object.post_id,
            'post_type'                 : gg_data_object.post_type,
            'referrer'              : gg_data_object.referrer,
            'unique_id'                 : gg_data_object.unique_id,
            'user_id'               : gg_data_object.user_id,
            'clickedon'             : href,
            'class_location_type'   : class_ref*/               
        });
        console.log(dataLayer);

, , . .

+1

. JSON . .

var dataLayer = [];
var d = [
    {
        'gtmAction' : event_action, 
        'gtmLabel'  : 'gtmLabel'
    },
    {
        'gtmAction' : 'sessionid', 
        'gtmLabel'  : gg_data_object.phpsessionid
    },
    {
        'gtmAction' : 'post_id', 
        'gtmLabel'  : gg_data_object.post_id
    }
];

for(i = 0; i<d.length; i++) {
    dataLayer.push({
        'event': 'trackEvent', 
        'gtmCategory': 'track_event', 
        'gtmAction': d[i].gtmAction, 
        'gtmLabel': d[i].gtmLabel
    });
}

console.log(dataLayer)
+1

Source: https://habr.com/ru/post/1589089/


All Articles