Отслеживание количества просмотров товаров с помощью Google Tag Manager и Google Analytics - PullRequest
0 голосов
/ 17 октября 2019

В проекте электронной коммерции Symfony, чтобы создать отчет о частоте просмотров продукта, который увеличит количество просмотров, когда пользователь перейдет к /product/detail/{id}. Я использую Google Tag Manager и Analytics, используя следующие ссылки:
https://support.usabilla.com/hc/en-us/articles/360015738812-Integration-with-Google-Analytics-using-GTM-Data-Layer#

Настройка Google Tag Manager

1. Создать триггер

Trigger Type: Page View
Trigger Fire On: Some Page Views (Page path : contains : /products/detail)

2. Создать переменные

Name: dlv - productName
Variable Type: Data Layer Variable
Name: product.productName
Создать тег
Tag Type: Google Analytics: Universal Analytics
Track Type: Event
Category: Product Detail // static text
Action: View {{dlv - productName }}
Label: {{ dlv - productName }}
Value: {{ dlv - productName }}
Google Analytics Settings: {{ Google_Analytics_Track_ID_Settings }}
Tiggering: {{ Trigger_created_in_step_1 }}

Страница продукта

<script>
    dataLayer.push({
        'product': {
            'productId': {{ Product.id }},
            'productName': '{{ Product.name }}'
        }
    });
</script>

Я вижу, что dataLayer массив отправляется в Google TagДиспетчер в окне отладки. В Google Analytics > Behavior > Events > Top Events я вижу информацию о продукте в столбце «Категория события». Когда я нажимаю на ссылку, действие по событию показывает только Просмотр , а метка события - (не установлена) . Я хочу создать табличный отчет, например Product Detail: View Orange: 3, Product detail: View Apple: 4.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Хотя ключевая концепция представлена ​​в предыдущем ответе, есть и другие решения, которые могут дать вам лучшие результаты.

Таким образом, в основном вам нужно убедиться, что данные, которые вы хотите использовать изdataLayer доступен, когда ваш тег запущен.

Для этого вы можете задержать тег на событие Window Loaded, но вы должны знать, что это зависит от размера и типа контентавашей страницы, у определенного процента ваших пользователей не будет запущен триггер Window Loaded, поэтому вы можете пропустить часть ваших данных. (Они закрывают браузер, переходят на другую страницу до того, как будет загружено окно.)

Таким образом, другой вариант заключается в том, чтобы данные помещались в dataLayer до инициализации GTM . Таким образом, ваш код выглядел примерно так: он помещен над основным кодом GTM в <head>:

<script>
    var dataLayer = window.dataLayer || [];  //define dataLayer, while avoiding overwriting its content
    dataLayer.push({
        'product': {
            'productId': {{ Product.id }},
            'productName': '{{ Product.name }}'
        }
    });
</script>

Таким образом, событие просмотра страницы уже увидит эти данные.

Другой вариант будетчтобы оставить свой код на его текущем месте, но указать инициирующее событие , чтобы GTM узнала о новых данных:

<script>
    dataLayer.push({
        'event': 'productDataReady',
        'product': {
            'productId': {{ Product.id }},
            'productName': '{{ Product.name }}'
        }
    });
</script>

Таким образом, вам нужно изменить триггервашего тега в качестве пользовательского события, совпадающего со строкой, используемой в переменной event. В этом случае данные доступны для данного конкретного события.

Также обратите внимание, что {{ dlv - productName }}, вероятно, не следует использовать в качестве значения события, поскольку Google Analytics принимает только целочисленные значения, тогда как название продукта, вероятно,быть строкой.

Другое соображение: вы не указали (или, по крайней мере, не включили его в свой пост), что событие должно быть невзаимодействующим. Если вы сгенерируете интерактивное событие с загрузкой вашей страницы, при условии, что вы также запускаете просмотр страницы, вы получите крайне низкий показатель отказов.

0 голосов
/ 17 октября 2019

Перепроверьте, правильно ли заполнена переменная {{ dlv - productName }} и доступно ли значение для тега в момент запуска тега. Если его значение будет заполнено позже, то тег запускает действие вашего события, которое будет отслеживаться как (not set). Если это так, рассмотрите возможность изменения типа триггера на Загруженное окно или другое событие, чтобы тег получал правильное значение из DL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...