Semakin
Zákazník

Sema Track for Joomla

Sema Track for Joomla – Instalace a pouziti

Joomla System Plugin pro server-side mereni webu bez e-shopu (bez VirtueMart). Odlehcena varianta Sema Track for VirtueMart. Konverze = navsteva dekovaci stranky po odeslani formulare nebo AJAX detekce formularu.

ParametrHodnota
Identifikatorplg_system_semakin_sst_web
CMSJoomla 4.x / 5.x / 6.x
PHP8.1+
Aktualni verze1.0.4

Podporovane platformy: GA4, Google Ads, Sklik.cz.


1. Pozadavky

  • Joomla 4.x, 5.x nebo 6.x
  • PHP 8.1 nebo novejsi
  • MySQL 5.7+ / MariaDB 10.3+
  • GDPR komponenta: StoreJExtensions GDPR, Sema Cookie Consent nebo CookieYes (nebo manualni rezim)

Poznamka: Tento plugin nevyzaduje VirtueMart. Pro e-shopy s VirtueMart pouzijte Sema Track for VirtueMart (plg_system_semakin_sst).

2. Instalace

Ziskani balicku

Stahnete soubor plg_system_semakin_sst_web-1.0.4.zip ze SemaHub (semakin.cz).

Postup instalace

  1. Prihlaste se do administrace Joomla.
  2. Prejdete do System > Install > Extensions.
  3. Nahrajte ZIP soubor plg_system_semakin_sst_web-1.0.4.zip.
  4. Po instalaci plugin vytvori dve databazove tabulky: #__semakin_sst_web_log a #__semakin_sst_web_queue.

Upgrade: Stejny postup jako instalace. Joomla pouzije method="upgrade". Data v tabulkach zustanou zachovana.

3. Aktivace pluginu

Po instalaci je nutne plugin rucne povolit:

  1. Prejdete do System > Manage > Plugins.
  2. Vyhledejte semakin_sst_web nebo Server-Side Tracking.
  3. Kliknete na nazev pluginu a nastavte Status = Enabled.
  4. Nastavte parametry pluginu (viz dalsi sekce).

4. Zakladni nastaveni

Otevrete nastaveni: System > Plugins > klik na nazev pluginu.

Zalozka: Zakladni nastaveni

ParametrVychoziPopis
Tracking povolenAnoGlobalni vypinac veskereho trackingu.
Testovaci rezimNeGA4 eventy jdou na debug endpoint. V produkci VZDY vypnout.
GDPR komponentaStoreJExtensionsZdroj souhlasu uzivatele (viz sekce 5).
Vychozi vrstva souhlasu0 (Anonymni)Pouzije se, kdyz souhlas nelze precist nebo je zvolen manualni rezim.
Nazev konverzniho eventugenerate_leadNazev GA4 eventu pro konverzi. Mente jen v pripade potreby.
Hodnota konverze0Penezni hodnota prirazena kazde konverzi (pro reporty Google Ads).
Mena konverzeCZKISO 4217 kod meny pro hodnotu konverze.
Uchovavani logu (dny)90Zaznamy starsi nez zadany pocet dnu budou automaticky smazany.
Uchovavani fronty (dny)30Zpracovane/neuspesne zaznamy starsi nez zadany pocet dnu budou smazany.
Inline zpracovani fronty (%)5Pravdepodobnost zpracovani retry fronty na kazdem requestu. Nastavte na 0 pri pouziti Task Scheduleru.

5. GDPR a souhlas uzivatelu

Plugin pouziva trivrstvy model souhlasu:

VrstvaNazevCo se odesila
L0AnonymniAnonymizovane eventy: zkracena IP, docasne UUID, zadne cookies
L1AnalyticsGA4 s client_id, session_id
L2MarketingKonverze GA4/Ads/Sklik; hashovany email/telefon (Enhanced Conversions)

Podporovane GDPR komponenty

KomponentaMetoda detekce
StoreJExtensions GDPR (com_gdpr)JS bridge cte Local Storage, nastavuje cookie semakin_sst_cl
Sema Cookie ConsentJS bridge cte Local Storage (scc_cookie_consent), nastavuje cookie semakin_sst_cl
CookieYesPrime cteni cookie cookieyes-consent
ManualniPevny consent level (bez detekce)

Dulezite: Kategorie cookie

Bridge cookie semakin_sst_cl musi byt zarazena jako Nezbytna (kategorie 1) ve vasi consent komponente, NE jako Analyticka nebo Marketingova. Je to technicka cookie pro komunikaci consent stavu z JS do PHP – sama o sobe nic netrackuje.

Timing: Cookie se projevi az na dalsim requestu (JS nastavi cookie, PHP ji precte na nasledujicim pozadavku). Pro konverzni eventy je timing vzdy OK – navstevnik nacte minimalne 2 stranky pred odeslanim formulare.

6. Detekce konverzi

Plugin detekuje konverze (odeslani formulare) jednim ze tri rezimu, nastavitelnych pres pole Rezim detekce konverzi.

Rezim: URL match (vychozi)

Plugin porovna aktualni URL stranky (REQUEST_URI) s nastavenou URL konverze (napr. /dekujeme, /thank-you). Kdyz navstevnik pristane na dekovaci strance po odeslani formulare, spusti se event generate_lead.

ParametrPopis
URL konverzeCesta k dekovaci strance (napr. /dekujeme). Porovnava se s REQUEST_URI.

Rezim: AJAX formular

Pro formulare odesilane pres AJAX (bez presmerovani stranky), jako SP Page Builder, RSForm nebo vlastni JavaScript formulare. Plugin injektuje JavaScript, ktery zachytava AJAX odpovedi. Kdyz je detekovano uspesne odeslani formulare, nastavi se cookie semakin_sst_web_ajax_cv=1. Na dalsi strance plugin precte tuto cookie a spusti event generate_lead.

ParametrPopis
CSS selektor formulareVolitelny CSS selektor pro omezeni sledovanych formularu (napr. #contact-form, .sp-form). Prazdny = vsechny formulare.

JS intercept pokryva tri AJAX metody:

  1. jQuery $(document).ajaxComplete() – vetsina Joomla komponent
  2. XMLHttpRequest monkey-patch – non-jQuery AJAX
  3. Fetch API monkey-patch – moderni implementace

Rezim: Oboji

Kombinace URL match a AJAX detekce. Deduplikace je sdilena – pouze jedna konverze per session bez ohledu na rezim.

Deduplikace

Vsechny rezimy sdileji deduplikacni flag na urovni session (semakin_sst_web.lead_tracked). Pouze jeden generate_lead event se odesle per session.

7. Zachytavani PII z formularu

Plugin injektuje JavaScript pred </body>, ktery zachytava email a telefon z formularu pro pouziti v Enhanced Conversions (Google Ads, Sklik EID).

Jak to funguje

  1. JS nasloucha submit a click eventum na formularich a tlacitkach.
  2. Pri odeslani formulare JS hleda pole input[type="email"] a input[type="tel"].
  3. Nalezene hodnoty se zasifruji SHA-256 primo v prohlizeci pomoci Web Crypto API.
  4. Hashe se ulozi do cookie semakin_sst_form_pii (JSON: {"eh":"sha256...","ph":"sha256..."}), expirace 30 minut.
  5. PHP precte hashe a preda je do Google Ads (hashedEmail/hashedPhoneNumber) a Sklik (eid).

GDPR: Zadny plaintext PII nikdy neopusti prohlizec. Cookie obsahuje pouze SHA-256 hashe. PHP nikdy nevidi puvodni email ani telefon.

Zachytavani PII funguje ve vsech rezimech konverze (URL match, AJAX, oboji). Cookie semakin_sst_form_pii je nezavisla na cookie AJAX detekce.

8. Google Analytics 4

Zalozka: GA4

ParametrPopis
GA4 povolenZapne odesilani eventu pres Measurement Protocol v2.
Measurement IDFormat G-XXXXXXXXXX. Najdete v GA4 > Spravce > Datove streamy.
API SecretTajny klic Measurement Protocol. GA4 > Datove streamy > Measurement Protocol API secrets.
Nazev _ga cookieVychozi _ga. Mente jen pri pouziti vlastniho nazvu cookie.
Odesilat anonymni eventy (L0)Odesila zakladni eventy i bez souhlasu (anonymizovane). Doporuceno: Ano.
Deduplikace s klientemPridava event_id proti dvojitemu pocitani pri soucasnem pouziti gtag.js.

Sledovane eventy

EventDetekceMin. souhlas
session_startPrvni stranka v sessionL0
page_viewKazda frontend strankaL0
generate_leadURL match / AJAX detekceL0

Fallback client_id

Bez gtag.js neexistuje cookie _ga. Plugin automaticky vytvori nahradni cookie semakin_sst_cid s GA4-kompatibilnim formatem (expirace 2 roky).

9. Google Ads

Zalozka: Google Ads

ParametrPopis
Google Ads povolenyZapne upload konverzi pres Conversion API v23.
Conversion Action IDNumericke ID konverzni akce (ne AW- format).
Developer TokenZ Google Ads API Center.
Customer IDID klientskeho uctu (format XXX-XXX-XXXX).
MCC Customer IDVolitelne. ID manazerskeho uctu pri pouziti MCC.
OAuth Client IDZ Google Cloud Console.
OAuth Client SecretVkladejte do textarea (password pole mohou oriznout).
OAuth Refresh TokenVkladejte do textarea. OAuth consent screen musi byt v rezimu Production.
Enhanced ConversionsOdesila hashovany email/telefon pro lepsi prirazovani. Hashe pochazi z Form PII Capture JS.

Dulezite poznamky

  • Typ konverzni akce: Musi byt „Import z kliknuti“ (ne „Webove stranky“). Typ Webove stranky je pro gtag.js.
  • Duplicitni akce: Pokud web pouzival webovou konverzni akci (z gtag.js), deaktivujte ji nebo prepnete na sekundarni.
  • GCLID/GBRAID: Plugin zachytava click ID (gclid, gbraid) z URL parametru a uklada do cookies (90 dnu). Na zarizenich s omezenymi cookies (Safari, iOS) Google posila gbraid misto gclid.
  • Enhanced Conversions for Leads: Musi byt zapnuto v Google Ads > Nastaveni > Rozsirene konverze pro potencialni zakazniky. Plugin odesila SHA-256 hashe zachycene Form PII Capture JS.
  • Timeout: Google Ads API pouziva 5s timeout (ne 500ms jako GA4).
  • Pouze eventy generate_lead, pouze pri L2.

10. Sklik.cz

Zalozka: Sklik

ParametrPopis
Sklik povolenZapne Sklik konverzni mereni a retargeting.
ID konverzniho cileNumericke ID z vaseho Sklik konverzniho kodu (parametr id).
ID retargetingoveho seznamuVolitelne. ID retargetingoveho publika.
Odesilat hashovany e-mail (EID)SHA-256 hash emailu pro lepsi prirazovani (pouze L2).

Jak to funguje

Sklik nema server-side API. Plugin injektuje JavaScript snippety (rc.js) pred </body>:

  • Retargeting (rc.retargetingHit) na kazde strance (L0+)
  • Konverze (rc.conversionHit) pri generate_lead (L0+)
  • Parametr consent: Dynamicky – consent:0 bez marketingoveho souhlasu, consent:1 se souhlasem
  • EID: Pouze pri L2

Skript rc.js se nacita jako synchronni <script> tag (vyzadovano Sklikem).

CSP: Pokud web pouziva Content-Security-Policy, pridejte https://c.seznam.cz do script-src, connect-src a img-src. Pridejte https://h.seznam.cz do connect-src. Viz CSP poznamka v nastaveni pluginu.

11. Retry fronta a Task Scheduler

Kdyz API volani selze, event se ulozi do tabulky #__semakin_sst_web_queue pro automaticky retry s exponencialnim backoffem (1 min > 5 min > 15 min).

Dva zpusoby zpracovani

ZpusobKonfigurace
Inline zpracovaniNastavte „Inline zpracovani fronty“ na 5–10 %. Zpracovava se na nahodnych HTTP requestech. Vhodne pro weby bez cronu.
Joomla Task SchedulerVytvorte ulohy v System > Naplanovane ulohy. Nastavte inline zpracovani na 0 %.

Nastaveni Task Scheduleru

  1. Prejdete do System > Naplanovane ulohy > Nova.
  2. Vytvorte „Semakin SST Web: Zpracovat retry frontu“ – spoustet kazdych 15 minut.
  3. Vytvorte „Semakin SST Web: Uklid starych zaznamu“ – spoustet jednou denne.
  4. V nastaveni pluginu nastavte inline zpracovani na 0 %.
  5. Overeni: tlacitko „Spustit test“ – kod ukonceni 0 = OK.

Task Scheduler vyzaduje cron job nebo „lazy cron“. Pro spolehlivy provoz nastavte server cron:

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

12. Logovani a diagnostika

Zalozka: Logovani

ParametrPopis
Logovani povolenoGlobalni vypinac logovani.
Uroven loguMinimalni uroven pro souborovy log. DB log zapisuje VZDY bez ohledu na toto nastaveni.
Logovat do databazeZapis do #__semakin_sst_web_log. Doporuceno: vzdy zapnuto (nutne pro deduplikaci).
Logovat do souboruZapis do logs/semakin_sst_web.php ve slozce Joomla logs.
Max. pocet opakovaniMaximalni pocet pokusu (vychozi 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;

Nahradte #__ vasim prefixem tabulek.

13. Odinstalace

  1. Prejdete do System > Manage > Extensions.
  2. Vyhledejte semakin_sst_web.
  3. Oznacte a odinstalujte.

Odinstalator smaze obe tabulky (#__semakin_sst_web_log a #__semakin_sst_web_queue).

14. Reseni problemu

Zadne eventy v databazi

  1. Overite, ze plugin je povoleny (Status = Enabled).
  2. Zkontrolujte, ze services/provider.php existuje v adresari pluginu na serveru.
  3. Overite, ze bridge cookie semakin_sst_cl je nastavena (DevTools > Application > Cookies).
  4. Pokud cookie chybi, zkontrolujte konfiguraci GDPR komponenty a ze bridge JS neni stripovan.

consent_level je vzdy 0

  • Bridge cookie semakin_sst_cl chybi nebo je blokovana.
  • Zkontrolujte, ze semakin_sst_cl je zarazena jako Nezbytna v consent komponente (ne Analyticka/Marketingova).
  • Na prvni strance po instalaci je consent vzdy L0 (bridge cookie potrebuje jeden page load pro inicializaci).

generate_lead se nespousti (URL match)

  1. Overite, ze URL konverze odpovida skutecne ceste dekovaci stranky (napr. /dekujeme).
  2. Cesta se porovnava s REQUEST_URI – zkontrolujte presnou shodu (case-sensitive).
  3. Overite, ze navstevnik jiz nespustil konverzi v aktualni session (deduplikace).

generate_lead se nespousti (AJAX)

  1. Zkontrolujte DevTools > Cookies na semakin_sst_web_ajax_cv=1 po odeslani formulare.
  2. Pokud cookie chybi, JS intercept nedetekoval uspesnou AJAX odpoved. Zkontrolujte konzoli prohlizece na chyby.
  3. Pokud je cookie pritomna, ale zadny event se neobjevi v DB logu, prejdete na dalsi stranku – event se spusti na dalsim page load.
  4. Pokud pouzivate CSS selektor formulare, overite, ze selektor odpovida vasemu formulari.

Google Ads konverze se nezobrazuji v dashboardu

  1. Overite, ze konverzni akce je typu „Import z kliknuti“ (ne Webove stranky).
  2. Zkontrolujte, ze GCLID/GBRAID je pritomen v payloadu v DB logu.
  3. Overite, ze OAuth consent screen je v rezimu Production (ne Testing).
  4. Zkontrolujte, ze Enhanced Conversions for Leads je zapnuto v nastaveni Google Ads.
  5. Pokud je aktivni i webova konverzni akce, deaktivujte ji nebo prepnete na sekundarni.

Sklik kod se nespousti

  • Overite, ze rc.js je nacteno jako synchronni <script> tag (zkontrolujte zdrojovy kod stranky).
  • Pokud web pouziva CSP, pridejte pozadovane domeny (viz CSP poznamka v zalozce Sklik).
  • Zkontrolujte konzoli prohlizece na chyby.

PII hashe chybi v konverzich

  • Overte, ze formular obsahuje pole input[type="email"] nebo input[type="tel"].
  • Zkontrolujte DevTools > Cookies na semakin_sst_form_pii po odeslani formulare.
  • Cookie ma 30minutovou expiraci – pokud se konverze spusti pozdeji, hashe uz mohou byt pryc.

Jak tracking funguje (prehled)

  1. Navstevnik nacte stranku webu.
  2. Plugin sesbira eventy page_view a session_start.
  3. Uroven souhlasu se zjisti z GDPR komponenty (pres bridge cookie).
  4. Eventy se anonymizuji dle urovne souhlasu.
  5. Server-side sendery odeslou eventy do GA4.
  6. JavaScript se injektuje pred </body>: Sklik retargeting, consent bridge, PII capture.
  7. Kdyz navstevnik odesle formular:
    • URL match: Dekovaci stranka spusti event generate_lead.
    • AJAX: JS detekuje AJAX odpoved, nastavi cookie a event se spusti na dalsim page load.
  8. Event generate_lead se odesle do GA4, Google Ads a Sklik.
  9. Neuspesna API volani se zaradi do fronty pro automaticky retry.

Cookies pouzivane pluginem

CookieUcelExpiraceNastavuje
semakin_sst_clConsent bridge (LS do PHP)24hJS bridge
semakin_sst_cidGA4 client_id fallback2 rokyPHP
semakin_sst_gclidGCLID z URL (Google Ads)90 dnuPHP
semakin_sst_gbraidGBRAID z URL (Safari/iOS)90 dnuPHP
semakin_sst_form_piiSHA-256 hashe emailu/telefonu30 minJS
semakin_sst_web_ajax_cvAJAX konverze detekovana30 minJS

semakin_sst_cl musi byt v kategorii Nezbytne cookies. Ostatni cookies patri do kategorie Analyticke nebo Marketingove.


Kontrolni seznam pro spusteni

  • Plugin nainstalovan a povolen
  • GDPR komponenta vybrana a nastavena
  • Bridge cookie semakin_sst_cl zarazena jako Nezbytna
  • Rezim konverze zvolen (URL match / AJAX / Oboji)
  • URL konverze nastavena (pokud se pouziva URL match)
  • CSS selektor formulare nastaven (pokud se pouziva AJAX, volitelne)
  • GA4: Measurement ID a API Secret nastaveny
  • Google Ads: Konverzni akce vytvorena jako „Import z kliknuti“
  • Google Ads: OAuth credentials v textarea polich, consent screen v rezimu Production
  • Google Ads: Enhanced Conversions for Leads zapnuty
  • Sklik: ID konverze a ID retargetingu nastaveny
  • CSP hlavicky aktualizovany (pokud je to relevantni)
  • DB logovani zapnuto
  • Testovaci rezim VYPNUT
  • Inline zpracovani fronty nastaveno (nebo Task Scheduler nakonfigurovan)
  • Testovaci odeslani formulare provedeno a overeno v DB logu a dashboardech platforem

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