Используемые сокращения:
Планируемая структура приложения:
gmt.start
при каждой загрузке страницы (т. е. при навигации пользователя).<script src = {
https://www.googletagmanager.com/gtm.js id=${ GOOGLE_TAG_MANAGER_ID } } async />
и слой данных, а также вручную отправка события gtm.start через dataLayer.push
Я не совсем понимаю, каковы последствия многократного вызова gtm.start
(один раз для каждой страницы в MPA и один раз для SPA)?
Другими словами, как именно работает gtm.start
? В описанной настройке каждая загрузка страницы будет воссоздавать слой данных и отправлять gtm.start
(это происходит каждый раз, когда пользователь перемещается по страницам MPA + один раз в SPA при загрузке страницы). Это правильный способ сделать это или это запутает отслеживание GTM?
С другой стороны, мне ясно, что мне нужно по-разному управлять просмотрами страниц между MPA и SPA - это не мой вопрос.
Как именно работает gtm.start
?
gtm.start
является ключом внутри gtm.js
события. gtm.js
gtm.js
— это первое событие, которое передается в dataLayer, что свидетельствует об успешном отображении фрагмента контейнера GTM на странице.
gtm.start
содержит отметку времени, которая представляет собой момент времени, когда ваш скрипт контейнера GTM начал загрузку. Если вы посмотрите на фрагмент контейнера, вы действительно увидите, как gtm.start
нажимается. Изображение добавлено в конце
QQ: Насколько я понимаю, при каждой загрузке страницы (будь то страница MPA или SPA) уровень данных необходимо повторно инициализировать (потому что он будет стерт при загрузке страницы)
Фрагмент контейнера обрабатывает это автоматически, и вам не нужно где-либо повторно инициализировать dataLayer вручную. Просто убедитесь, что фрагмент контейнера добавлен на все страницы.
Для SPA уровень данных сохраняется, а изменение истории добавляется как событие всякий раз, когда происходит изменение страницы.
В описанной настройке каждая загрузка страницы будет воссоздавать уровень данных и отправлять gtm.start (это происходит каждый раз, когда пользователь перемещается по страницам MPA + один раз в SPA при загрузке страницы). Это правильный способ сделать это или это запутает отслеживание GTM?
Да, это правильный путь, опять же, вручную ничего делать не надо, просто разместите сниппеты контейнера на всех страницах и готово.
«Я понял, что мне нужно по-разному управлять просмотрами страниц между MPA и SPA» — на самом деле нет, в этом нет необходимости. Просто не полагайтесь на ключ события gtm.start, вместо этого отправляйте аналогичные события на уровень данных и используйте их.