📞
Повече клиенти чрез ефективна реклама и оптимизиран сайт

Създавам и оптимизирам Google Ads, Facebook Ads и сайтове с цел повече запитвания и продажби.
✔ ясна стратегия
✔ измерими резултати
✔ дългосрочно развитие

Елиминация на дублирани conversion събития

Елиминация на дублирани conversion събития

Елиминация на дублирани 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.

3.3 Дедупликация с transaction_id (за e-commerce)

Най-сигурният метод за purchase събития:

1. Генерирай уникален transaction_id от сървъра в момента на покупката
2. Пращай този ID като параметър на purchase събитието
3. В GTM провери дали този ID вече не е бил изпращан

Пример с cookie/storage решение:

// 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.

3.4 Server-side tracking

Най-надеждният начин да предотвратиш дублиране е да пращаш conversion събитията от сървъра, а не от клиента.

Когато purchase се обработи от сървъра, той изпраща събитие директно към GA4 Measurement Protocol (или към сървърния GTM контейнер). Този подход не зависи от:
- Презареждане на страницата
- Бутона "назад"
- GTM тригер логика
- Мрежови проблеми

Сървърното събитие стреля точно веднъж, защото сървърът контролира кога и дали да го изпрати.

3.5 Проверка за дублирани тагове и тригери в GTM

1. Отвори GTM контейнера
2. Прегледай всички тригери, свързани с conversion таговете
3. Провери за overlapping trigger conditions – два различни тригера, които могат да се задействат от едно и също действие
4. Увери се, че един и същ таг не присъства в два различни контейнера

Използвай Preview режима на GTM, за да преминеш през целия conversion flow и провери дали всяко събитие стреля точно веднъж.

3.6 Ако ползваш Google Ads

При импортиране на GA4 конверсии в Google Ads:

1. Увери се, че не броиш едни и същи конверсии и от GA4 import, и от директно Google Ads таг
2. Влез в Google Ads > Tools & Settings > Measurement > Conversions
3. Провери кои conversion действия са маркирани като 'Primary' и кои като 'Secondary'
4. Ако имаш два различни източника за една и съща конверсия, маркирай единия като secondary

Част 4: Допълнителни реални примери и таблици

Сценарий 1: E-commerce с еднократна оферта

Онлайн магазин пуска лимитирана оферта "50% отстъпка за първите 100 клиента". След като офертата свършва, много потребители презареждат checkout страницата в опит да я активират отново. Всяко презареждане праща purchase събитие, въпреки че транзакцията не е успешна.

Решение: Пращай purchase събитие само след успешен callback от платежния gateway, а не при зареждане на Thank You page.

Сценарий 2: B2B формуляр за демо

Сайт с формуляр за демо версия. Потребителите често кликат "Изпрати" няколко пъти, ако страницата зарежда бавно. GA4 получава 3-4 еднакви form_submit събития за една заявка.

Решение: Деактивирай бутона след първото кликване (disable submit button) + използвай once per session броене в GA4.

Сценарий 3: Мобилно приложение (React Native)

Мобилно приложение има screen view tracking. При навигация между табове, един и същ екран се зарежда няколко пъти (поради ре-рендериране на компоненти). Всяко зареждане праща screen_view събитие.

Решение: Използвай useRef хук за проследяване дали екранът вече е бил "view-нат" през текущата сесия и пращай събитието само веднъж.

Част 5: Таблица с често срещани сценарии и решения
СценарийСимптомРешение
Потребител презарежда Thank You pagePurchase събития: 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 за уникалност
Част 6: Допълнителна таблица – Инструменти за мониторинг
ИнструментКак помага за дедупликацияНиво на сложност
GA4 Exploration (event count per user)Бърз сигнал за дублирани key events⭐ Ниска
BigQuery (SQL за timestamp клъстери)Намира дубликати в рамките на X секунди⭐⭐⭐ Висока
GTM Preview + Tag AssistantВиждаш в реално време дали един таг стреля повече от веднъж⭐ Ниска
Server-side GTMПраща събития от сървър – елиминира клиентските дубликати⭐⭐⭐ Висока
GA4 DebugViewВиждаш всички събития в реално време с timestamp⭐ Ниска
Част 7: План за действие (стъпка по стъпка)

Стъпка 1 – Открий (днес)
- Създай Exploration report в GA4 с event count per user
- Сравни GA4 числата с източник на истина (платежна система, CRM)

Стъпка 2 – Спри новите дубликати (тази седмица)
- Промени метода на броене на всички нетранзакционни key events на "Once per session"
- Прегледай GTM тригерите за overlapping условия
- Провери за дублирани tracking скриптове (hardcoded + GTM)

Стъпка 3 – Елиминирай съществуващите (следващите 2 седмици)
- Внедри еднократни флагове за critical conversion страници
- За e-commerce – добави дедупликация по transaction_id
- Ако budget позволява – премести critical conversions към server-side

Стъпка 4 – Мониторинг (завинаги)
- Включи проверката за event count per user в месечния си audit
- Следи за скокове в conversion числата без видима причина

Важно предупреждение: Дублираните conversion събития не са "дребен проблем". Те водят до:
- Неправилни бизнес решения (инвестираш в канали, които изглеждат по-добри, отколкото са)
- Надути ROI изчисления
- Загуба на доверие в данните

Добрата новина е, че повечето причини за дублиране се отстраняват лесно – с правилната настройка в GA4 интерфейса, малко JavaScript в GTM и добра документация на tracking имплементацията. Заключение

Следваща стъпка: Отвори GA4 сега, създай Exploration report и провери event count per user за най-важните си key events. Ако видиш числа над 1 – знаеш какво да правиш.

Авторско резюме: Елиминацията на дублирани конверсии е задължителна част от всеки data hygiene процес. Без нея всичките ти отчети за ROI, CPA и ефективност на каналите са под въпрос. Инвестирай 2 часа сега, за да спестиш месеци на грешни решения.

Ключови изводи:
- 8-12% от purchase събитията могат да бъдат дублирани само от презареждане на страницата
- GA4 методът "Once per session" спира 90% от нетранзакционните дубликати
- localStorage + transaction_id е най-сигурният начин за e-commerce
- Server-side tracking е златният стандарт за големи сайтове
- Редовен мониторинг (веднъж месечно) предотвратява натрупване на проблеми

Благодаря, че прочетохте!