Základní skript
Nejuniverzálnější způsob nasazení – kód vložíte přímo do HTML šablony webu. Vhodné pro vývojáře s přímým přístupem ke zdrojovému kódu.
Před začátkem
Budete potřebovat:
- SEM ID – viz Kde najdu SEM ID?
- Přístup k HTML šablonám vašeho webu (sekce
<head>)
Pro jaké weby se přímý skript hodí?
Přímá implementace je vhodná zejména pro jednoduché weby – prezentace, jednostránkové weby, weby služeb bez e-commerce. Pro e-shopy s GTM doporučujeme GTM šablonu, která lépe pokryje e-commerce události.
Krok 1 – Zkopírujte skript z Nastavení účtu
V Sklik → Nastavení účtu klikněte u příslušného SEM ID na tlačítko Zobrazit SEM kód. Otevře se dialog s kompletním skriptem – zkopírujte ho a vložte do sekce <head> na každé stránce vašeho webu.
Skript vypadá takto:
<!-- Vložte do <head> na každé stránce webu -->
<script src="https://l.seznam.cz/sul.js?id=VASE_SEM_ID"></script>
<script>
if (typeof window.SEM === "function") {
SEM('track', 'PageView');
}
</script>
Skript zajistí:
- Automatické odeslání
PageViewpři každém načtení stránky - Zápis cookies
sidaudidpro identifikaci uživatele - Automatické načítání souhlasu z IAB TCF API (pokud váš web TCF používá)
Krok 2 – Nastavte consent (pokud nepoužíváte IAB TCF)
Pokud váš web používá standardizované IAB Transparency and Consent Framework (TCF), consent se předává automaticky – tento krok přeskočte.
Pokud TCF nepoužíváte, předejte informaci o souhlasu ručně metodou updateConsent – vždy před voláním PageView:
const consentData = {
consent_mode: {
ad_storage: 'granted', // ukládání cookie
ad_user_data: 'granted', // zpracování identifikátorů
ad_personalization: 'granted', // personalizace reklamy
functionality_storage: 'denied',
analytics_storage: 'denied'
}
};
SEM('updateConsent', consentData);
Souhlas musí předcházet PageView
Cookie sid se vygeneruje až po přijetí souhlasu s ad_storage: 'granted'. Pokud předáte consent až po PageView, sid nemusí být k dispozici – to se projeví zejména u S2S měření, kde cookies číst explicitně musíte.
Krok 3 – Odešlete uživatelská data (volitelné, doporučené)
Po přihlášení uživatele nebo po dokončení objednávky doporučujeme odeslat uživatelská data – e-mail zákazníka – ideálně před voláním PageView. Skript ho automaticky zahashuje (SHA-256) a slouží k přesnému párování konverzí i bez cookies.
const userData = {
em: "jan.novak@email.cz", // klíčový identifikátor – hashuje se automaticky
ph: "+420606666666",
fn: "Jan",
ln: "Novák"
};
SEM('updateUserData', userData);
Hashování probíhá automaticky
Hodnoty můžete předávat v čitelné podobě. SEM skript je normalizuje a zahashuje algoritmem SHA-256 přímo v prohlížeči před odesláním. Výjimka: parametr review_email v události Purchase – ten se nesmí hashovat, aby mohlo dojít k odeslání dotazníku spokojenosti k uskutečněnému nákupu.
Krok 4 – Přidejte události na relevantní stránky
Na stránkách produktů, košíku, pokladny a děkovné stránce přidejte odpovídající události. Kompletní seznam viz Reference událostí.
Příklad komplexního kódu pro stránku produktu:
<!-- V <head> -->
<script src="https://l.seznam.cz/sul.js?id=VASE_SEM_ID"></script>
<!-- Za tělem stránky, po načtení dat produktu -->
<script>
if (typeof window.SEM === "function") {
// 1. Consent – pokud nepoužíváte IAB TCF, předejte souhlas ručně
SEM('updateConsent', {
consent_mode: {
ad_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted',
analytics_storage: 'granted',
functionality_storage: 'granted'
}
});
// 2. Uživatelská data – volitelné, doporučené u přihlášených uživatelů
SEM('updateUserData', {
em: 'jan.novak@email.cz' // hashuje se automaticky
});
// 3. PageView
SEM('track', 'PageView');
// 4. ViewContent – detail produktu (pro DRTG a retargeting)
SEM('track', 'ViewContent', {
content_type: 'product',
currency: 'CZK', // podporováno pouze CZK
value: 27677, // bez DPH
contents: [{
id: 'ABC12345',
content_name: 'iPhone 15 Pro Max',
content_category: 'Elektronika | Mobilní telefony | Apple',
unit_price: 33490 // s DPH
}]
});
}
</script>
Content Security Policy (CSP)
Pokud váš web používá CSP hlavičky, přidejte tyto povolené zdroje:
Content-Security-Policy:
script-src l.seznam.cz;
connect-src https://*.seznam.cz;
SPA aplikace (React, Vue, Next.js…)
U jednostránkových aplikací se stránka nenačítá znovu při navigaci. PageView proto volejte manuálně při každé změně routy:
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
function PageViewTracker() {
const location = useLocation();
useEffect(() => {
if (typeof window.SEM === 'function') {
SEM('track', 'PageView');
}
}, [location.pathname]);
return null;
}
Více SEM ID na jedné stránce
Pokud provozujete web, kde potřebujete měřit pro více různých účtů Skliku zároveň (např. marketplace s více prodejci, nebo web kombinující vlastní měření a měření pro klienta), nastavte sem_id přímo v každém volání track. SEM ID zadané v track má přednost před globálně nastaveným ID v konfiguraci.
// Měření pro první účet
SEM('track', 'PageView', {
sem_id: 'VASE_SEM_ID_1'
});
// Měření pro druhý účet (stejná událost, jiné SEM ID)
SEM('track', 'PageView', {
sem_id: 'VASE_SEM_ID_2'
});
sem_id v track vs. v konfiguraci
Globální sem_id nastavený přes SEM('config', ...) se použije pro všechna volání, kde sem_id není explicitně uvedeno. Jakmile sem_id zadáte přímo v track, přepíše globální hodnotu pouze pro toto jedno volání.