2.7 KiB
Tracking systém
Jak to funguje
Tracking probíhá přes JavaScript soubor public/collect.js, který se vloží na sledovaný web. Každý web/eshop má přiřazený Site Key (TrackingSite.public_key), který se předává jako data-site-key atribut scriptu.
<script src="https://app.domena.cz/collect.js"
data-site-key="abc123"
data-api-base="https://app.domena.cz">
</script>
Visitor ID
- Každý anonymní návštěvník dostane náhodné
visitor_id(UUID), které se ukládá do cookieft_vida localStorage. - Po identifikaci (přihlášení, vyplnění emailu) se
visitor_idpropojí sContactpřes tabulkuvisitor_identities– vizIdentityLinker.
IngestEvent pipeline
Všechny eventy (browser i server-side) prochází přes App\Services\Ingest\IngestEvent::ingest():
- Parsuje a normalizuje data (visitor_id, contact_id, occurred_at...)
- Volitelně provede identify (pokud přišel
identity.email) - Pokud chybí
visitor_id, generuje náhradní (contact:{id}nebointegration:{source}) - Uloží
FunnelEventdo databáze (idempotentně přesexternal_event_id) - Vrátí uložený
FunnelEvent
Po ingestion volají controllery RulesEngine::evaluate() – viz Automations.
Události (event typy)
| Event | Kdy se posílá |
|---|---|
page_view |
Každé zobrazení stránky |
cart_upsert |
Změna obsahu košíku |
cart_completed |
Dokončení objednávky |
newsletter_subscribe |
Přihlášení k newsletteru |
gallery_config_submit |
Odeslání konfigurátoru |
identify |
Identifikace návštěvníka |
Identifikace návštěvníka
Třída IdentityLinker zajišťuje propojení visitor_id → Contact:
identify()– podle emailu (přihlášení, formulář)identifyByToken()– podleftclid(klik z emailové kampaně)- Mapping ukládá do
visitor_identities - Backfilluje
contact_idke starším eventům pro stejnévisitor_id
Automatická identifikace v collect.js
- Přes
ftclidv URL (z emailového odkazu) - Přes
gident/tagUTM parametr - Přes email v payloadu (při odeslání formuláře)
Bot detekce
BotDetector flaguje requesty od crawlerů a botů. FunnelEvent.bot = 1 pro botí eventy – tyto se do statistik nezapočítávají.
GTM / dataLayer integrace
collect.js naslouchá na window.dataLayer.push() a zachytává standardní ecommerce eventy (purchase, order_completed, transaction, ecommerce_purchase) – automaticky je převede na cart_completed.
Cross-domain tracking
Pokud zákazník přechází mezi doménami, collect.js automaticky doplňuje visitor_id jako URL parametr do odkazů podle konfigurace data-propagate-link-domains.