Просматривая документы для Диспетчера тегов Google, кажется, что они предлагают измерять покупку по просмотрам страниц подтверждения. Если я не ошибаюсь, это может быть неточно из-за сбоя во время перенаправления или искусственно завышено, поскольку ссылку можно будет посетить позже.
Поэтому я думаю, что было бы предпочтительнее зарегистрировать или измерить покупку, как только я получу успешный ответ на свой POST-запрос о покупке. Что-то вроде этого:
function purchase(data, form) {
fetchHelper(url, {
method: 'post',
body: JSON.stringify(data),
})
.then(json => {
// Send info to GTM that purchase was successful
form.reset()
window.location.href = `confirmation.html?booking=${json.booking_number}`;
})
.catch(error => {
console.error('Error: ', error)
swal('Oops', error.message, 'error');
})
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вместо того, чтобы полагаться на посещения страниц для отслеживания конверсий / покупок, я бы рекомендовал запускать событие GA с помощью Google analytics.js. Из этих данных события в GA вы можете создать «цель», которая должна дать вам довольно чистые данные о покупке / конверсии.
https://developers.google.com/analytics/devguides/collection/analyticsjs/events
В GTM вам нужно настроить тег на основе типа Universal Analytics. В опциях вы должны установить Тип трека на Событие, а затем заполнить Параметры отслеживания событий.
Для запуска вы можете создать новый триггер для настраиваемого события. В этом примере название события может быть «Purchase_complete». Затем вы можете использовать эту функцию для запуска триггера:
function fire(){
var dataObject = {
'event': 'purchase_complete',
'category': 'click',
'label': 'label_something'
};
if (typeof dataLayer != 'undefined'){
dataLayer.push(dataObject);
}
}
(вытащил из https://jonathanmh.com/custom-javascript-trigger-functions-google-tag-manager/)
Работает ли запуск пользовательских событий / триггеров в слое данных GTM? developers.google.com/tag-manager/devguide
Это руководство кажется намного лучше, чем другие, которые я видел до сих пор. Я собираюсь поиграть с этим. Так что я думаю, что смогу получить к нему доступ в моих более поздних js с window.dataLayer.
"Может быть неточно"
Действительно, это обычная проблема. Если вы хотите достичь 100% надежности, вы можете положиться на протокол измерения с серверным кодом. То, что вы планируете делать, должно быть очень близко к этому. Просто отправить данные о покупке в dataLayer и не забудьте послать хит после этого (см. Ниже). Одним из клиентских решений для предотвращения дублирования является сохранение идентификаторов транзакций в файлах cookie и проверьте этот файл cookie на наличие прошлых транзакций, прежде чем отслеживать новые.
«Предложите измерить покупку по просмотрам страницы подтверждения»
Неважно, что вы делаете, если вы используете «хит» для отправки данных электронной торговли («полезная нагрузка») в GA, поскольку по умолчанию данные электронной торговли просто находятся на стороне клиента и не отправляются в GA. На практике у вас есть 2 варианта: просмотры страниц или события. Обычно вы видите, что данные транзакции отправляются через просмотры страниц, потому что традиционно это были данные, вставленные на страницу подтверждения серверным кодом, и вы видите взаимодействия на стороне клиента, такие как добавление в корзину, отправляемые с событиями, потому что это что-то обрабатывается во внешнем интерфейсе, но совершенно нормально отправлять все данные электронной коммерции с событиями.
Вы упомянули «см. Ниже» - собирались ли вы добавить больше деталей о «отправке обращения»?
Вместо этого я хотел бы использовать Диспетчер тегов Google для расширенных данных. Я знаю, как это сделать только с Google Analytics, но не с GA в GTM.