将动态数据发送到Google代码管理器dataLayer,无需事件

时间:2015-05-20 21:39:59

标签: ajax google-analytics google-tag-manager

我在网站上为Google跟踪代码管理器设置了一些自定义代码,用于跟踪某些自定义数据,但它没有跟踪。 dataLayer变量正在整理标记管理器代码上方的多个数据。

过程是,用户登陆页面并点击,这将使用本地化数据从wordpress等获取数据,并通过ajax调用记录此信息。我们还希望在ajax调用之前使用标记管理器在Google Analytics中记录此数据。

这是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);

});

我的问题不是上面的代码,实际上事实是,即使花了一天左右的时间阅读文档,观看视频我也似乎无法设置一个有效的推送。

在代码管理器中:

  1. 我创建了一个新标签
  2. 选择Google Universal Analytics
  3. 选择自定义活动
  4. 设置新宏
  5. 给它一个标签名称gg_event_type
  6. 选择dataLayer Variable
  7. 但它没有将数据发送到Google Analytics。 对我所缺少的任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

好的,到目前为止我所做的就是。我已经使用了答案按钮,因此我可以格式化答案。

我设置了一个看到的事件,并多次使用它来使用相同的引用来跟踪数据。

遵循本教程。

这就是创建标签。 有自定义{{event}} 为标签和类别设置宏 然后创建了一个规则,将事件与我的自定义事件引用联系起来。

然后我

/// 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 :(得分: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)