首页 文章

无需事件即可将动态数据发送到Google跟踪代码管理器dataLayer

提问于
浏览
4

我在网站上为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);

});

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

在标签管理器中:

  • 我创建了一个新标签

  • 选择Google Universal Analytics

  • 选择自定义事件

  • 设置一个新宏

  • 给它一个标签名称说gg_event_type

  • 选择dataLayer变量

但它没有将数据发送到Google Analytics . 任何关于我失踪的帮助都会非常感激 .

2 回答

  • 1

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

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

    遵循本教程 .

    这就是创建标签 . 拥有自定义{}为标签和类别设置宏然后创建一个将事件与我的自定义事件引用相关联的规则 .

    然后我

    /// 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)
    

相关问题