确保在重定向之前完成Google跟踪代码管理器和Google Analytics

时间:2015-09-07 12:13:33

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

我有一个指向我的网页的链接,我希望在将用户重定向到外部网页之前,使用Google Analytics和Google跟踪代码管理器跟踪用户。

我想确保在进行重定向之前完成GA和GTM。什么是最好的方法?

一种简单的方法是使用setTimeout。但是1000ms太长还是太短?如果有可能在跟踪实际完成时进行重定向,则会更喜欢吗?在文档准备好之前完成GTM和GA跟踪吗?如果不是这可以被迫?

<html lang="sv">
<head>
<title></title>
<meta charset="utf-8"/>
<script src="~/Scripts/jquery-2.1.0.min.js"></script>
<!-- ANALYTICS CODE -->
</head>
<body>

<!-- TAG MANAGER CODE -->

<script language="javascript">
    $(function() {
        setTimeout(function() {
            window.location.replace("http://externalwebsite.com");
        },1000);
    });
</script>

</body>
</html>

在GTM存储桶中,我有Twitter和Facebook再营销代码。

更新的解决方案

我已经更新了我的解决方案。由于我最感兴趣的是确保GA在重定向之前绝对触发,因此效果会更好。

<html lang="sv">
<head>
    <title></title>
    <meta charset="utf-8"/>
    <script src="~/Scripts/jquery-2.1.0.min.js"></script>
    <script language="javascript">

        var redirect = function(waitFor) {
            return function(signal) {
                waitFor[signal] = 1;
                for (var s in waitFor) if (waitFor[s] == 0) return;
                _redirect();
            }
        }({timeout:0,ga:0});

        var redirected = false;
        var _redirect = function () {
            if (!redirected) {
                redirected = true;
                window.location.replace("http://@Model");
            }
        };

        (function (i, s, o, g, r, a, m) {
            i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
                (i[r].q = i[r].q || []).push(arguments)
            }, i[r].l = 1 * new Date(); a = s.createElement(o),
                m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
        })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
        ga('create', 'UA-47608023-1', 'tessin.se');
        ga('require', 'displayfeatures');
        ga('send', 'pageview', {
            'hitCallback': function () {
                redirect("ga");
            }
        });
    </script>

</head>
<body>

@Html.Include("google-tagmanager-redirect.html")

<script language="javascript">
    $(function () {
        setTimeout(function () { redirect("timeout"); }, 1000);
        setTimeout(function () { _redirect(); }, 3000);
    });
</script>

</body>
</html>

4 个答案:

答案 0 :(得分:4)

最简单的方法可能是从GTM内部进行重定向。

使用重定向代码创建自定义HTML标记。然后使用tag sequencing来触发重定向标记,这样就可以确保在重定向之前触发GA。

答案 1 :(得分:1)

一种可能的解决方案是直接在GA代码中设置“传输”标记,或者在GTM中设置字段。

有关这方面的更多信息,请访问:https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#transport。请注意,GTM v2仍允许使用'useBeacon'标志,但不推荐使用它,如果您直接在GA中编码,那么您应该使用'transport'。

例如,如果在此标志中直接编码:

ga('send', 'event', 'click', 'download-me', {transport: 'beacon'});

或在GTM中:

enter image description here

此标记可确保在页面导航之前发送匹配。

答案 2 :(得分:1)

在通过GTM推送到dataLayer时,可以使用eventCallback属性。

dataLayer.push({
    'key1' : 'value1',
    'key2' : 'value2',
    'event' : 'fireTags',
    'eventCallback' : function() {
        alert('ALL tags which fire on {{event}} equals fireTags have now fired');
    }
});

更多信息:https://www.simoahava.com/gtm-tips/hitcallback-eventcallback/

答案 3 :(得分:0)

参考Eike's回答。我创建了以下工作流程以使其正常工作;

在我的代码中,我添加到dataLayer

<script type="text/javascript">
    dataLayer.push({
        'event': 'gtm_redirect_url',
        'gtm_redirect_url': '<?php echo $url; ?>'
    });
</script>

在这种情况下,我正在使用PHP根据特定条件更改重定向网址。

然后在GTM中我设置了一个名为gtm_redirect_url

的变量

enter image description here

触发器也称为gtm_redirect_url;

enter image description here

用于在HTML代码段中触发JS的标记

enter image description here

设置起来非常简单,确保GTM在重定向之前已加载。此方法还可以轻松地将重定向数据图层标记添加到您希望的任何页面。