Google跟踪代码管理器多项增强型电子商务活动

时间:2016-10-03 12:33:17

标签: google-analytics google-tag-manager

我是GTM的新手,我在尝试在dataLayer中提交2个增强型电子商务事件时遇到了问题。当我查看Google Analytics时,似乎只发送了最后一个事件。

我遇到http://www.simoahava.com/analytics/ecommerce-tips-google-tag-manager/,在摘要之前,似乎总结了我所说的关于它只提交最后一个的内容。

    dataLayer.push({
        'event': 'addToCart',
        'ecommerce': {
            'currencyCode': 'GBP',
            'add': {
                'products': dataLayerProducts
            }
        }
    });
    dataLayer.push({
        'event': 'checkout',
        'ecommerce': {
            'checkout': {
                'actionField': {'step': 1},
                'products': dataLayerProducts
            }
        }
    });

只有结帐才能在Google Analytics中注册。我尝试过以下内容:

    dataLayer = [{
        'event': 'checkout',
        'event': 'addToCart',
        'ecommerce': {
            'add': {
                'products': dataLayerProducts
            },
            'checkout': {
                'actionField': {'step': 1},
                'products': dataLayerProducts
            }
        }
    }];

    dataLayer = [{
        'event': 'addToCart',
        'ecommerce': {
            'add': {
                'products': dataLayerProducts
            },
        }
    }, {
        'event': 'checkout',
        'ecommerce': {
            'checkout': {
                'actionField': {'step': 1},
                'products': dataLayerProducts
            }
        }
    }];

但我也没有这样的运气。如果它不可能,那么任何有用的解决方法都将非常受欢迎。

使用新代码进行更新 仍然只发送最后一个事件(结账)。代码会在打开<body>标记后立即显示。

<script>
dataLayer = [];
dataLayerProducts = [];
dataLayerProducts.push({
    'name': 'Product Name',
    'id': 'SKU',
    'price': '29.95',
    'brand': 'Brand',
    'category': 'Some/Category',
    'quantity': 1
});
dataLayer.push({
    'event': 'addToCart',
    'ecommerce': {
        'add': {
            'products': dataLayerProducts
        },
    }
});
dataLayer.push({
    'event': 'checkout',
    'ecommerce': {
        'checkout': {
            'actionField': {'step': 1},
            'products': dataLayerProducts
        }
    }
});
</script>
<!-- Google Tag Manager -->
// Code
<!-- End Google Tag Manager -->

1 个答案:

答案 0 :(得分:0)

要触发标记触发,您需要有一个事件,无论该事件是来自上一个事件还是当前事件,这就是为什么它始终是一个好的做法来推动{<1}}沿 要发送到GA的数据点。西莫的例子完美地说明了这一点。但由于dataLayer还持久存在键:值对,因此它将始终使用它看到的最新事件。如果你同时推送了多个event,那么推送的最后一个将覆盖之前的那个。这就是为什么您无法在单个dataLayer.push中拥有多个事件并期望触发所有相关标记的原因。

您需要做什么遵循Simo的示例,并将每个数据集/对象与其自己的event一起推送到dataLayer。推送到dataLayer(event),而不是在示例中声明它们,允许内置的侦听器接收这些特定的数据点。

编辑:修改OP的代码作为示例:

dataLayer.push