Leadhub Pixel

Integrační manuál měřicího kódu

Leadhub pixel je JavaScriptový měřicí kód (agent.js), který vložíte do svého webu nebo e-shopu. Naslouchá tomu, co návštěvník právě dělá - které stránky a produkty si prohlíží, co má v košíku, kdy se identifikuje či nakoupí - a v reálném čase posílá tato data do Leadhubu. Díky tomu Leadhub buduje kompletní a živou databázi zákazníků, na jejímž základě lze segmentovat kontakty a spouštět automatizace podle chování jednotlivých uživatelů.

Verze dokumentu: 2. 7. 20269 událostíZdroj: agent.js · lhinsights.com

Začínáme

Inicializační měřicí kód

Snippet vložte do hlavičky (<head>) KAŽDÉ stránky webu - jako první, ještě před jakýmkoli voláním lhi(...). Placeholder #tracking_id# nahraďte svým unikátním tracking_id z Leadhubu. Snippet vytvoří globální funkci lhi() a frontu událostí a asynchronně načte agent.js z //www.lhinsights.com/agent.js; události volané dříve, než se agent stáhne, se uloží do fronty a zpracují se po jeho načtení. Hned za snippetem se volá první událost lhi('pageview'). Máte-li více jazykových mutací, každá mutace potřebuje svůj vlastní tracking_id, aby se data posílala do správného účtu v Leadhubu.

<!-- Begin Leadhub Pixel Code -->
<script>
  (function(w,d,x,n,u,t,p,f,s,o){f='LHInsights';w[n]=w[f]=w[f]||function(n,d){
  (w[f].q=w[f].q||[]).push([n,d])};w[f].l=1*new Date();w[f].p=p;s=d.createElement(x);
  s.async=1;s.src=u+'?t='+t+(p?'&p='+p:'');o=d.getElementsByTagName(x)[0];o.parentNode.insertBefore(s,o)
  })(window,document,'script','lhi','//www.lhinsights.com/agent.js','#tracking_id#');

  lhi('pageview');
</script>
<!-- End Leadhub Pixel Code -->

Jak číst manuál

Legenda parametrů

  • povinné - parametr je nutný; bez něj se událost nezpracuje správně (Leadhub ji může zahodit).
  • volitelné - parametr není nutný; data jen doplňuje a upřesňuje.
!

ID produktů musí odpovídat feedu

Hodnota product_id, kterou posíláte v událostech viewContent, setCart a purchase, se musí přesně shodovat s ID produktu ve vašem produktovém feedu. Stejný produkt musí mít stejné product_id napříč všemi událostmi i ve feedu - jinak Leadhub nespáruje prohlížení, košík a nákup na tentýž produkt a nefunguje doporučování, obsah košíku ani nákupní historie.

Referenční přehled

Události měřicího kódu

Inicializace
klíčová událost

lhi('pageview', {…})

Zobrazení stránky (pageview)
Kdy volat

Volání lhi('pageview') se provede při každém načtení stránky. V jednostránkových aplikacích (SPA) se stránka znovu nenačítá, proto pageview volejte ručně při každé změně routy (přechodu na jinou URL), aby se návštěva nové stránky změřila.

Odešle událost o zobrazení stránky a spustí měření - čas návštěvníka na webu, zdroj návštěvy (referrer), pohyb po webu a použité zařízení.

Ukázka volání

lhi('pageview');

Parametry

Tato událost nemá žádné parametry.

Jak Leadhub vaše data zpracuje
Co čte
Čte časové razítko načtení stránky (povinné), délku pobytu na stránce, URL stránky, referrer (odkud návštěvník přišel) a titulek stránky.
Jak normalizuje
K události se automaticky doplní IP adresa (→ geolokace: země, region, město) a User-Agent (→ operační systém, prohlížeč, typ zařízení).
Technické poznámky (5)
  • Inicializační snippet definuje globální frontu (w[f].q). Události volané přes lhi(...) ještě před dokončeným načtením agent.js se zařadí do fronty a zpracují se hromadně po startu (Agent.processGlobals).
  • Stejný pageview nelze z téže URL odeslat dvakrát - connector si pamatuje lastPageviewLocation a druhé volání ze shodné adresy tiše zahodí (u callbacku vrací reject 'pageview can not be tracked twice from same location.').
  • Kromě systémových parametrů (t=pageview) se automaticky odesílá dt = document.title a dr = document.referrer. Do každého requestu collect přidá tid (tracking_id), cid (client id z cookie), dl (aktuální URL), eid (UUID eventu), hit (timestamp), pvts (čas startu pageview) a pvtd (ms uplynulé od startu pageview).
  • pageview zároveň sbírá statistiky (počet pageview v session, čas na stránce/webu) a historii navštívených URL do localStorage - tato data slouží mj. pro cílení popupů.
  • Client id (cid) se ukládá do cookie na nejvyšší doméně.
Procházení
klíčová událost

lhi('viewContent', {…})

Zobrazení produktu
Kdy volat

Právě jednou při zobrazení detailu jednoho produktu (stránka detailu produktu). Nevolejte na výpisu kategorie s více produkty - pole products má obsahovat jen ten jeden právě prohlížený produkt.

Oznamuje Leadhubu, že si návštěvník prohlíží detail konkrétního produktu. Slouží k rozpoznání zájmu o produkty (personalizace, doporučování) a zároveň měří engagement - jak dlouho návštěvník na detailu produktu setrval. Kromě identifikace produktu se tak sbírá i časová stopa prohlížení.

Ukázka volání

lhi('viewContent', {
  products: [{
    product_id: 'product_id_1'
  }]
});

Parametry

ParametrTypPovinnostPopis
products
[{ product_id: 'ABC-123' }]
array<object>povinnéPole produktů, které si návštěvník prohlíží - na detailu produktu typicky právě jeden objekt. Pokud je pole prázdné (nebo chybí), událost se okamžitě zahodí a nic se neodešle.
product_id
'ABC-123'
stringpovinnéKlíč uvnitř každého objektu v poli products - identifikátor produktu (kód/SKU) shodný s tím ve feedu.
type
'product'
stringvolitelnéTyp obsahu. Výchozí hodnota je 'product'. Hodnotu 'master_product' použijte jen tehdy, když jde o nadřazený produkt s variantami/options.
score
1
numbervolitelnéVolitelné dodatečné skóre zájmu (data['score'] || 0). Pokud je nenulové, agent ho ihned připočte ke skóre produktu a odešle samostatný viewContent s aktuálním engagement.time_s a engagement.score.
Jak Leadhub vaše data zpracuje
Co čte
Čte pole products a z každého produktu zejména product_id, dále volitelně name, quantity, value, currency a blok engagement (score, time_s).
Jak normalizuje
product_id se převede na text a spáruje s vaším produktovým katalogem/feedem. Cena se přepočítá na primární měnu vašeho účtu - uloží se jak původní hodnota a měna, tak přepočtená.
Když pole chybí / je nevalidní
Pokud v události není ani jeden produkt (nebo chybí product_id), Leadhub událost zahodí.
Technické poznámky (6)
  • Prázdné products => early return, nic se neodešle (byť onboarding snippet povinné pole nedovoluje být prázdné, reálně by pak událost neudělala nic).
  • Engagement (čas na produktu) se sbírá JEN pro jeden produkt. Když products.length > 1, agent odešle jeden viewContent, ale sběr engagementu přeskočí (pojistka proti volání se 100 produkty na kategorii - jinak by to udělalo 100 requestů).
  • Engagement běží jako Fibonacciho sekvence časovačů a periodicky posílá další viewContent s narůstajícím engagement.time_s a engagement.score; objekty engagement a visit_timestamp_ms doplňuje agent sám, zákazník je neposílá.
  • Sběr času se zastaví při změně window.location.pathname (kompatibilita se SPA - přechod na jiný produkt) a při neaktivitě uživatele se pauzuje do obnovení aktivity.
  • product_id je case-sensitive a musí odpovídat ID ve feedu, jinak Leadhub produkt nespáruje.
  • Na kategorii/výpisu produktů se místo viewContentu volá viewCategory - viewContent je výhradně pro detail jednoho produktu.
Procházení
klíčová událost

lhi('viewCategory', {…})

Zobrazení kategorie
Kdy volat

Při zobrazení stránky kategorie / výpisu produktů (ne detailu jednoho produktu). Volá se jednou za načtení stránky kategorie.

Oznamuje Leadhubu, že návštěvník otevřel výpis (stránku) kategorie produktů. Slouží k tomu, aby Leadhub rozpoznal, které kategorie zboží si uživatel prohlíží, a mohl podle toho personalizovat doporučení a segmentaci.

Ukázka volání

lhi('viewCategory', {
  category: 'Žena > Kabáty > Zimní kabáty'
});

Parametry

ParametrTypPovinnostPopis
category
'Žena > Kabáty > Zimní kabáty'
stringpovinnéPovinný string s kategorií. Doporučený formát je celá cesta stromem, jejíž úrovně se oddělují ' > ' (mezera-šipka-mezera), např. 'Žena > Kabáty > Zimní kabáty'. Poslat lze i prostý název kategorie bez hierarchie.
Jak Leadhub vaše data zpracuje
Co čte
Čte pole category - buď textovou cestu ve formátu „Žena > Kabáty > Zimní kabáty“, nebo pole úrovní ["Žena", "Kabáty", "Zimní kabáty"].
Jak normalizuje
Textová cesta se rozdělí podle „>“ na jednotlivé úrovně kategorie a ořeže se přebytečná mezera.
Když pole chybí / je nevalidní
Chybějící nebo nesprávně formátovaná kategorie (není text ani pole) → událost se zahodí.
Technické poznámky (3)
  • Na rozdíl od viewContent nemá vlastní send* metodu - jde přímo přes sendDataEvent, nesbírá se žádný engagement ani čas.
  • Při manuální integraci posílejte celou hierarchickou cestu od kořene oddělenou ' > ', ne jen list kategorie.
  • Na kategorii nevolejte viewContent pro každý vypsaný produkt - od toho je právě viewCategory.
Košík
klíčová událost

lhi('setCart', {…})

Nastavení stavu košíku
Kdy volat

Při každé změně košíku (přidání, odebrání, změna množství) a na stránce košíku. Posílejte vždy kompletní aktuální obsah košíku (nikoli jen změnu).

Uloží kompletní aktuální stav košíku (nikoli jednotlivou změnu). Slouží k ukládání obsahu košíku, doporučování produktů a posílání připomínek na opuštěný košík. Existují i události addToCart a removeFromCart se stejnou signaturou (pole products), které popisují jednotlivou změnu (delta) - preferovanou a spolehlivější implementací je však posílat při každé změně celý košík přes setCart. Pro vysypání košíku pošlete setCart s prázdným polem (products: []). Po dokončení objednávky Leadhub košík vyprázdní automaticky, takže po události purchase už prázdný setCart posílat nemusíte.

Ukázka volání

lhi('setCart', {
  products: [{
    product_id: 'product_id',
    quantity: 1,
    value: 200,
    currency: 'CZK'
  }]
});

Parametry

ParametrTypPovinnostPopis
products
[{ product_id: 'ABC123', quantity: 1 }]
array<object>povinnéPole objektů představující KOMPLETNÍ aktuální obsah košíku. Může být i prázdné pole `[]` (znamená prázdný košík). Vždy přepisuje celý stav, ne delta. Označeno jako povinné (hl-important) v onboarding snippetu.
product_id
'ABC123'
stringpovinnéPovinný klíč každé položky v poli `products` (hl-important). Stringová hodnota, která se MUSÍ shodovat s id produktu ve vašem produktovém feedu (jinak se produkt nespáruje pro doporučování).
quantity
2
numbervolitelnéVolitelné množství dané položky (integer nebo string).
value
200
numbervolitelnéVolitelná hodnota položky - cena za kus (integer, float nebo string). Dává smysl jen ve dvojici s currency.
currency
'CZK'
stringvolitelnéVolitelná měna hodnoty (string, ISO kód). Dává smysl jen společně s `value`.
Jak Leadhub vaše data zpracuje
Co čte
Čte pole products (moderní formát), případně starší items / content_ids. U každé položky product_id, volitelně quantity, value, currency.
Jak normalizuje
Stejně jako u viewContent - product_id se páruje s katalogem/feedem a cena se přepočítá na primární měnu účtu.
Když pole chybí / je nevalidní
Prázdný košík posílejte jako products: [] (prázdné pole je v pořádku). Nevalidní produkt bez product_id se ignoruje.
Technické poznámky (6)
  • setCart nastavuje CELÝ košík - každé volání přepíše předchozí stav. Pro jednotlivé změny existují AddToCart/RemoveFromCart (delta), ale setCart je páteřní událost, na které stojí doporučování a připomínky opuštěného košíku.
  • `products` smí být prázdné pole `[]` - to je validní signál prázdného košíku (ekvivalent EmptyCart). Onboarding to explicitně povoluje.
  • `products` a `product_id` jsou jediné povinné klíče (hl-important); `quantity`, `value`, `currency` jsou volitelné (hl-optional). Podle onboardingu smí být hodnoty i string (quantity: integer/string, value: integer/float/string).
  • Data jdou do CRM 1:1 (sendDataEvent = JSON.stringify celého objektu), takže se nic nehashuje ani nepřepisuje - pošlete přesně tvar, který chcete uložit.
  • setCart posílejte jen při skutečné změně košíku - nevolejte ho opakovaně se stejnými daty (např. při každém překreslení stránky).
  • Na velikosti písmen v názvu události nezáleží (setCart i SetCart fungují stejně); v manuálu používáme jednotný tvar setCart.
Nákup
klíčová událostalias: checkout

lhi('purchase', {…})

Událost nákupu (dokončení objednávky)
Kdy volat

Přesně jednou při dokončení objednávky - na děkovací (thank-you) stránce po odeslání objednávky.

Zaznamenává dokončenou objednávku. Slouží ke shromažďování nákupní historie zákazníka (zakoupené produkty, datum poslední objednávky, útrata, počet objednávek), k vyhodnocení kampaní vedoucích k nákupu a k analytice retence (noví vs. vracející se zákazníci). Jedna z nejdůležitějších událostí pixelu.

Ukázka volání

lhi('purchase', {
  email: 'john@example.com',
  value: 333,
  currency: 'CZK',
  products: [{
    product_id: 'product_id_1',
    quantity: 1,
    value: 222,
    currency: 'CZK'
  }],
  order_id: 'order_id_1',
  user_id: 'user_id_1',
  subscribe: ['newsletters'],
  first_name: 'John',
  last_name: 'Example',
  phone: '+420221000000',
  address: {
    street: 'Prvního pluku 347/12A',
    city: 'Praha',
    zip: '18600',
    country_code: 'CZ'
  }
});

Parametry

ParametrTypPovinnostPopis
email
'john@example.com'
stringpovinnéE-mailová adresa zákazníka - slouží jako unikátní identifikátor pro spárování objednávky s profilem v CRM. V onboarding snippetu je označen jako povinný (hl-important).
value
333
numberpovinnéCelková hodnota objednávky (hl-important). Přijímá integer, float i string.
currency
'CZK'
stringpovinnéKód měny objednávky (hl-important).
products
[{ product_id: 'product_id_1', quantity: 1, value: 222, currency: 'CZK' }]
array<object>povinnéPole zakoupených produktů (hl-important). Každý objekt musí mít product_id (string) shodující se s id ve vašem produktovém feedu; volitelně quantity (int/string), value (int/float/string) a currency (string) na úrovni produktu.
order_id
'order_id_1'
stringpovinnéVaše ID objednávky. Formálně se událost zpracuje i bez něj (Leadhub vygeneruje vlastní náhradní identifikátor), ale je velmi doporučené ho posílat kvůli deduplikaci objednávek - aby se stejná objednávka nezapočítala dvakrát, například při souběhu pixelu s importem objednávek. Přijímá integer i string.
user_id
'user_id_1'
stringvolitelnéVáš unikátní identifikátor uživatele (string). Jde o silný identifikátor - pokud si nejste jistí jeho jednoznačností, raději ho do objektu vůbec nevkládejte. Stejné user_id poslané u více různých osob způsobí, že Leadhub tyto profily v CRM spojí do jednoho.
subscribe
['newsletters']
string[]volitelnéPole kódů zájmových listů, do kterých má být zákazník při objednávce přihlášen (hl-optional, např. zaškrtnutý souhlas s newsletterem). Kódy jsou CASE-SENSITIVE a musí přesně odpovídat poli code v accounts.interestLists.
first_name
'John'
stringvolitelnéKřestní jméno zákazníka (hl-optional).
last_name
'Example'
stringvolitelnéPříjmení zákazníka (hl-optional).
phone
'+420221000000'
stringvolitelnéTelefonní číslo zákazníka (hl-optional).
address
{ street: 'Prvního pluku 347/12A', city: 'Praha', zip: '18600', country_code: 'CZ' }
objectvolitelnéObjekt s doručovací/fakturační adresou (hl-optional). Podklíče (vše string): street (ulice), city (město), zip (PSČ), country_code (kód země).
Jak Leadhub vaše data zpracuje
Co čte
Čte identifikaci zákazníka (e-mail, telefon, jméno, adresa), pole products, celkovou value + currency, order_id a volitelně subscribe.
Jak normalizuje
E-mail se převede na malá písmena a ověří (musí obsahovat @ a tečku, max. 200 znaků). Telefon se normalizuje do mezinárodního tvaru (jen číslice a +, „00“ → „+“, doplní se předvolba účtu). Hodnota objednávky se přepočítá na primární měnu účtu.
Když pole chybí / je nevalidní
Bez identifikace (e-mail / telefon) nebo bez value a currency se objednávka zahodí. Nevalidní e-mail → zahození. Chybějící order_id → varování (doporučeno doplnit kvůli deduplikaci).
Technické poznámky (3)
  • Deduplikace objednávek: pokud neuvedete order_id, Leadhub si sám vytvoří náhradní identifikátor z otisku objednávky ({value, currency, products}) a po dobu 10 minut jej drží. Opětovné načtení děkovací stránky do 10 minut tak nevytvoří duplicitní objednávku. Přesto silně doporučujeme posílat vlastní order_id.
  • Pokud produkt nemá product_id, ale má id, agent hodnotu id automaticky zkopíruje do product_id.
  • E-mail se do Leadhub CRM posílá v otevřené podobě jako identifikátor (v JSON parametru data). Hashování (sha256) e-mailu probíhá jen v reklamních konektorech (Facebook, Google), ne v Leadhub konektoru.
Identita a odběry
klíčová událost

lhi('identify', {…})

Identifikace zákazníka (identify)
Kdy volat

Vhodné volat v okamžiku, kdy získáte e-mail (a případně jméno) návštěvníka - typicky při registraci, přihlášení do klientské sekce, nebo v kroku objednávky, kde zákazník zadává e-mail a jméno.

Přiřadí aktuální prohlížeč (anonymní návštěvu) ke konkrétnímu profilu v databázi zákazníků Leadhubu na základě e-mailové adresy. Díky tomu se dosavadní i budoucí chování návštěvníka spojí s jeho kontaktem. V rámci události lze kontakt (pokud udělil souhlas) rovnou přihlásit do zájmového listu.

Ukázka volání

lhi('identify', {
  email: 'john@example.com',
  subscribe: ['newsletters'],
  user_id: 123,
  first_name: 'John',
  last_name: 'Example',
  phone: '+420221000000'
});

Parametry

ParametrTypPovinnostPopis
email
'john@example.com'
stringpovinnéE-mailová adresa uživatele - slouží jako unikátní identifikátor kontaktu, na který se navážou data prohlížeče. V onboardingu zvýrazněno jako povinné (hl-important). Bez e-mailu událost nemá smysl (nemá se k čemu přiřadit).
subscribe
['newsletters']
string[]volitelnéPole KÓDŮ zájmových listů, do kterých se má kontakt přihlásit. Kódy jsou case-sensitive a musí přesně odpovídat poli code v accounts.interestLists. Onboarding u pole píše 'Povinné pole', ale zvýrazňuje ho jako volitelné (hl-optional) a kód žádnou validaci nedělá - technicky nepovinné.
user_id
123
stringvolitelnéVáš unikátní identifikátor uživatele (string). Jde o silný identifikátor - pokud si nejste jistí jeho jednoznačností, raději ho do objektu vůbec nevkládejte. Stejné user_id poslané u více různých osob způsobí, že Leadhub tyto profily v CRM spojí do jednoho.
first_name
'John'
stringvolitelnéKřestní jméno uživatele.
last_name
'Example'
stringvolitelnéPříjmení uživatele.
phone
'+420221000000'
stringvolitelnéTelefonní číslo uživatele (string, ideálně v mezinárodním formátu).
Jak Leadhub vaše data zpracuje
Co čte
Čte e-mail, telefon, jméno a příjmení, váš identifikátor uživatele, případně adresu a subscribe.
Jak normalizuje
E-mail a telefon se normalizují stejně jako u objednávky (e-mail → malá písmena a validace, telefon → mezinárodní tvar). Podle e-mailu Leadhub spáruje anonymní prohlížeč s existujícím profilem v CRM.
Když pole chybí / je nevalidní
Nevalidní e-mail → zahození. Musí být uvedeno alespoň jedno identifikační pole.
Technické poznámky (2)
  • subscribe je pole kódů zájmových listů a je case-sensitive: nesoulad s interestLists.code kontakt tiše nepřihlásí (žádná chyba, žádný consentRequest). Viz opakovaný bug s velikostí písmen u code.
  • identify je voláno i automaticky interně z connectoru: z URL parametru utm_lhm (posílá se jako identify {tmid}) a utm_lhms (identify {sms_message_id}). Oboje je deduplikováno přes localStorage (seznam 'seen'), aby se stejné id neposílalo opakovaně.
Identita a odběry
klíčová událost

lhi('subscribe', {…})

Přihlášení k odběru
Kdy volat

Ve chvíli, kdy zákazník aktivně vyjádří souhlas s odběrem - odeslání přihlašovacího formuláře newsletteru nebo zaškrtnutí souhlasu při registraci či objednávce.

Přihlásí zákazníka (podle e-mailu) do jednoho nebo více zájmových listů. Slouží ke správě souhlasů a odběrů - na jeho základě se kontakt objeví jako odebírající v daném listu a mohou se mu posílat kampaně.

Ukázka volání

lhi('subscribe', {
  email: 'john@example.com',
  interests: ['newsletters']
});

Parametry

ParametrTypPovinnostPopis
email
'john@example.com'
stringpovinnéE-mailová adresa přihlašovaného kontaktu (klíč email).
interests
['newsletters']
string[]povinnéPole kódů zájmových listů, do kterých se má kontakt přihlásit. Kódy jsou CASE-SENSITIVE a musí přesně odpovídat poli code v accounts.interestLists (nesoulad znamená, že se přihlášení tiše nepropíše).
Jak Leadhub vaše data zpracuje
Co čte
Čte kontakt (e-mail nebo telefon) a pole interests s kódy zájmových listů.
Jak normalizuje
E-mail/telefon se normalizují. Kódy listů se párují 1:1 podle pole code v Leadhubu (rozlišují velikost písmen).
Když pole chybí / je nevalidní
Chybí-li kontakt nebo je pole interests prázdné/chybějící, událost se zahodí. Nesouhlasí-li kód listu přesně, přihlášení se tiše nepropíše.
Technické poznámky (1)
  • Samostatná událost subscribe používá klíč interests (pole kódů), zatímco u událostí identify a purchase se stejný záměr vyjadřuje polem subscribe. Obojí jsou kódy interest listů a jsou case-sensitive.
Identita a odběry
klíčová událost

lhi('unsubscribe', {…})

Odhlášení z odběru (konkrétní listy)
Kdy volat

Když zákazník odhlásí odběr konkrétního listu - např. odškrtnutí newsletteru ve svém profilu.

Odhlásí zákazníka (podle e-mailu) z konkrétních zájmových listů uvedených v interests. Ostatní odběry zůstávají zachovány. Slouží ke správě souhlasů na úrovni jednotlivých listů.

Ukázka volání

lhi('unsubscribe', {
  email: 'john@example.com',
  interests: ['newsletters']
});

Parametry

ParametrTypPovinnostPopis
email
'john@example.com'
stringpovinnéE-mailová adresa odhlašovaného kontaktu (klíč email).
interests
['newsletters']
string[]povinnéPole kódů zájmových listů, ze kterých se má kontakt odhlásit. Kódy jsou CASE-SENSITIVE a musí odpovídat poli code v accounts.interestLists.
Jak Leadhub vaše data zpracuje
Co čte
Čte kontakt (e-mail nebo telefon) a pole interests s kódy listů, ze kterých se má kontakt odhlásit.
Jak normalizuje
Stejná normalizace kontaktu i párování kódů listů jako u přihlášení. Odhlásí pouze uvedené listy; ostatní odběry zůstanou.
Když pole chybí / je nevalidní
Chybějící kontakt nebo prázdné interests → zahození.
Technické poznámky (1)
  • Odhlašuje jen z listů uvedených v interests - pro odhlášení ze všech odběrů použijte unsubscribeFromAll.
Segmentace
klíčová událost

lhi('addTag', {…})

Přidání štítku
Kdy volat

Kdykoli chcete kontakt označit vlastností pro segmentaci (např. souhlas, jazyk, hodnocení recenze, zařazení do skupiny). Klíč type určuje druh štítku, další klíče nesou jeho hodnotu.

Přiřadí kontaktu/návštěvníkovi vlastní štítek (tag) pro segmentaci - např. souhlas, jazyk, hodnocení recenze nebo zařazení do skupiny. Preferovaný (novější) zápis je dvojice name + data: name určuje druh štítku a data nesou jeho hodnoty. Podporován je i starší zápis přes klíč type (viz poznámky).

Ukázka volání

lhi('addTag', {
  name: 'customer_type',
  data: {
    level: 'vip',
    score: 95,
    is_active: true,
    signed_up: { datatype: 'date', value: '2026-07-01' }
  }
});

Parametry

ParametrTypPovinnostPopis
namestringpovinnéNázev štítku - druh vlastnosti, kterou kontaktu přiřazujete (např. 'customer_type', 'consent', 'language').
dataobjectvolitelnéHodnoty štítku jako dvojice klíč-hodnota. Text (string), číslo (number) a pravdivostní hodnotu (boolean) lze poslat přímo. Datum/čas ale NELZE poslat jako prostý string (uložil by se jako text) - pošlete ho jako typovaný objekt { datatype: 'date', value: '2026-07-01' } nebo { datatype: 'datetime', value: '2026-07-01T12:00:00' }; hodnota se očekává v ISO 8601 a interpretuje se jako UTC. Typovaný zápis { datatype, value } lze použít i pro ostatní typy ('str', 'int', 'float', 'bool').
Jak Leadhub vaše data zpracuje
Co čte
Čte typ štítku (type / name) a volitelně další klíče s hodnotou štítku (data).
Jak normalizuje
Hodnoty štítku musí být text, číslo, pravdivostní hodnota nebo datum (ISO). U typovaných hodnot se provede převod podle uvedeného datového typu.
Když pole chybí / je nevalidní
Chybějící typ štítku nebo nepodporovaný datový typ hodnoty → událost se zahodí.
Technické poznámky (1)
  • Datum/čas se posílá výhradně jako typovaný objekt { datatype: 'date'|'datetime', value: '<ISO 8601>' } - jinak se hodnota uloží jako text. Datum se interpretuje jako UTC.

Dobré vědět

Obecné poznámky k integraci

  • Pořadí: na stránce musí být jako první inicializační snippet - ten vytvoří globální funkci lhi() a frontu událostí. pageview je pak první odeslaná událost a měří čas na stránce (pvts/pvtd se počítají od jeho volání). Ostatní události volejte kdykoli po snippetu; na jejich vzájemném pořadí nezáleží, protože se do načtení agenta ukládají do fronty a zpracují se hromadně.
  • Názvy událostí nezáleží na velikosti písmen - Leadhub si název interně převede na malá písmena, takže lhi('pageview') i lhi('Pageview') fungují stejně. V manuálu se používá jednotný tvar (viewContent, setCart, viewCategory …).
  • SPA / pathname: agent sleduje window.location.pathname. U ViewContentu běží engagement tracking (měření zájmu o produkt), který se zastaví, jakmile se pathname změní (přechod na jiný produkt/stránku). V single-page aplikacích proto při navigaci volejte odpovídající události znovu (nový pageview / viewContent), samotný pixel je needetekuje automaticky.
  • E-mail: v události identify a purchase se předává jako string v klíči email a slouží jako unikátní identifikátor kontaktu pro spárování prohlížeče s profilem v databázi Leadhubu. Ve weblayers se e-mail před odesláním ořízne (trim). Přenos probíhá přes HTTPS na www.lhinsights.com.
  • subscribe je pole kódů zájmových listů (interest list codes), NE názvů - kódy jsou case-sensitive a musí přesně odpovídat kódu listu v Leadhubu, jinak se přihlášení tiše zahodí.
  • product_id v produktech: kanonický klíč je product_id (snake_case). Pokud produkt nemá product_id, ale má id, Leadhub použije jako záložní hodnotu id. Hodnota product_id se musí shodovat s id produktu ve vašem produktovém feedu.
  • Konzistence product_id napříč událostmi: stejný produkt musí mít stejné product_id ve viewContent, setCart i purchase (a shodné s feedem), jinak Leadhub nespáruje prohlížení, košík a nákup na tentýž produkt.
  • value/currency: u purchase jsou value (nezáporná hodnota objednávky) a currency (kód měny) povinné páry na úrovni celé objednávky. U jednotlivého produktu lze volitelně uvést vlastní value a currency (cena za položku) plus quantity (množství).
  • order_id: silně doporučený. Pokud u purchase chybí, Leadhub si vygeneruje náhradní identifikátor a 10 minut jej drží podle otisku objednávky ({value, currency, products}) - zabraňuje to duplicitnímu započtení téže objednávky při reloadu děkovací stránky.