Semakin
Zákazník

Uživatelská příručka

Sema Track for VirtueMart

Joomla System Plugin pro kompletní server-side měření pro e-shopy na Joomla 4/5 + VirtueMart 4.x. Nahrazuje client-side JS snippety a odesílá data přímo ze serveru do měřicích platforem přes jejich API.

ParametrHodnota
Identifikátorplg_system_semakin_sst
CMSJoomla 4.x / 5.x
E-commerceVirtueMart 4.x+
PHP8.1+
Aktuální verze1.0.4

Podporované platformy: GA4, Google Ads, Sklik.cz, Zboží.cz, Heureka Ověřeno zákazníky, Heureka OCM, Google Customer Reviews.


1. Požadavky

  • Joomla 4.x nebo 5.x
  • VirtueMart 4.x nebo novější
  • 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)

2. Instalace

Získání balíčku

Stáhněte soubor plg_system_semakin_sst-1.0.4.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-1.0.4.zip.
  4. Po instalaci plugin vytvoří dvě databázové tabulky: #__semakin_sst_log a #__semakin_sst_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 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.
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, GCR widget
L2MarketingKonverze GA4/Ads/Sklik/Zboží/Heureka; hashovaný e-mail/telefon

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 purchase eventy je timing vždy OK – zákazník načte minimálně 2 stránky před checkoutem.

6. 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
view_itemURL s view=productdetailsL0
view_item_listURL s view=categoryL0
add_to_cartVM hook plgVmOnAddToCartL0
begin_checkoutURL s view=cartL0
purchaseVM hook + DB polling (OPC)L0

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

7. Google Ads

Záložka: Google Ads

ParametrPopis
Google Ads povolenýZapne upload konverzí přes Conversion API v23.
Conversion IDFormát AW-XXXXXXXXX (pro referenci).
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í.

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 e-shop používal webovou konverzní akci (z gtag.js), deaktivujte ji nebo přepněte na sekundární.
  • GCLID/GBRAID/WBRAID: Plugin zachytává všechny tři typy click ID 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.
  • Timeout: Google Ads API používá 5s timeout (ne 500ms jako GA4).

8. 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 nákupu (L0+)
  • Parametr consent: Dynamicky – consent:0 bez marketingového souhlasu, consent:1 se souhlasem
  • EID a Zboží.cz parametry: Pouze při L2

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.

9. Zboží.cz

Záložka: Zboží.cz

ParametrPopis
Zboží.cz povolenýZapne backend konverzní API.
Shop IDAlfanumerický identifikátor obchodu z administrace Zboží.cz.
PRIVATE_KEYTajný klíč pro backend API. Najdete v Zboží.cz admin > Konverze > API klíč.

Jak to funguje

Zboží.cz používá dvousložkové měření:

  1. Backend (ZboziSender): HTTP POST na https://www.zbozi.cz/action/{SHOP_ID}/conversion/backend s PRIVATE_KEY v JSON těle.
  2. Frontend (přes SklikSender): rc.conversionHit() s parametry zboziId a zboziType. Sdílí stejný rc.js jako Sklik.

Obě složky jsou nutné. Bez frontend JS Zboží.cz hlásí chybu ORPHANED_BACKEND.

Odesílají se pouze purchase eventy, pouze při L2.

10. Heureka – Ověřeno zákazníky

Záložka: Heureka (první sekce)

ParametrPopis
Ověřeno zákazníky povolenoZapne registraci objednávek pro dotazník spokojenosti.
Tajný klíčAPI klíč pro Ověřeno zákazníky (v2 API).
Varianta HeurekyCZ (heureka.cz) nebo SK (heureka.sk). Sdílená s OCM.
Odesílat e-mail zákazníkaNutné pro zaslání dotazníku. Odesílá se v plaintextu (vyžaduje L2).
Odesílat produktyOdesílá ID produktu pro produkt-specifické otázky v dotazníku.

Opt-out checkbox

ParametrPopis
Zobrazit opt-out checkboxAutomaticky vloží checkbox do VirtueMart checkout formuláře.
Text checkboxuKonfigurovatelný text. Výchozí dle doporučení Heureky.
Kód pro ruční vloženíHTML/JS kód pro ruční vložení do šablony, pokud automatické vložení nefunguje.

Checkbox používá opt-out model: nezaškrtnutý = zákazník souhlasí; zaškrtnutý = zákazník se odhlašuje. Cookie semakin_sst_heureka_optout=1 (expirace 2 hodiny).

GDPR: E-mail zákazníka se odesílá v plaintextu do Heureky. Do logu pluginu se nikdy neukládá.

11. Heureka – OCM (Měření konverzí)

Záložka: Heureka (sekce OCM)

ParametrPopis
Heureka OCM povolenoZapne měření konverzí přes Heureka OCM SDK.
API klíčOCM API klíč (odlišný od klíče Ověřeno zákazníky!). Najdete v Heureka admin > Statistiky > Měření konverzí.

Jak to funguje

  • Stránky produktu: SDK s page=product_detail nastaví atribuční cookie (hg_ocm_id, 30 dnů).
  • Děkovací stránka: SDK s page=thank_you odešle data objednávky (ID produktu, ceny, množství, celkem, měna).
  • Pouze při L2 souhlasu. Podpora cross-request session pro platební brány.

12. Google Customer Reviews

Záložka: Google Customer Reviews

ParametrPopis
GCR povolenZapne Survey Opt-In Widget.
Merchant Center IDNumerické ID z Google Merchant Center.
Počet dnů do doručeníOdhadovaná doba doručení (výchozí 5 dnů).
Země doručeníISO 3166-1 alpha-2 kód (nebo automaticky dle jazyka).
Jazyk průzkumuBCP 47 kód jazyka (např. cs, sk, en).
Poloha opt-in dialoguStřed / rohy obrazovky.

GCR vyžaduje pouze L1 (Analytics) souhlas – nejde o reklamu. E-mail zákazníka se vloží do widgetu jen při L2.

13. Retry fronta a Task Scheduler

Když API volání selže, event se uloží do tabulky #__semakin_sst_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: Zpracovat retry frontu“ – spouštět každých 15 minut.
  3. Vytvořte „Semakin SST: Ú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

14. Logování a diagnostika

Záložka: Logování a fronta

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_log. Doporučeno: vždy zapnuto (nutné pro deduplikaci).
Logovat do souboruZápis do logs/semakin_sst.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_log
ORDER BY id DESC
LIMIT 20;

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

  • consent_level by měl být 2 pro purchase eventy (pokud má zákazník marketingový souhlas).
  • status by měl být sent pro úspěšné odeslání.

15. Odinstalace

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

Odinstalátor smaže obě tabulky (#__semakin_sst_log a #__semakin_sst_queue).

16. Ř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).

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.

Zboží.cz chyba ORPHANED_BACKEND

  • Obě složky (backend API i frontend JS rc.conversionHit s zboziId) jsou nutné.
  • Ověřte, že Sklik je povolen (Sklik rc.js obsluhuje frontend jak pro Sklik, tak pro Zboží.cz).

Heureka HTTP 400 „Missing expected key e-mail“

  • Ověřte, že „Odesílat e-mail zákazníka“ je zapnuto v nastavení Heureky.
  • E-mail vyžaduje L2 souhlas.

Purchase eventy se nedetekují (OPC)

  • One Page Checkout pluginy obcházejí VirtueMart hooky. Plugin používá DB polling (detectUnloggedPurchases) jako fallback.
  • Ověřte, že DB logování je zapnuto (nutné pro deduplikaci).
  • Zkontrolujte, že requesty nepřicházejí od botů (prázdné cookies = přeskočeno).

Jak tracking funguje (přehled)

  1. Návštěvník načte stránku e-shopu.
  2. Plugin detekuje typ stránky (produkt, kategorie, košík atd.) z URL parametru.
  3. Eventy se sesbírají (page_view, view_item, begin_checkout atd.).
  4. Úroveň souhlasu se zjistí z GDPR komponenty (přes bridge cookie).
  5. Eventy se anonymizují dle úrovně souhlasu.
  6. Server-side sendery odešlou eventy do povolených platforem (GA4, Google Ads, Zboží, Heureka).
  7. JavaScript sendery injektují kód před </body> (Sklik, Heureka OCM, GCR).
  8. Pro nákupy: VM hook plgVmConfirmedOrder nebo DB polling (OPC) detekuje objednávku.
  9. Neúspěšná API volání se zařadí do fronty pro automatický retry.

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á
  • 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é
  • Zboží.cz: Shop ID a PRIVATE_KEY nastavené
  • Heureka: API klíč nastaven, opt-out checkbox povolen
  • Heureka OCM: OCM API klíč nastaven (odlišný od klíče Ověřeno)
  • GCR: Merchant Center ID nastaveno
  • 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í nákup proveden a ověřen v DB logu a dashboardech platforem

Jak to vypadá v administraci

Nastavení měření pro VirtueMart
Sedm platforem, jedno nastavení — GA4, Google Ads, Sklik, Zboží.cz, Heureka i Google Customer Reviews.

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