Semakin
Zákazník

Uživatelská příručka

Sema Track for Joomla

Joomla System Plugin pro server-side měření webu bez e-shopu (bez VirtueMart). Odlehčená varianta Sema Track for VirtueMart. Konverze = návštěva děkovací stránky po odeslání formuláře nebo AJAX detekce formulářů.

ParametrHodnota
Identifikátorplg_system_semakin_sst_web
CMSJoomla 4.x / 5.x / 6.x
PHP8.1+
Aktuální verze1.0.6

Podporované platformy: GA4, Google Ads, Sklik.cz.


1. Požadavky

  • Joomla 4.x, 5.x nebo 6.x
  • PHP 8.1 nebo novější
  • MySQL 5.7+ / MariaDB 10.3+
  • GDPR komponenta: StoreJExtensions GDPR, Sema Cookie Consent nebo CookieYes (nebo manuální režim)

Poznámka: Tento plugin nevyžaduje VirtueMart. Pro e-shopy s VirtueMart použijte Sema Track for VirtueMart (plg_system_semakin_sst).

2. Instalace

Získání balíčku

Stáhněte soubor plg_system_semakin_sst_web-1.0.6.zip ze SemaHub (Semakin.cz).

Postup instalace

  1. Přihlaste se do administrace Joomla.
  2. Přejděte do System > Install > Extensions.
  3. Nahrajte ZIP soubor plg_system_semakin_sst_web-1.0.6.zip.
  4. Po instalaci plugin vytvoří dvě databázové tabulky: #__semakin_sst_web_log a #__semakin_sst_web_queue.

Upgrade: Stejný postup jako instalace. Joomla použije method="upgrade". Data v tabulkách zůstanou zachována.

3. Aktivace pluginu

Po instalaci je nutné plugin ručně povolit:

  1. Přejděte do System > Manage > Plugins.
  2. Vyhledejte semakin_sst_web nebo Server-Side Tracking.
  3. Klikněte na název pluginu a nastavte Status = Enabled.
  4. Nastavte parametry pluginu (viz další sekce).

4. Základní nastavení

Otevřete nastavení: System > Plugins > klik na název pluginu.

Záložka: Základní nastavení

ParametrVýchozíPopis
Tracking povolenAnoGlobální vypínač veškerého trackingu.
Testovací režimNeGA4 eventy jdou na debug endpoint. V produkci VŽDY vypnout.
GDPR komponentaStoreJExtensionsZdroj souhlasu uživatele (viz sekce 5).
Výchozí vrstva souhlasu0 (Anonymní)Použije se, když souhlas nelze přečíst nebo je zvolen manuální režim.
Název konverzního eventugenerate_leadNázev GA4 eventu pro konverzi. Měňte jen v případě potřeby.
Hodnota konverze0Peněžní hodnota přiřazená každé konverzi (pro reporty Google Ads).
Měna konverzeCZKISO 4217 kód měny pro hodnotu konverze.
Uchovávání logu (dny)90Záznamy starší než zadaný počet dnů budou automaticky smazány.
Uchovávání fronty (dny)30Zpracované/neúspěšné záznamy starší než zadaný počet dnů budou smazány.
Inline zpracování fronty (%)5Pravděpodobnost zpracování retry fronty na každém requestu. Nastavte na 0 při použití Task Scheduleru.

5. GDPR a souhlas uživatelů

Plugin používá třívrstvý model souhlasu:

VrstvaNázevCo se odesílá
L0AnonymníAnonymizované eventy: zkrácená IP, dočasné UUID, žádné cookies
L1AnalyticsGA4 s client_id, session_id
L2MarketingKonverze GA4/Ads/Sklik; hashovaný e-mail/telefon (Enhanced Conversions)

Podporované GDPR komponenty

KomponentaMetoda detekce
StoreJExtensions GDPR (com_gdpr)JS bridge čte Local Storage, nastavuje cookie semakin_sst_cl
Sema Cookie ConsentJS bridge čte Local Storage (scc_cookie_consent), nastavuje cookie semakin_sst_cl
CookieYesPřímé čtení cookie cookieyes-consent
ManuálníPevný consent level (bez detekce)

Důležité: Kategorie cookie

Bridge cookie semakin_sst_cl musí být zařazena jako Nezbytná (kategorie 1) ve vaší consent komponentě, NE jako Analytická nebo Marketingová. Je to technická cookie pro komunikaci consent stavu z JS do PHP – sama o sobě nic netrackuje.

Timing: Cookie se projeví až na dalším requestu (JS nastaví cookie, PHP ji přečte na následujícím požadavku). Pro konverzní eventy je timing vždy OK – návštěvník načte minimálně 2 stránky před odesláním formuláře.

6. Detekce konverzí

Plugin detekuje konverze (odeslání formuláře) jedním ze tří režimů, nastavitelných přes pole Režim detekce konverzí.

Režim: URL match (výchozí)

Plugin porovná aktuální URL stránky (REQUEST_URI) s nastavenou URL konverze (např. /dekujeme, /thank-you). Když návštěvník přistane na děkovací stránce po odeslání formuláře, spustí se event generate_lead.

ParametrPopis
URL konverzeCesta k děkovací stránce (např. /dekujeme). Porovnává se s REQUEST_URI.

Režim: AJAX formulář

Pro formuláře odesílané přes AJAX (bez přesměrování stránky), jako SP Page Builder, RSForm nebo vlastní JavaScript formuláře. Plugin injektuje JavaScript, který zachytává AJAX odpovědi. Když je detekováno úspěšné odeslání formuláře, nastaví se cookie semakin_sst_web_ajax_cv=1. Na další stránce plugin přečte tuto cookie a spustí event generate_lead.

ParametrPopis
CSS selektor formulářeVolitelný CSS selektor pro omezení sledovaných formulářů (např. #contact-form, .sp-form). Prázdný = všechny formuláře.

JS intercept pokrývá tři AJAX metody:

  1. jQuery $(document).ajaxComplete() – většina Joomla komponent
  2. XMLHttpRequest monkey-patch – non-jQuery AJAX
  3. Fetch API monkey-patch – moderní implementace

Režim: Obojí

Kombinace URL match a AJAX detekce. Deduplikace je sdílená – pouze jedna konverze per session bez ohledu na režim.

Deduplikace

Všechny režimy sdílejí deduplikační flag na úrovni session (semakin_sst_web.lead_tracked). Pouze jeden generate_lead event se odešle per session.

7. Zachytávání PII z formulářů

Plugin injektuje JavaScript před </body>, který zachytává e-mail a telefon z formulářů pro použití v Enhanced Conversions (Google Ads, Sklik EID).

Jak to funguje

  1. JS naslouchá submit a click eventum na formulářích a tlačítkách.
  2. Při odeslání formuláře JS hledá pole input[type="email"] a input[type="tel"].
  3. Nalezené hodnoty se zašifrují SHA-256 přímo v prohlížeči pomocí Web Crypto API.
  4. Hashe se uloží do cookie semakin_sst_form_pii (JSON: {"eh":"sha256...","ph":"sha256..."}), expirace 30 minut.
  5. PHP přečte hashe a předá je do Google Ads (hashedEmail/hashedPhoneNumber) a Sklik (eid).

GDPR: Žádný plaintext PII nikdy neopustí prohlížeč. Cookie obsahuje pouze SHA-256 hashe. PHP nikdy nevidí původní e-mail ani telefon.

Zachytávání PII funguje ve všech režimech konverze (URL match, AJAX, obojí). Cookie semakin_sst_form_pii je nezávislá na cookie AJAX detekce.

8. Google Analytics 4

Záložka: GA4

ParametrPopis
GA4 povolenZapne odesílání eventu přes Measurement Protocol v2.
Measurement IDFormát G-XXXXXXXXXX. Najdete v GA4 > Správce > Datové streamy.
API SecretTajný klíč Measurement Protocol. GA4 > Datové streamy > Measurement Protocol API secrets.
Název _ga cookieVýchozí _ga. Měňte jen při použití vlastního názvu cookie.
Odesílat anonymní eventy (L0)Odesílá základní eventy i bez souhlasu (anonymizované). Doporučeno: Ano.
Deduplikace s klientemPřidává event_id proti dvojitému počítání při současném použití gtag.js.

Sledované eventy

EventDetekceMin. souhlas
session_startPrvní stránka v sessionL0
page_viewKaždá frontend stránkaL0
generate_leadURL match / AJAX detekceL0

Fallback client_id

Bez gtag.js neexistuje cookie _ga. Plugin automaticky vytvoří náhradní cookie semakin_sst_cid s GA4 kompatibilním formátem (expirace 2 roky).

9. Google Ads

Záložka: Google Ads

ParametrPopis
Google Ads povolenýZapne upload konverzí přes Conversion API v23.
Conversion Action IDNumerické ID konverzní akce (ne AW- formát).
Developer TokenZ Google Ads API Center.
Customer IDID klientského účtu (formát XXX-XXX-XXXX).
MCC Customer IDVolitelně. ID manažerského účtu při použití MCC.
OAuth Client IDZ Google Cloud Console.
OAuth Client SecretVkládejte do textarea (password pole mohou oříznout).
OAuth Refresh TokenVkládejte do textarea. OAuth consent screen musí být v režimu Production.
Enhanced ConversionsOdesílá hashovaný e-mail/telefon pro lepší přiřazování. Hashe pochází z Form PII Capture JS.

Důležité poznámky

  • Typ konverzní akce: Musí být „Import z kliknutí“ (ne „Webové stránky“). Typ Webové stránky je pro gtag.js.
  • Duplicitní akce: Pokud web používal webovou konverzní akci (z gtag.js), deaktivujte ji nebo přepněte na sekundární.
  • GCLID/GBRAID: Plugin zachytává click ID (gclid, gbraid) z URL parametru a ukládá do cookies (90 dnů). Na zařízeních s omezenými cookies (Safari, iOS) Google posílá gbraid místo gclid.
  • Enhanced Conversions for Leads: Musí být zapnuto v Google Ads > Nastavení > Rozšířené konverze pro potenciální zákazníky. Plugin odesílá SHA-256 hashe zachycené Form PII Capture JS.
  • Timeout: Google Ads API používá 5s timeout (ne 500ms jako GA4).
  • Pouze eventy generate_lead, pouze při L2.

10. Sklik.cz

Záložka: Sklik

ParametrPopis
Sklik povolenZapne Sklik konverzní měření a retargeting.
ID konverzního cíleNumerické ID z vašeho Sklik konverzního kódu (parametr id).
ID retargetingového seznamuVolitelně. ID retargetingového publika.
Odesílat hashovaný e-mail (EID)SHA-256 hash e-mailu pro lepší přiřazování (pouze L2).

Jak to funguje

Sklik nemá server-side API. Plugin injektuje JavaScript snippety (rc.js) před </body>:

  • Retargeting (rc.retargetingHit) na každé stránce (L0+)
  • Konverze (rc.conversionHit) při generate_lead (L0+)
  • Parametr consent: Dynamicky – consent:0 bez marketingového souhlasu, consent:1 se souhlasem
  • EID: Pouze při L2

Skript rc.js se načítá jako synchronní <script> tag (vyžadováno Sklikem).

CSP: Pokud web používá Content-Security-Policy, přidejte https://c.seznam.cz do script-src, connect-src a img-src. Přidejte https://h.seznam.cz do connect-src. Viz CSP poznámka v nastavení pluginu.

11. Retry fronta a Task Scheduler

Když API volání selže, event se uloží do tabulky #__semakin_sst_web_queue pro automatický retry s exponenciálním backoffem (1 min > 5 min > 15 min).

Dva způsoby zpracování

ZpůsobKonfigurace
Inline zpracováníNastavte „Inline zpracování fronty“ na 5–10 %. Zpracovává se na náhodných HTTP requestech. Vhodné pro weby bez cronu.
Joomla Task SchedulerVytvořte úlohy v System > Naplánované úlohy. Nastavte inline zpracování na 0 %.

Nastavení Task Scheduleru

  1. Přejděte do System > Naplánované úlohy > Nová.
  2. Vytvořte „Semakin SST Web: Zpracovat retry frontu“ – spouštět každých 15 minut.
  3. Vytvořte „Semakin SST Web: Úklid starých záznamů“ – spouštět jednou denně.
  4. V nastavení pluginu nastavte inline zpracování na 0 %.
  5. Ověření: tlačítko „Spustit test“ – kód ukončení 0 = OK.

Task Scheduler vyžaduje cron job nebo „lazy cron“. Pro spolehlivý provoz nastavte server cron:

*/5 * * * * php /cesta/k/joomla/cli/joomla.php scheduler:run > /dev/null 2>&1

12. Logování a diagnostika

Záložka: Logování

ParametrPopis
Logování povolenoGlobální vypínač logování.
Úroveň loguMinimální úroveň pro souborový log. DB log zapisuje VŽDY bez ohledu na toto nastavení.
Logovat do databázeZápis do #__semakin_sst_web_log. Doporučeno: vždy zapnuto (nutné pro deduplikaci).
Logovat do souboruZápis do logs/semakin_sst_web.php ve složce Joomla logs.
Max. počet opakováníMaximální počet pokusů (výchozí 3).

Kontrola DB logu

SELECT event_name, platform, consent_level, status, http_status, created_at
FROM #__semakin_sst_web_log
ORDER BY id DESC
LIMIT 20;

Nahraďte #__ vaším prefixem tabulek.

13. Odinstalace

  1. Přejděte do System > Manage > Extensions.
  2. Vyhledejte semakin_sst_web.
  3. Označte a odinstalujte.

Odinstalátor smaže obě tabulky (#__semakin_sst_web_log a #__semakin_sst_web_queue).

14. Řešení problémů

Žádné eventy v databázi

  1. Ověřte, že plugin je povolený (Status = Enabled).
  2. Zkontrolujte, že services/provider.php existuje v adresáři pluginu na serveru.
  3. Ověřte, že bridge cookie semakin_sst_cl je nastavena (DevTools > Application > Cookies).
  4. Pokud cookie chybí, zkontrolujte konfiguraci GDPR komponenty a že bridge JS není stripován.

consent_level je vždy 0

  • Bridge cookie semakin_sst_cl chybí nebo je blokována.
  • Zkontrolujte, že semakin_sst_cl je zařazena jako Nezbytná v consent komponentě (ne Analytická/Marketingová).
  • Na první stránce po instalaci je consent vždy L0 (bridge cookie potřebuje jeden page load pro inicializaci).

generate_lead se nespouští (URL match)

  1. Ověřte, že URL konverze odpovídá skutečné cestě děkovací stránky (např. /dekujeme).
  2. Cesta se porovnává s REQUEST_URI – zkontrolujte přesnou shodu (case-sensitive).
  3. Ověřte, že návštěvník již nespustil konverzi v aktuální session (deduplikace).

generate_lead se nespouští (AJAX)

  1. Zkontrolujte DevTools > Cookies na semakin_sst_web_ajax_cv=1 po odeslání formuláře.
  2. Pokud cookie chybí, JS intercept nedetekoval úspěšnou AJAX odpověď. Zkontrolujte konzoli prohlížeče na chyby.
  3. Pokud je cookie přítomna, ale žádný event se neobjeví v DB logu, přejděte na další stránku – event se spustí na dalším page load.
  4. Pokud používáte CSS selektor formuláře, ověřte, že selektor odpovídá vašemu formuláři.

Google Ads konverze se nezobrazují v dashboardu

  1. Ověřte, že konverzní akce je typu „Import z kliknutí“ (ne Webové stránky).
  2. Zkontrolujte, že GCLID/GBRAID je přítomen v payloadu v DB logu.
  3. Ověřte, že OAuth consent screen je v režimu Production (ne Testing).
  4. Zkontrolujte, že Enhanced Conversions for Leads je zapnuto v nastavení Google Ads.
  5. Pokud je aktivní i webová konverzní akce, deaktivujte ji nebo přepněte na sekundární.

Sklik kód se nespouští

  • Ověřte, že rc.js je načteno jako synchronní <script> tag (zkontrolujte zdrojový kód stránky).
  • Pokud web používá CSP, přidejte požadované domény (viz CSP poznámka v záložce Sklik).
  • Zkontrolujte konzoli prohlížeče na chyby.

PII hashe chybí v konverzích

  • Ověřte, že formulář obsahuje pole input[type="email"] nebo input[type="tel"].
  • Zkontrolujte DevTools > Cookies na semakin_sst_form_pii po odeslání formuláře.
  • Cookie má 30minutovou expiraci – pokud se konverze spustí později, hashe už mohou být pryč.

Jak tracking funguje (přehled)

  1. Návštěvník načte stránku webu.
  2. Plugin sesbírá eventy page_view a session_start.
  3. Úroveň souhlasu se zjistí z GDPR komponenty (přes bridge cookie).
  4. Eventy se anonymizují dle úrovně souhlasu.
  5. Server-side sendery odešlou eventy do GA4.
  6. JavaScript se injektuje před </body>: Sklik retargeting, consent bridge, PII capture.
  7. Když návštěvník odešle formulář:
    • URL match: Děkovací stránka spustí event generate_lead.
    • AJAX: JS detekuje AJAX odpověď, nastaví cookie a event se spustí na dalším page load.
  8. Event generate_lead se odešle do GA4, Google Ads a Sklik.
  9. Neúspěšná API volání se zařadí do fronty pro automatický retry.

Cookies používané pluginem

CookieÚčelExpiraceNastavujePotřebný souhlas
semakin_sst_clConsent bridge (LS do PHP)24hJS bridgeŽádný (nezbytná)
semakin_sst_cidGA4 client_id fallback2 rokyPHPL1 – statistiky
semakin_sst_web_ajax_cvAJAX konverze detekována30 minJSL1 se zapnutým GA4, jinak L2
semakin_sst_gclidGCLID z URL (Google Ads)90 dnůPHPL2 – marketing
semakin_sst_gbraidGBRAID z URL (Safari/iOS)90 dnůPHPL2 – marketing
semakin_sst_form_piiSHA-256 hashe e-mailu/telefonu30 minJSL2 – marketing

semakin_sst_cl musí být v kategorii Nezbytné cookies. Ostatní cookies patří do kategorie Analytické nebo Marketingové.

Plugin sám hlídá, aby žádná z těchto cookies nevznikla bez odpovídajícího souhlasu. Při odmítnutém souhlasu (L0) neuloží plugin do zařízení návštěvníka nic kromě consent bridge.

Identifikátory kliknutí z reklamy (gclid, gbraid) se při příchodu bez marketingového souhlasu uloží pouze do Joomla session. Jakmile návštěvník souhlas udělí, plugin je automaticky povýší na 90denní cookie — atribuce se tedy neztratí ani když návštěvník souhlasí až o několik stránek později.


Kontrolní seznam pro spuštění

  • Plugin nainstalován a povolen
  • GDPR komponenta vybrána a nastavena
  • Bridge cookie semakin_sst_cl zařazena jako Nezbytná
  • Režim konverze zvolen (URL match / AJAX / Obojí)
  • URL konverze nastavena (pokud se používá URL match)
  • CSS selektor formuláře nastaven (pokud se používá AJAX, volitelně)
  • GA4: Measurement ID a API Secret nastavené
  • Google Ads: Konverzní akce vytvořena jako „Import z kliknutí“
  • Google Ads: OAuth credentials v textarea polích, consent screen v režimu Production
  • Google Ads: Enhanced Conversions for Leads zapnuté
  • Sklik: ID konverze a ID retargetingu nastavené
  • CSP hlavičky aktualizované (pokud je to relevantní)
  • DB logování zapnuto
  • Testovací režim VYPNUT
  • Inline zpracování fronty nastaveno (nebo Task Scheduler nakonfigurován)
  • Testovací odeslání formuláře provedeno a ověřeno v DB logu a dashboardech platforem

Jak to vypadá v administraci

Nastavení měření
Měření na straně serveru, které respektuje udělený souhlas.

Máte zájem o spolupráci?

Ozvěte se nám a probereme Váš projekt. Rádi Vám poradíme s výběrem řešení.