Ako merať e-shop na FastCentriku bez vlastných analytických cookies

Trackless je cookieless analytika pre e-shopy. V prehliadači návštevníka neukladá vlastný merací identifikátor ani vlastné analytické cookies. Keďže toto napojenie beží cez merací kód v prehliadači, právny základ, cookie lištu a prípadné podmienenie spustenia vždy posudzujte podľa celkového nastavenia webu. Oficiálny doplnok pre FastCentrik neexistuje - podľa aktuálnej administrácie sa meranie vkladá cez Google Tag Manager: vo FastCentriku uložíte ID GTM kontajnera a do GTM vložíte Trackless kódy ako vlastné HTML značky. Dáta zostávajú na našom serveri v EÚ a prvých 30 dní máte zadarmo.

Čo na FastCentriku čakať
  • Trackless neukladá vlastné analytické cookies ani vlastný merací identifikátor, ale pri tomto napojení beží merací kód v prehliadači. Právny základ, cookie lištu a prípadné podmienenie spustenia posúďte podľa celkového nastavenia webu.
  • Blokovanie: merací kód beží v prehliadači - pri agresívnom blokovaní meracích skriptov môže časť návštev chýbať.
  • Čo zmeria: návštevy aj objednávky (využije dátovú vrstvu FastCentriku na ďakovacej stránke). Keď dátová vrstva obsahuje položky objednávky, Trackless oddelí tržbu za produkty od dopravy a platby.

Ako to funguje

  • Merací kód beží v prehliadači, takže pri agresívnom blokovaní meracích skriptov môže časť návštev chýbať. V bežnom nastavení však Trackless nebýva blokovaný; trendy a pomery zdrojov zostávajú výpovedné.
  • Cez Google Tag Manager. Vo FastCentriku uložíte len ID GTM kontajnera; samotný Trackless kód beží v GTM ako vlastná HTML značka na všetkých stránkach. Konverzie sa pripoja z dátovej vrstvy na ďakovacej stránke.
  • Dáta sú len Vaše. Meranie končí na našom serveri v EÚ; dáta neodovzdávame reklamným systémom.

Krok 1: Získajte merací token

Zaregistrujte sa na trackless.cz, prihláste sa a v sekcii Moje weby kliknite na Pridať web. Vyberte FastCentrik a Trackless Vám ukáže merací token - reťazec začínajúci na tlc_. V GTM použite variant nižšie, ktorý script vytvorí dynamicky a token naň nastaví až v prehliadači:

<script>
(function () {
    var s = document.createElement('script');
    s.async = true;
    s.src = 'https://c.trackless.cz/t.js';
    s.setAttribute('data-token', 'VAS_MERICI_TOKEN');
    document.head.appendChild(s);
})();
</script>

V bežnom HTML by stačil zápis <script async src="https://c.trackless.cz/t.js" data-token="...">. Pri FastCentriku však kód vkladáte cez GTM a v teste sa ukázalo, že GTM môže atribút data-token z externého scriptu vo výslednom DOM zahodiť. Dynamické vloženie tomu predchádza.

Krok 2: Pripojte FastCentrik ku Google Tag Manageru

Otvorte administráciu FastCentriku, prejdite do Nastavenia -> Aplikácie 3. strán -> Google Tag Manager a vložte svoje GTM ID, napríklad GTM-XXXXXXX. Ak GTM ešte nemáte, vytvorte si v Google Tag Manageri nový webový kontajner.

Do FastCentriku sa vkladá iba ID kontajnera. Samotné Trackless kódy vkladáte až v GTM ako značky Vlastné HTML.

V GTM založte značku pre návštevnosť

  1. Otvorte svoj GTM kontajner a kliknite na Tags -> New -> Tag Configuration -> Custom HTML / Vlastné HTML.
  2. Vložte základný Trackless kód z kroku 1, nahraďte VAS_MERICI_TOKEN tokenom z Trackless a značku pomenujte napríklad Trackless - návštevnosť.
  3. Pri tejto značke nastavte Triggering -> All Pages. Musí bežať na všetkých stránkach e-shopu.
  4. Značku uložte. Kontajner zatiaľ nemusíte publikovať; najprv pridajte objednávkovú značku v ďalšom kroku.

Táto prvá značka meria návštevy. Objednávky bude odosielať až druhá značka z kroku 3.

Krok 3: Pridajte objednávkovú značku

FastCentrik pri nastavení Google Tag Managera uvádza, že spolu s kontajnerom vkladá aj dátovú vrstvu a na potvrdení objednávky e-commerce dáta pre Google Analytics. Samostatný checkbox preto v niektorých administráciách nemusí byť vidieť. Do druhej GTM značky vložte konverzný kód Trackless nižšie:

<script>
(function () {
    window.trackless = window.trackless || function () {
        (window.trackless.q = window.trackless.q || []).push(arguments);
    };
    var sent = false;
    function num(x) {
        x = String(x == null ? '' : x).replace(/[^\d,.\-]/g, '');
        if (x.indexOf(',') > -1) { x = x.replace(/\./g, '').replace(',', '.'); }
        return Number(x) || 0;
    }
    function first(obj, keys) {
        if (!obj) { return null; }
        for (var i = 0; i < keys.length; i++) {
            if (obj[keys[i]] != null && obj[keys[i]] !== '') { return obj[keys[i]]; }
        }
        return null;
    }
    function lineTotal(items) {
        if (!items || !items.length) { return null; }
        var sum = 0;
        var found = false;
        for (var i = 0; i < items.length; i++) {
            var item = items[i] || {};
            var total = first(item, ['total', 'item_total', 'line_total', 'item_revenue', 'revenue', 'value']);
            if (total != null) {
                sum += num(total);
                found = true;
                continue;
            }
            var price = first(item, ['price', 'item_price', 'unitPrice', 'unit_price']);
            if (price == null) { continue; }
            var qty = first(item, ['quantity', 'qty', 'item_quantity']);
            qty = qty == null ? 1 : num(qty);
            if (!qty) { continue; }
            sum += num(price) * qty;
            found = true;
        }
        return found ? sum : null;
    }
    function order(entry) {
        if (!entry) { return null; }
        var isFastCentrikPurchase = entry.event === 'trackPurchase' || entry.transactionId != null;
        if (isFastCentrikPurchase && entry.transactionId != null && entry.transactionId !== '') {
            return {
                id: entry.transactionId,
                value: entry.transactionTotal,
                currency: entry.transactionCurrency || 'CZK',
                products: lineTotal(entry.transactionProducts),
                shipping: first(entry, ['transactionShipping', 'transactionShippingTotal', 'shipping'])
            };
        }
        if (entry.event === 'purchase' && entry.ecommerce && entry.ecommerce.transaction_id != null) {
            return {
                id: entry.ecommerce.transaction_id,
                value: entry.ecommerce.value,
                currency: entry.ecommerce.currency || 'CZK',
                products: lineTotal(entry.ecommerce.items || entry.items),
                shipping: first(entry.ecommerce, ['shipping', 'shipping_tax_excl', 'shipping_tax_incl'])
            };
        }
        if (entry[1] === 'purchase' && entry[2] && entry[2].transaction_id != null) {
            return {
                id: entry[2].transaction_id,
                value: entry[2].value,
                currency: entry[2].currency || 'CZK',
                products: lineTotal(entry[2].items),
                shipping: first(entry[2], ['shipping', 'shipping_tax_excl', 'shipping_tax_incl'])
            };
        }
        return null;
    }
    function handle(entry) {
        try {
            if (sent) { return; }
            var o = order(entry);
            if (!o || o.id == null || o.id === '') { return; }
            sent = true;
            var props = { type: 'order', id: String(o.id), value: num(o.value), currency: String(o.currency || 'CZK'), page_type: 'order' };
            if (o.products != null) {
                props.products_tax_excl = num(o.products);
                props.products_tax_incl = num(o.products);
            }
            if (o.shipping != null && o.shipping !== '') {
                props.shipping_tax_excl = num(o.shipping);
                props.shipping_tax_incl = num(o.shipping);
            }
            window.trackless('event', props);
        } catch (e) { /* nikdy neshodit dekovaci stranku */ }
    }
    function scan() {
        var dl = window.dataLayer || [];
        for (var i = 0; i < dl.length; i++) { handle(dl[i]); }
    }
    try {
        var dl = window.dataLayer = window.dataLayer || [];
        scan();
        var origPush = dl.push;
        dl.push = function () {
            for (var i = 0; i < arguments.length; i++) { handle(arguments[i]); }
            return origPush.apply(this, arguments);
        };
        if (document.readyState !== 'loading') { scan(); }
        else { document.addEventListener('DOMContentLoaded', scan); }
        window.addEventListener('load', scan);
    } catch (e) { /* nikdy neshodit dekovaci stranku */ }
})();
</script>

Kód číta číslo a hodnotu objednávky z dátovej vrstvy FastCentriku (transactionId / transactionTotal, prípadne z novšej udalosti purchase pre Google Analytics 4). Ak je dostupné transactionProducts alebo ecommerce.items, pošle zvlášť hodnotu produktov, aby sa do produktových tržieb nepočítala doprava a platba. Ak položky v dátovej vrstve nie sú, Trackless použije celkovú hodnotu objednávky podobne ako pri jednoduchých klientskych integráciách.

V GTM založte značku pre objednávky

  1. Kliknite znova na Tags -> New -> Tag Configuration -> Custom HTML / Vlastné HTML, vložte konverzný kód z tohto kroku a značku pomenujte napríklad Trackless - objednávka.
  2. Pri objednávkovej značke vytvorte trigger Page View -> Some Page Views s pravidlom Page URL contains objednavka-dokoncena.
  3. Objednávkovú značku nespúšťajte na All Pages. Má sa spustiť len na ďakovacej stránke po dokončení objednávky.
  4. Značku uložte. Ak v GTM používate Consent Mode alebo vlastné pravidlá podľa cookie lišty, nastavte spustenie oboch Trackless značiek podľa právneho posúdenia celého webu.

Po tomto kroku máte v GTM dve značky: Trackless - návštevnosť na všetky stránky a Trackless - objednávka len na ďakovaciu stránku.

Krok 4: Overte, že meranie beží

V GTM kliknite na Preview, otvorte e-shop cez náhľad a prejdite bežnú stránku aj testovaciu objednávku. Ak značky bežia správne, publikujte kontajner cez Submit / Publish.

  • GTM Preview: základná značka Trackless je v Tags Fired na všetkých stránkach a konverzná značka iba na URL /objednavka-dokoncena.
  • Console: pri scripte https://c.trackless.cz/t.js musí byť vyplnený data-token. Na kontrolu použite tento výpis:
  • Network: filter trackless má ukázať nielen stiahnutie t.js, ale aj ďalšiu požiadavku na Trackless endpoint. Samotné stiahnutie scriptu ešte neznamená odoslané meranie.
  • DataLayer: na ďakovacej stránke skontrolujte, že window.dataLayer obsahuje transactionId / transactionTotal a ideálne aj transactionProducts, alebo udalosť purchase s objektom ecommerce a items.
[...document.scripts]
  .filter(s => s.src.includes('c.trackless.cz/t.js'))
  .map(s => ({
    src: s.src,
    token: s.getAttribute('data-token'),
    outerHTML: s.outerHTML
  }))

Reálne nasadenie na FastCentriku sme overili: po dynamickom vložení základnej značky cez GTM dorazili návštevy aj objednávka. Ak kontrolný výpis vracia pri tokene null, základná značka je v GTM vložená nesprávne - použite dynamický kód z kroku 1. Ak token sedí, ale v Network nie je ďalšia požiadavka alebo v administrácii Trackless nič nepribúda, hľadajte problém v blokovaní prehliadačom, v tvare dataLayer, v triggeri konverznej značky alebo v nesprávnom webe/tokene v administrácii Trackless.

Čo budete merať

  • Merací kód beží v prehliadači, takže pri agresívnom blokovaní meracích skriptov môže časť návštev chýbať. V bežnom nastavení však Trackless nebýva blokovaný; trendy a pomery zdrojov zostávajú výpovedné.
  • Zdroje a kanály: UTM parametre, referrery a kanály v štýle Google Analytics 4 - vrátane návštev z AI asistentov.
  • Zariadenia, prehliadače a operačné systémy.
  • Krajiny a jazyky návštevníkov.
  • Dokončené objednávky ako konverzie - vrátane hodnoty, meny, čísla objednávky a produktovej tržby bez dopravy a platby, ak ju FastCentrik v dátovej vrstve odovzdá oddelene.

Limity, nech viete, do čoho idete

  • Merací kód beží v prehliadači, takže pri agresívnom blokovaní meracích skriptov môže časť návštev chýbať. V bežnom nastavení však Trackless nebýva blokovaný; trendy a pomery zdrojov zostávajú výpovedné.
  • GTM variant číta len to, čo FastCentrik vloží do dátovej vrstvy na ďakovacej stránke. Keď je dostupný zoznam položiek, Trackless oddelí produktovú tržbu od dopravy a platby; keď dostupný nie je, použije sa celková hodnota objednávky podobne ako pri MioWebe. Rozpis DPH, marže, vratky a plné položky v Trackless vyžadujú serverové alebo API napojenie, nie samotný GTM snippet.
  • Prevádzkujete aj e-shop na otvorenej platforme (PrestaShop, WooCommerce, Joomla / VirtueMart, OpenCart, Magento 2, Shopware 6 alebo Sylius)? Tam použite naše serverové moduly - merajú priamo na serveri, nie sú závislé od spustenia meracieho kódu v prehliadači a podľa platformy zvládnu aj objednávky, položky a marže.

Časté otázky

Potrebujem kvôli Tracklessu súhlas návštevníkov alebo cookie lištu?

Nedá sa odpovedať plošne. Trackless do prehliadača neukladá vlastný merací identifikátor ani vlastné analytické cookies, ale pri tomto napojení beží merací kód v prehliadači. Právny základ, cookie lištu a prípadné podmienenie spustenia posúďte podľa celého nastavenia webu a ďalších nástrojov.

Spomalí merací kód môj e-shop?

Nie. Skript je malý a načítava sa asynchrónne (atribút async), takže nebrzdí vykresľovanie stránky. A keď sa nenačíta, e-shop beží ďalej, akoby tam kód nebol.

Môžem Trackless používať spoločne s Google Analytics 4?

Áno. Oba kódy môžu bežať vedľa seba a nijako sa neovplyvňujú - Trackless dokonca číta tú istú dátovú vrstvu, ktorú FastCentrik pripravuje pre Google. Počítajte s rozdielnymi číslami: Trackless je menej závislý od vlastných analytických cookies než klientská analytika, takže môže zachytiť aj časť návštev, ktoré GA4 kvôli odmietnutým analytickým cookies započíta len obmedzene alebo modelom.

Koľko Trackless stojí?

Prvých 30 dní je zadarmo. Potom platíte podľa počtu objednávok Vášho e-shopu - konkrétne sumy nájdete v cenníku.

Na webe píšete „bez JavaScriptu“ - a toto je JavaScript. Ako to ide dohromady?

Naše serverové moduly a pluginy pre otvorené platformy (PrestaShop, WordPress/WooCommerce, Joomla / VirtueMart, OpenCart, Magento 2, Shopware 6 a Sylius) merajú priamo na serveri e-shopu bez vlastného meracieho JavaScriptu. Pri tejto platforme je však dostupná cesta cez merací kód v prehliadači. Skript alebo pixel odošle URL stránky, referrer, jazyk a udalosti na endpoint Trackless; neukladá vlastné cookies ani vlastný merací identifikátor. Identita návštevníka sa počíta na serveri z požiadavky. To obmedzuje vlastné identifikátory v prehliadači, ale právne posúdenie a prípadné podmienenie spustenia závisí od nasadenia.

Vyskúšajte to na svojom e-shope

Registrácia zaberie minútu, vloženie kódu ďalších päť. Prvých 30 dní neplatíte nič.

Vyskúšať 30 dní zadarmo Pozrieť živé demo

← Späť na hlavnú stránku