Я инициализирую диспетчер тегов Google и gtag следующим образом:
@yield('styles')
@if(config('app.google_analytics_key'))
<script async src="https://www.googletagmanager.com/gtag/js?id={{ config('app.google_analytics_key') }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ config('app.google_analytics_key') }}');
</script>
@endif
<script>
window['GoogleAnalyticsObject'] = 'ga';
window['ga'] = window['ga'] || function() {
(window['ga'].q = window['ga'].q || []).push(arguments)
};
</script>
@yield('before_google_tag')
@if(config('app.google_tag_manager_key'))
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{{ config('app.google_tag_manager_key') }}');</script>
<!-- End Google Tag Manager -->
@endif
@yield('after_google_tag')
У меня есть несколько страниц, на которых я отправляю данные в dataLayer сразу после кода менеджера тегов. Некоторым примером является моя страница с описанием продукта:
@section('after_google_tag')
<script>
ga('require', 'ecommerce');
</script>
<script>
window.dataLayer = window.dataLayer || []
// Measures product impressions and also tracks a standard
// pageview for the tag configuration.
// Product impressions are sent by pushing an impressions object
// containing one or more impressionFieldObjects.
window.dataLayer.push({
'ecommerce': {
'detail': {
'products': [{
'name': '{{ $product->name }}', // Name or ID is required.
'price': '{{ $product->finalPrice }}'
}]
}
}
});
</script>
@endsection
Все работает нормально, но когда я позже пытаюсь нажать на уровень данных при определенном событии (в моем случае добавление продукта в корзину), помощник по тегам Google не обнаруживает его, также я не вижу https://www.google-analytics.com/r/collect?v=
на вкладке «Сеть», Я вижу их только для подробностей о продукте.
Вот код, который нажимает на добавление в корзину:
window.dataLayer = window.dataLayer || [];
// Measure the removal of a product from a shopping cart.
window.dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'BGN',
'add': { // 'add' actionFieldObject measures.
'products': [
{
'name': product.name,
'price': product.finalPrice
}
]
}
}
});
Я делаю это внутри компонента Vue. Когда я консоль регистрирую dataLayer после этого события, я вижу, что он изменен с правильными значениями, но я не знаю, почему он не отправляет запрос или почему помощник тегов Google не обнаруживает эти изменения.