Rubriky
Blog o webové analytice

Přeposílání UTM parametrů z landing page na jinou doménu.

Klient měl několik jednorázových vstupních stránek na různých doménách a chtěl přes ně tahat trafik na svůj hlavní web.  Tyto landing page neobsahovali žádný formulář jen odkazy do nákupního procesu na jiné doméně. Takže vyhodnotit přínos jednotlivých kampaní bylo docela problém, protože data byla v několika Google analytics property (službách) a ve výsledku byl vidět jen trafik z dané landing page, ale už nešlo propojit kampaně s plněním cílů na hlavním webu.

A proto jsem dostal nápad u takových jednoduchých vstupních stránek předávat UTM parametry až na hlavní web.

Kdy to nemusím fungovat?

  1. Když odkazy nejsou reálně odkazy, ale přeskriptované jiné HTML prvky.
  2. Když máte javascriptový framework, co přepisuje obsah. Tohle velmi rád dělá třeba Next.JS.
  3. Když si řídíte kliknutí na webu vlastním skriptem etc.

Co dělá skript?

Skript projde všechny odkazy na dané stránce a pokud najde odkaz na hlavní web a ten již nemá UTM paramtery, tak tam přidá upravené UTM paramtry přes které návštěvník přišel na danou landing page.

Příklad:

Příjdu na stránku s UTM paramtry…

https://landin-page.cz/?utm_source=google&utm_medium=cpc&utm_campaign=jmeno-kampane&utm_term=klicova-fraze&utm_content=pekny-banner

Na stránce je odkaz:

https://hlavni-web.cz/

Ten se po spuštění skriptu upraví na:

https://hlavni-web.cz/?utm_source=landin-page.cz-google&utm_medium=bypass-cpc&utm_campaign=jmeno-kampane&utm_term=klicova-fraze&utm_content=pekny-banner

Vlastnosti skriptu:

  • Skript modifikuje parametry UTM source a UTM medium, zbytek se přepošle beze změn. To dělá, aby se šlo dostatečně rozeznat přeposlaný trafik. Utm_medium modifikuji, abych věděl, že u tohoto utracené peníze za reklamu nebudu mít v těchto GA ani Google ads ets.
  • Přidal jsem cookie, co podrží UTM na 30min i pokud uživatel ztratí UTM parametry z URL díky chození po těch pár stránkách microsite. Tím řeším problém 2-3 stránek na mikrosite, aby se propagovali UTM i tam. Limit 30min klasická délka GA návštěvy.
    • Je zde už i verze bez cookies.
  • Dále je tam nastavené, aby se nepřepisovali UTM parametry, pokud už v URL adrese již jsou. Takže lze spustit i vícekrát a nic se nestane.
  • Ve skriptu se nastavuje cílové doména, jde tam dát i URL ;). Aby se UTM parametry nepřeposílali na místa kde nechcete.

Kdy to nebude fungovat?

Používáte v Google ads autotagging přes gclid, takže v URL nemáte klasické UTM parametry. Ale to jde obejít přes manuální otagování, zde můžete dát i proměnné jako je jméno kampaně etc. , takže takové manuálně automatizované.

Co to neřeší?

Organiku, tu beru jako že je správné, když zůstane odkaz bez moditifikací a na hlavní stránce bude trafik jako referral daná landing page.

Kdy to rozhodně nepoužít?

Pokud je landing page na stejné doméně jako hlavní web. V tom případě ta máte mít stejné ID Google analytics a nic takového neřešit.

Implementace:

V Google tag manageru vložte následující skript do značky (tag) a upravte hodnotu  „targetdomain“ na váš hlavní web.

Verze bez potřeby cookies.

Tato verze slouží k tomu, že pokud je landing page opravdu jednostránková a nebo nemáte souhlas s vytvořením cookies, tak vám stačí jen upravit odkazy.

<script>
(function () {
    var targetdomain = "yourdomain.com";
    var params = new URLSearchParams(window.location.search);
    var utm_params = [];
    params.forEach(function(value, key) {
        if (key.startsWith('utm_')) {
             if (key=='utm_medium'){utm_params.push(key+'=bypass-'+value)}
             else if (key=='utm_source')
                       {utm_params.push(key+'='+window.location.hostname+'-'+value)}
             else {utm_params.push(key+'='+value);}  }      
    })
    utm_search = utm_params.join('&');
	
    if (utm_params.length !=0) {
        // links update
        document.querySelectorAll('a[href]').forEach(function (ele, idx) {
            if ((ele.href.indexOf(targetdomain) !== -1) && (ele.href.indexOf("utm_") == -1)) {
                ele.href = ele.href + (ele.href.indexOf('?') === -1 ? '?' : '&') + utm_search;
            }
        });
    }
})();
</script>

Verze s Cookies

Slouží pro případ, že máte souhlas s cookies a chcete rozšiřovat odkaz o UTM i na dalších stránách webu po dobu 30min

<script>
function getCookie(a) {
    var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
    return b ? b.pop() : '';
}

(function () {
    var cookieminutes = 30; 
    var targetdomain = "yourdomain.com";
    var params = new URLSearchParams(window.location.search);
    var utm_params = [];
    params.forEach(function(value, key) {
        if (key.startsWith('utm_')) {
             if (key=='utm_medium'){utm_params.push(key+'=bypass-'+value)}
             else if (key=='utm_source')
                       {utm_params.push(key+'='+window.location.hostname+'-'+value)}
             else {utm_params.push(key+'='+value);}  }      
    })
    utm_search = utm_params.join('&');
	
    if (!utm_search) // get values from backup cookie
        var utm_search = getCookie("utm_bypass");
	
    if (!!utm_search) {
        // cookie backup for reload
        var d = new Date();
        d.setTime(d.getTime() + (cookieminutes * 60 * 1000)); // cookie backup
        var expires = "expires=" + d.toUTCString();
        document.cookie = "utm_bypass" + "=" + utm_search + ";" + expires + ";path=/";

        // links update
        document.querySelectorAll('a[href]').forEach(function (ele, idx) {
            if ((ele.href.indexOf(targetdomain) !== -1) && (ele.href.indexOf("utm_") == -1)) {
                ele.href = ele.href + (ele.href.indexOf('?') === -1 ? '?' : '&') + utm_search;
            }
        });
    }
})();
</script>

Kdy skript spustit?

V Google tag manageru na akci DOM ready .  Ve strance budou už odkazy, které jdou modifikovat. U SPA aplikace by šlo skript spoustě při změně url / obsah.

Skript nevyužívá žádných funkci GTM, takže lze vložit na konec stránky i manuálně do kódu.

Pokud skript používáte přes GTM, tak v rámci optimizalice doporučuji ho spouštět jen když ho chcete spustit. Tjs pokud jsou v URL UTM parametry. Ušetříte tím milisekundy.

.