Продолжение обсуждения из Интеграция Google Tag Manager с Google Analytics:
Отправка пользовательских событий в Google Tag Manager и Google Analytics
В этом руководстве объясняется, как настроить ваш сайт Discourse для отправки пользовательских событий в Google Tag Manager (GTM) и Google Analytics, что позволит отслеживать конкретные взаимодействия пользователей.
Требуемый уровень доступа пользователя: Администратор
Предварительные требования
Перед реализацией пользовательских событий убедитесь, что у вас есть:
- Настроенный Google Tag Manager на вашем сайте Discourse, следуя руководству Настройка Google Tag Manager для аналитики
- Добавленный ID контейнера GTM в настройку
gtm container idвашего сайта - Обновленная настройка
content security policy script srcвашего сайта для разрешения скриптов Google
Добавление пользовательских событий
Создание компонента темы
- Перейдите в Администрирование > Настройка > Компоненты
- Нажмите «Создать» и выберите «Создать новый компонент»
- Дайте вашему компоненту имя
- Выберите вкладку JS и добавьте свой код. Например, код ниже перехватывает триггеры appEvent и отправляет следующие события в dataLayer:
post:likedpost:createdtopic:created
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
window.dataLayer = window.dataLayer || [];
// Отслеживание лайков постов
api.onAppEvent("page:like-toggled", (post, likeAction) => {
let topic = post.topic;
if (post && topic && likeAction && likeAction.acted) {
window.dataLayer.push({
'event': 'postLiked',
'postId': post.id
});
}
});
// Отслеживание новых постов
api.onAppEvent("post:created", post => {
if (post) {
window.dataLayer.push({
'event': 'postCreated',
'postId': post.id
});
}
});
// Отслеживание новых тем
api.onAppEvent("topic:created", (post, composerModel) => {
if (post) {
window.dataLayer.push({
'event': 'topicCreated',
'topicCategory': composerModel.get("category.name"),
'topicId': post.topic_id
});
}
});
});
- Сохраните компонент
- Добавьте компонент во все активные темы вашего сайта
Доступные события
Все доступные триггерные события перечислены здесь: Справочник триггеров AppEvents
Настройка GTM
Создание триггера
- Перейдите на https://tagmanager.google.com/
- В боковом меню выберите «Триггеры»
- Нажмите «Создать»
- Дайте имя вашему триггеру
- Выберите тип триггера «Пользовательское событие»
- Введите имя события (например,
postCreated) - Настройте триггер на срабатывание при «Все пользовательские события»
Создание переменной Data Layer
- В боковом меню GTM выберите «Переменные»
- В разделе «Пользовательские переменные» нажмите «Создать»
- Дайте имя вашей переменной
- Выберите тип переменной «Переменная Data Layer»
- Введите имя переменной Data Layer (например,
postCreated) - Установите версию Data Layer на «Версия 2»
Создание тега Google для отслеживания событий
По состоянию на 2024 год рекомендуемый подход — использовать новый шаблон «Google Tag» вместо устаревшего типа тега «Google Analytics: GA4 Event». Тег Google обеспечивает лучшую интеграцию с GA4 и включает встроенную поддержку режима согласия v2.
- В боковом меню GTM выберите «Теги»
- Нажмите «Создать»
- Дайте имя вашему тегу (например, «GT - Создан пост»)
- В разделе «Конфигурация тега»:
- Выберите «Google Tag»
- Выберите вашу конфигурацию GA4 (или создайте новую, если это ваш первый тег)
- В поле «Имя события» введите описательное имя, соответствующее правилам именования GA4 (например,
post_created) - В разделе «Настройки конфигурации» нажмите «Добавить строку», чтобы включить переменные data layer:
- Параметр конфигурации: (например,
postId) - Значение: Ваша переменная data layer (например,
{{postCreated}})
- Параметр конфигурации: (например,
- В разделе «Триггеры»:
- Выберите ранее созданный триггер пользовательского события
Если вы в настоящее время используете теги «Google Analytics: GA4 Event», они продолжат работать, но для новых реализаций следует использовать шаблон «Google Tag» для лучшей совместимости и функциональности в будущем.
Требования к именам событий
У GA есть специфические требования к именам событий:
- Используйте snake_case (строчные буквы с подчеркиваниями)
- Максимальная длина 40 символов
- Могут содержать только буквенно-цифровые символы и подчеркивания
Тестирование вашего тега Google
- Нажмите кнопку «Предпросмотр» в GTM
- Перейдите на ваш сайт Discourse
- Выполните действие, которое хотите отслеживать (например, создайте пост)
- В режиме предпросмотра GTM:
- Убедитесь, что ваше пользовательское событие отображается в левой панели
- Проверьте, что ваш тег Google сработал корректно
- Подтвердите, что все параметры передаются как ожидается
- В Google Analytics:
- Перейдите в Конфигурация > События
- Ваше пользовательское событие должно появиться в списке после срабатывания
- Примечание: появление новых событий в отчетах GA4 может занять до 24 часов
Вы можете использовать GA4 DebugView для просмотра данных событий в реальном времени во время тестирования.
Устранение неполадок
Если вы не видите события в GTM:
- Проверьте, что ID контейнера GTM правильно указан в настройках Discourse
- Убедитесь, что компонент темы добавлен во все активные темы
- Добавьте инструкции
console.logдля проверки срабатывания событий:
api.onAppEvent("post:created", post => {
console.log("post:created event triggered");
if (post) {
window.dataLayer.push({
'event': 'postCreated',
'postId': post.id
});
}
});
- Используйте расширение Chrome Simple Data Layer Viewer для мониторинга data layer
- Если вы видите ошибки политики безопасности контента (CSP), обратитесь к вышеуказанным предварительным требованиям и ознакомьтесь с Mitigate XSS Attacks with Content Security Policy для дальнейших шагов.
Если у вас настроена настройка сайта
ga universal tracking code, очистите её, так как GTM будет обрабатывать скрипт отслеживания.