©TsvetanAngelov.com | All Rights Reserved
Елиминация на дублирани conversion събития
Въведение: проблемът, който никой не забелязва навреме
Дублираните conversion събития са един от най-подлините проблеми в аналитиката. За разлика от липсващите данни (които поне ти показват, че има проблем), дублираните събития тихо си седят в отчетите и ти казват, че всичко е по-добре, отколкото е в действителност.
Ето един истински пример: "Нашият GA4 показа 120 purchase събития миналия месец. Нашата платежна система показа 75 транзакции. Пет месеца никой не забеляза, че броим всяка продажба два пъти."
Тази статия ще ти покаже:
- Кои са 6-те най-чести причини за дублиране
- Как да ги откриеш в GA4 (стъпка по стъпка)
- Как да ги спреш – от прости настройки до JavaScript решения
- Допълнителни сценарии (електронна търговия, B2B формуляри, SPA приложения, мобилни приложения)
Част 1: Защо се появяват дублирани събития?
1. Презареждане на страницата (най-честата причина)
Потребител завършва покупка, вижда страницата с "Благодарим ви!" и я презарежда – за да снима екран, защото се съмнява дали поръчката е минала, или просто по навик.
Резултатът: Второто зареждане задейства отново purchase събитието.
Анализ от 2024 г. показва, че 8-12% от всички purchase събития в e-commerce сайтове са били дублирани именно поради тази причина. За бизнес с месечен оборот от 1 милион лева, това означава 80 000 до 120 000 лева фантомни приходи в отчетите.
2. Бутонът "Назад" в браузъра
Когато потребител се върне назад в многоетапен формуляр (например checkout стъпка 3 → стъпка 2 → стъпка 3), всяко преминаване през стъпките задейства събитията отново. Това надува броя на посетителите във всяка стъпка от фунията и прави конверсионния процент да изглежда по-нисък.
3. Грешки в GTM тригерите
- Тригер, който стреля на всяко зареждане на страница, когато трябва да стреля само на конкретна
- Тригер, който стреля и на DOM Ready, и на Window Loaded – едно и също събитие се праща два пъти
- Два различни тригера за един и същ таг (например click тригер + form submission тригер за една и съща регистрация)
4. Single-Page Applications (React, Vue, Angular)
В SPA приложенията компонентите могат да се рендерират повторно без пълно зареждане на страницата. Ако tracking кодът ти е закачен за рендериране на компонент, той ще стреля всеки път, когато компонентът се обнови.
5. Дублирани tracking скриптове
Това се случва, когато GA4 тагът е добавен едновременно:
- Директно в HTML (hardcoded)
- Чрез GTM
- Чрез плъгин на CMS-а
- В два различни GTM контейнера на един сайт
Всяка от тези инсталации праща независими събития.
6. Network timeout и повторни опити
При бавна или нестабилна интернет връзка, GA4 може да опита да изпрати едно и също събитие няколко пъти, защото клиентът не е получил потвърждение от сървъра.
Част 2: Как да откриеш дублирани събития?
Метод 1: Сравни с източник на истина
Най-бързият начин:
- Сравни purchase събитията в GA4 с броя транзакции от платежната система
- Сравни signup събитията с броя на новите потребители в базата ти данни
- Сравни form_submission събитията с броя на получените формуляри в имейл платформата
Ако GA4 показва постоянно по-високи числа (разлика над 5%), вероятно имаш дублиране.
Метод 2: Exploration report в GA4
Създай Exploration report с:
- Редове (Rows): Event name, Is key event
- Метрики (Metrics): Key events, Event count per active user
- Филтър: Is key event exactly matches true
Как се чете резултатът:
- За повечето key events (изтегляне на PDF, регистрация, заявка за демо), event count per user трябва да бъде 1 или близо до 1
- Ако е 2 или повече – имаш дублиране
- Изключение прави purchase, където един потребител може да има няколко поръчки
Метод 3: Търсене на timestamp клъстери
Ако имаш GA4 360 или BigQuery експорт, можеш да потърсиш събития от един и същ потребител с разлика във времето под 30 секунди. Това почти сигурно са дубликати.
Част 3: Как да спреш дублираните събития?
3.1 Настройка в GA4 интерфейса (най-лесното)
За нетранзакционни конверсии (формуляри, регистрации, изтегляния), промени метода на броене:
1. Отиди в Admin > Data Display > Key Events
2. Избери съответното conversion събитие
3. Промени Count от "Every event" на "Once per session"
Защо това помага? Ако потребител презареди страницата 5 пъти, GA4 ще брои конверсията само веднъж на сесия.
3.2 Еднократни флагове с JavaScript
За събития, които трябва да стрелят само веднъж на зареждане на страница (например purchase на thank you page):
// Проверка дали събитието вече е изпратено
if (!window._purchaseTracked) {
window._purchaseTracked = true;
dataLayer.push({ event: 'purchase' });
}
sessionStorage или localStorage.
// Custom JS variable в GTM за проверка
function() {
var currentOrderId = {{DLV - transaction_id}};
var savedOrderId = localStorage.getItem('processed_order');
if (savedOrderId === currentOrderId) {
return true; // Вече е изпратено – блокирай
}
return false; // Ново – позволи
}
block_if_duplicate като допълнително условие към trigger-а – събитието да стреля само ако условието е false.
once per session броене в GA4.
useRef хук за проследяване дали екранът вече е бил "view-нат" през текущата сесия и пращай събитието само веднъж.
| Сценарий | Симптом | Решение |
|---|---|---|
| Потребител презарежда Thank You page | Purchase събития: 2, 3, 4 на един потребител | Once per session + флаг в localStorage |
| Checkout фуния с връщане назад | Всяка стъпка брои повече хора от очакваното | Once per session за funnel стъпки |
| SPA приложение (React/Vue) | Page view събития при всяка промяна на state | Закачи събитията за route navigation, не за component render |
| CMS с native GA + GTM | Всички събития са x2 | Премахни native GA кода, остави само GTM |
| Два GTM контейнера | Всички събития са x2 | Консолидирай всичко в един контейнер |
| Бавна интернет връзка | Случайни дубликати при някои потребители | Премини на server-side за критичните събития |
| Формуляр с бавно зареждане | 3-4 form_submit за една заявка | Disable submit button след първо кликване |
| Мобилно приложение с табове | Повтарящи се screen_view | Използвай useRef / sessionStorage за уникалност |
| Инструмент | Как помага за дедупликация | Ниво на сложност |
|---|---|---|
| GA4 Exploration (event count per user) | Бърз сигнал за дублирани key events | ⭐ Ниска |
| BigQuery (SQL за timestamp клъстери) | Намира дубликати в рамките на X секунди | ⭐⭐⭐ Висока |
| GTM Preview + Tag Assistant | Виждаш в реално време дали един таг стреля повече от веднъж | ⭐ Ниска |
| Server-side GTM | Праща събития от сървър – елиминира клиентските дубликати | ⭐⭐⭐ Висока |
| GA4 DebugView | Виждаш всички събития в реално време с timestamp | ⭐ Ниска |
©TsvetanAngelov.com | All Rights Reserved