Měření chybových stránek za pomoci vlastních dimenzí v Universal Analytics

universal-analytics

Každý to zná a dennodenně se s tím setkává. Ale přesto, že s tím tolik lidí bojuje, chybové stránky stále zaplavují internet. Přitom dnes, v době velkého množství šikovných nástrojů, už není obtížné zjistit, které stránky to jsou. Každá 404 přitom představuje potenciální problém, ať už z hlediska uživatele, který čekal určitý obsah nebo z hlediska odkazového profilu, kdy tak vytváříme něco jako černou díru na ranky.

Co ale souvislosti… Proč? Odkud? Kteří uživatelé? Jak? To je spousta otázek, které je důležité zodpovědět. A pokud si chybovky zaznamenáte do Google Analytics, tak na většinu z nich také odpovědět můžete.

Donedávna byl nejlepší způsob měření pomocí noninterakčních eventů, o čemž kdysi napsal Honza Tichý. Ušetřím vám čas, měřilo se to takhle:


_gaq.push([‚_trackEvent‘,’Error‘,’404′,location.href,0,true])


Pokud vám tento zápis není tak úplně jasný, doporučuju si článek raději přečíst.

Modernizujte

Co lze na tomto způsobu změnit? Předně se jedná o starý kód Google Analytics, který v dnešní době Universal Analytics bude chtít většina z vás změnit. Za druhé je zbytečné si v parametru eventLabel posílat zdrojovou stránku pomocí location.href, protože si ji v Analytics jednoduše můžete zobrazit v reportu událostí výběrem sekundární dimenze (Page/Stránka) – ale ukážeme si lepší způsoby měření. Stejně tak už není nutno posílat nepotřebný value parametr s hodnotou 0.

Převedení kódu na verzi pro Universal Analytics, které používají úplně stejné proměnné a v tomhle případě úplně stejný princip jako staré GA, je překvapivě jednoduché:


ga(‚send‘,’event‘,’Error‘,’404′,location.href,0,{nonInteraction: true});


Jak už bylo řečeno, location.href i 0 jsou zbytečné, tak proč je neodstranit:


ga(‚send‘,’event‘,’Error‘,’404′,{nonInteraction: true});


V případě, že vám stále není jasný princip interakčnosti, kterého se týká poslední parametr, doporučuji si přečíst článek na analytics blogu. Je sice starší a příklad ukazuje řešení na starém měření, principiálně je to ale totéž.

A nakonec, pokud tento kód vezmete a vložíte do šablony 404 stránky, bude se měřit pokaždé, když se nějaká zobrazí. A to i u tzv. soft 404, alespoň na většině webů.

Snadné že? Nicméně existuje ještě i mnohem lepší způsob.

Udělejte to lépe

S příchodem Universal Analytics, vzniklo něco, čemu se říká vlastní dimenze. Pomocí nich si do Analytics ke každému hitu, návštěvě nebo uživateli můžete posílat nějaké vlastní informace. Velmi častým a dobrým zvykem je dělení stránek na typy.

Ukažme si to na konkrétním příkladu – představte si bězný eshop. Ten má stránky kategorií, stránky detailů produktů, stránky objednávkového procesu, nějaké textové stránky jako kontakt, atd. Proč tedy neudělat i typ stránky Chyba 404?

Získáte tím několik výhod. Větší weby, které naráží na limity, si je najednou nebudou uměle navyšovat kvůli událostem, protože informaci o chybě pošlou společně s pageview. Současně se mnohem snáze dostanete k nějakému kontextu informací v rámci každé pageview.

Naklikejte to

Universal Analytics

První, co musíte udělat, je vytvoření vlastní dimenze v nastavení Analytics. Pod záložkou Admin v prostředním sloupci Property klikněte na políčko Custom Definitions a následně Custom Dimensions > New Custom Dimension.

Universal Analytics

Name vyplňte jako Typ stránky(Page Type). Scope nechte na Hit (protože typ stránky souvisí s každou jednotlivou stránkou, ne s celou návštěvou nebo uživatelem).

Universal Analytics

Po potvrzení se vám ukáže tabulka se zdrojovými kódy. Zkopírujte ten, který je označen jako JavaScript. Měl by vypadat nějak takto (může se lišit číslem):


var dimensionValue = ‚SOME_DIMENSION_VALUE‘;

ga(‚set‘, ‚dimension1‘, dimensionValue);


Editujte kód

Následně už jen nechte tento kód vývojářem vložit do šablony chybové stránky a podle jejího typu dynamicky nahraďte SOME_DIMENSION_VALUE za něco jako Chyba 404, Chyba 403, atd. Důležité je vložit kód mezi načítací a odesílací příkaz:


ga(‚create‘, ‚UA-XXXX-Y‘, ‚auto‘);  // Creates a tracker.

// sem vložte kód vlastní dimenze
ga(‚send‘, ‚pageview‘);                // Sends a pageview.


Ve výsledku pak v šabloně chybové stránky budete mít například tento kód:


<!– Google Analytics –>

<script>
(function(i,s,o,g,r,a,m){i[‚GoogleAnalyticsObject‘]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,’script‘,’//www.google-analytics.com/analytics.js‘,’ga‘);

ga(‚create‘, ‚UA-XXXX-Y‘, ‚auto‘);

var dimensionValue = ‚Chyba 404‘

ga(‚set‘, ‚dimension1‘, dimensionValue);

ga(‚send‘, ‚pageview‘);

</script>
<!– End Google Analytics –>


Na závěr

V analytics si Typ stránky můžete opět zobrazit jako sekundární dimenzi v Behavior reportech (reportech chování) nebo pomocí vlastních reportů.

Universal Analytics

Z původní neohebné události se stránkou v parametru, tak vzniká mnohem komplexnější standardní pageview, která o sobě pouze prohlásí, že byla chybová.

Navíc jste se naučili hned několik věcí nad to. Měli byste umět převést jakékoliv události na verzi pro Universal Analytics. Znáte princip interakčnosti pro efektivnější navrhování dalších událostí a umíte si vytvořit vlastní dimenze a rovnou je (a nejen je) využít v rámci sekundárních dimenzí v reportech.

A jak si chybové stránky evidujete vy?

Diskuze k článku

  • http://cz.linkedin.com/in/zzenger sleapy

    Díky André za článek, říkal jsem si, jak z toho dostat trochu více. Já jsem to doposud řešil spíše torchu „prasácky“, ale ve většině případech (aspoň pro mne) jednodušší cestou přes title stránky. Tj. většina webů má jiný title pro chybové stránky, zpravidla „Chyba 404 …“ atp. Nad to jsem vystavěl custom report s touto dimenzí + jsem nad to nasázel alerty. Zpravidla se mi to osvědčilo v případě redesignů webů, kdy se (bohužel často) mění URLs…

    • André Heller

      Zdeňku souhlasím. Možností je spousta. V případě přítomnosti GTM si dokonce můžu podle Titlu pageType 404 nasimulovat. Jde o to najít cestu, která bude vyhovovat nejlépe všem. Tohle má vyhodu v tom, že je to takový ten „čistý“ a „hladký“ přístup bez hacků. :)

      • http://cz.linkedin.com/in/zzenger sleapy

        Jasně souhlas – volil jsem doposud spíše co možná nejvíce „lazy“ řešení. Akorát, když nad tím tak zpětně přemýšlím, možná by se pro to hodil trochu jíný způsob, napadá mne content grouping – já osobně tolik custom dimenzí na svých učtech nemám :)

        • André Heller

          viz odpověď u Petra :)

  • Petr Havlík

    André, nebyl by na tohle lepší Content Grouping? Sloty pro CustomDimenze jsou vzácné :)

    • André Heller

      Petře určitě hodil, ale ze zkušenosti vím, že byť jsou dimenze poněkud vzácné, jedna na pagetype se vždycky najde a hodí. My to obvykle děláme v kombinaci, že nastavujeme jak dimenzi, tak i grouping.

  • tkapler

    ještě by to chtělo doplnit ukázku s GTM

    • André Heller

      S GTM je potřeba nějak danou chybovou stránku identifikovat. Nejčistším řešením je přidání hodnoty pageType do dataLayeru a následné naklikání v UA tagu do položky vlastních dimenzí. Do levého pole číslo (index) vytvořené dimenze a do pravého políčka makro/proměnnou odkazujícíc na dataLayerovou proměnnou.

      Alternativně by se to dalo poznat třeba pomocí titlu, jak psal níze v diskuzi Zdeněk a na základě toho si napsat customJS makro/proměnnou, která to dokáže rozpoznat a podle toho vložit nebo nevložit hodnotu, tento způsob je už ale lehce složitější.

  • http://sabatka.net Pavel Šabatka

    Když mě to s těma eventama pořád přijde tak marný:

    Používáte error listener GTM pro JS chyby? Nebo nějaké jiné monitorování chyb (AJAX requesty etc., http://blog.gospodarets.com/track_javascript_angularjs_and_jquery_errors_with_google_analytics/)? Na tohle je stejně třeba odeslat nějaký hit.
    Další benefit vidím v tom, že na eventy lze navěsit custom alerts (jasně, error reporting pro vývojáře by měl být řešen jinak. Tohle je spíš jako poslední pojistka).

    Jinak souhlasím s tím, že je location.href je zbytečné posílat do GA. Osobně místo toho posílám referrer (pro chyby 404), nebo bližší specifikaci chyby pro jiné.

    • André Heller

      Souhlasím, pokud nastavíte komplexní měření i dalších např. javascriptových chyb, tak je měření pomocí eventů ve výsledku efektivnějši :) Jje pravda, že s využitím custom dimenzí, se na to skutečně nedají zatím nastavit Custom Alert, ale většinou se do dá obejít, jak zde už psali kluci, pomocí titlu apod.
      Každopádně u těch eventů je „problém“ s tím nastavením interakčnosti, s čímž se bohužel většina běžných uživatelů nedokáže poprat a dřív nebo později jim to začně narušovat metriky, protože na to někde zapomenou. Kdežto zapomenutím dimenze se nestane vlastně nic, jen tam ty data nebudou.

      Šlo mi spíš o ukázku jednoduchého a pohodlného případu pro masové využití.

      Jinak my si referrer ukládáme s každým jednotlivým hitem.

      • http://sabatka.net Pavel Šabatka

        Ad interakčnost: jop, vyzkoušeno. Jen mě to nenapadlo jako argument :-D

  • David Řezáč

    André, díky za návod :-) Sdílím dále v seznamu českých článků ke vzdělávání o analytice: http://www.affilo.cz/clanek/zobrazit/26/