Instalacja i SDK

Jedna linia HTML.
Działa w minutę.

Asynchroniczny, bez kroku builda, bez kodu inline, przyjazny CSP, serwowany first-party z Twojej własnej subdomeny. Rdzeń trackera waży ≤ 10 KB po gzipie i inicjalizuje się w ≤ 5 ms p95 — Core Web Vitals i nagrywarka ładują się leniwie, tylko gdy pozwala na to polityka.

Snippet

To jest cała instalacja.

index.html — przed
<!-- Observer — cookie-less, self-hosted -->
<script async src="https://sa.yourdomain.com/v.js" data-site="obs_XXXX"></script>
Asynchroniczny i first-party

Ładowany z Twojej własnej subdomeny — przeżywa ad blockery, trzyma każdy endpoint same-site i nigdy nie odzywa się do zewnętrznej sieci.

Mały z założenia

Rdzeń trackera ≤ 10 KB po gzipie: cykl życia strony, czas zaangażowania, mapy ciepła, kliknięcia. Oficjalny build web-vitals i nagrywarka rrweb ładują się leniwie, tylko gdy pozwala na to polityka Twojego poziomu.

Weryfikowany przez kreatora

Kreator dodawania witryny odpytuje, aż pierwsza odsłona dotrze, i przełącza się na zielono z rosnącym licznikiem odsłon — nigdy nie zastanawiasz się, czy to działa.

Kreator dodawania witryny

Trzy kroki. Zielony ptaszek na końcu.

1
Nazwa + domeny

Nazwa witryny, główny URL i ewentualne dodatkowe domeny — staging, subdomeny, warianty. Rejestracja tej samej domeny w dwóch witrynach jest blokowana (HTTP 409).

2
Poziom prywatności

T0 ścisły (domyślny, bez banera), T1 pamięć sesyjna, T2 za zgodą (odblokowuje replay) albo T3 wyłącznik awaryjny. Collector wymusza to po stronie serwera.

3
Skopiuj snippet

Wklej, pobądź na stronie, patrz jak kreator weryfikuje pierwszą odsłonę na żywo i przełącza się na zielono z rosnącym licznikiem odsłon.

Content-Security-Policy

Dwie dyrektywy. To cała integracja.

Content-Security-Policy
script-src  'self' https://sa.yourdomain.com;
connect-src 'self' https://sa.yourdomain.com;

Bez unsafe-inline, bez blob:, bez data: — tracker to zwykły asynchroniczny skrypt, który rozmawia wyłącznie z Twoim collectorem. Witryny ze ścisłym CSP adoptują Observera bez osłabiania choćby jednej dyrektywy.

Anty-spoofing

Snippet jest zamknięty do Twoich domen.

Ten sam kod wklejony na cudzą witrynę zostanie odrzucony przez collectora z HTTP 403. ID Twojej witryny nie jest tokenem dla wszystkich — listę dozwolonych rozszerzasz w każdej chwili o subdomeny, staging albo alternatywne domeny.

Lista dozwolonych originów

Collector przy każdej paczce sprawdza origin żądania względem zarejestrowanych domen witryny.

Podpisane konfiguracje witryn

Konfiguracja per witryna (poziom, polityka, domeny, próbkowanie) jest podpisana Ed25519 — SDK nie jest w stanie podrobić podniesienia poziomu.

Limity przed nadużyciami

Limity zapytań, limity rozmiaru payloadu i deduplikacja event-id chronią collectora przed spamem i replayami.

Scrubbing danych osobowych (PII)

Sekrety i tożsamości nigdy nie docierają na dysk.

URL-e i tytuły są oczyszczane po stronie serwera, zanim cokolwiek trafi do zapisu: e-maile stają się [email], cyfrowe ciągi o długości numeru karty [num], a ciągi wyglądające jak klucze API [key]. Tytuły stron są haszowane. Zdarzenia błędów niosą wyłącznie klasę błędu — bez stosu, bez treści komunikatu.

Test na żywym HTTP w suitecie puszcza znane dane osobowe przez collectora i asertywnie weryfikuje oczyszczony wynik end-to-end.

Kontrakt DOM dla wydawców

Oznacz raz, miej lepsze dane na zawsze.

Mały zestaw atrybutów i klas łączy Twój markup z analityką — ranking elementów, analityka formularzy, wykrywanie martwych kliknięć i maskowanie nagrywarki wszystko z niego czytają.

Atrybut / klasaDziałanie
data-obs-id="hero-cta"Stabilny identyfikator elementu do rankingu elementów map ciepła — przeżywa redesigny lepiej niż haszowane selektory
data-obs-form="checkout"Nadaje formularzowi nazwę dla analityki drop-off formularzy
data-obs-interactiveOznacza interaktywne cele, żeby wykrywanie martwych kliknięć wiedziało, co powinno być klikalne
data-obs-ignoreWyłącza element z map ciepła i analityki formularzy
class="obs-mask"Nagrywarka maskuje tekst tego elementu u źródła
class="obs-block"Nagrywarka wyklucza ten element całkowicie
class="obs-ignore"Nagrywarka ignoruje zdarzenia w tym poddrzewie

Zdarzenia śledzone automatycznie

Co rejestruje snippet — dokładnie to.

Bez żadnej konfiguracji. Każdy wiersz jest oczyszczany, limitowany i deduplikowany w collectorze.

ZdarzenieWyzwalaczDane
page_viewładowanie strony / zmiana trasy SPApath (oczyszczony), title (zhaszowany), origin referrera, UTM
page_exitukrycie karty / pagehide / wyjście ze SPAengaged_ms (aktywny widok), scroll_max, exit_type
heartbeatco 15 s, gdy strona widocznaengaged_ms narastająco
clickkliknięcie użytkownikax%·y% strony (znormalizowane do dokumentu), element (zhaszowany), flagi rage / dead
scrollprzekroczenie progu głębokościdepth (25 / 50 / 75 / 100)
web_vitalcallback LCP / INP / CLS / FCP / TTFBname, value, rating, atrybucja (element / target)
errorbłąd JS / nieobsłużony rejectiontylko klasa błędu — bez stosu, bez treści komunikatu
outboundkliknięcie linku opuszczającego domenęorigin celu
downloadkliknięcie linku do plikurozszerzenie pliku
formfocus / blur polaform hash, field hash, kind (focus / filled / skipped), ms
goalpo stronie serwera (s2s)goal_id
customobserver('event', name, props)name + typowane propsy (oczyszczone, ≤ 10, lista dozwolonych per witryna)
survey_responsewysłanie widgeta ankietysurvey_id, value, type
optoutobserver('optOut')poleca SDK się zatrzymać i wyczyścić stan
window.observer — publiczne API
// custom events (typed, scrubbed)
observer('event', 'signup_click', { plan: 'pro' });

// consent bridge (T1/T2 sites)
observer('consent', 'granted');

// explicit control
observer('optIn');
observer('optOut');   // silences + clears

// trigger a survey widget
observer('survey', { question: 'How was checkout?', type: 'nps' });

// debug logging
observer.debug();

window.observer

Małe publiczne API — nic ukrytego.

Wszystko jest jawne

Zdarzenia własne, zgoda, opt-in/out, ankiety, debug — jedna przestrzeń nazw funkcji, udokumentowane zachowanie, zero beaconów bez uprzedzenia.

Opt-out jest prawdziwy

observer('optOut') zatrzymuje SDK i czyści każdy stan; nagłówki DNT i GPC robią to samo automatycznie.

Zdarzenia własne są bramkowane

Restrykcyjny schemat: maksymalnie 10 właściwości, poddanych scrubbingowi, lista dozwolonych per witryna. Collector odrzuca wszystko inne.

Wklej jedną linię.
Obejrzyj zielony ptaszek.

Kreator weryfikuje Twoją instalację na żywo — najpierw pierwsza odsłona, potem rosnący licznik. Zero zgadywania. Nigdy.