Повторная отправка события покупки после обновления страницы клиентом (например, случайное нажатие F5 на странице подтверждения заказа) — классическая причина задвоения данных электронной коммерции в аналитике.
Почему браузер повторно выполняет тот же код
Если событие purchase отправляется через JavaScript при каждой загрузке страницы подтверждения, а не при уникальном факте создания заказа, любое повторное открытие этой же страницы (обновление, переход назад-вперёд) заново выполнит тот же код отправки события.
Решение — метка уже отправленного события в браузере
Сохраняйте в sessionStorage браузера факт того, что событие покупки для конкретного ID заказа уже было отправлено — при повторной загрузке той же страницы скрипт проверяет эту метку и не отправляет событие заново, если оно уже зафиксировано для этого заказа.
Более надёжное решение — привязка к серверному событию
Отправка события покупки не по факту загрузки страницы у клиента, а по факту реального создания заказа в базе данных на сервере, гарантированно исключает возможность повторной отправки при любых действиях пользователя с уже загруженной страницей.



