Files
Funnel_Wiki/Tracking.md
2026-04-22 13:01:47 +02:00

2.7 KiB
Raw Permalink Blame History

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 cookie ft_vid a localStorage.
  • Po identifikaci (přihlášení, vyplnění emailu) se visitor_id propojí s Contact přes tabulku visitor_identities viz IdentityLinker.

IngestEvent pipeline

Všechny eventy (browser i server-side) prochází přes App\Services\Ingest\IngestEvent::ingest():

  1. Parsuje a normalizuje data (visitor_id, contact_id, occurred_at...)
  2. Volitelně provede identify (pokud přišel identity.email)
  3. Pokud chybí visitor_id, generuje náhradní (contact:{id} nebo integration:{source})
  4. Uloží FunnelEvent do databáze (idempotentně přes external_event_id)
  5. 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() podle ftclid (klik z emailové kampaně)
  • Mapping ukládá do visitor_identities
  • Backfilluje contact_id ke starším eventům pro stejné visitor_id

Automatická identifikace v collect.js

  1. Přes ftclid v URL (z emailového odkazu)
  2. Přes gident / tag UTM parametr
  3. 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.