Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Domyślne włączenie analityki, gdy zainstalowano `@intlayer/analytics`"v9.3.322.08.2026
- "Init doc — pakiet @intlayer/analytics, śledzenie na poziomie dostawcy (provider)/węzła (node), testy A/B, dashboard"v9.0.08.07.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Dokumentacja Intlayer Analytics
@intlayer/analytics to opcjonalny pakiet dodatkowy, który podpowiada ci jakie treści są faktycznie wyświetlane twoim odwiedzającym — jaka strona, w jakiej lokalizacji (języku) oraz jaki konkretny fragment przetłumaczonej treści — co pozwala ci lepiej zrozumieć odbiorców i przeprowadzać testy A/B zawartości.
Spis treści
Co jest śledzone
@intlayer/analytics gromadzi i wysyła (batch) trzy rodzaje anonimowych zdarzeń:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Zdarzenie | Gdzie przechwytywane | Co mówi |
|---|---|---|
page_view | Na poziomie Providera (IntlayerProvider) | Jaką stronę i lokalizację (locale) przeglądała sesja podczas pierwszego ładowania, zmiany trasy lub zmiany lokalizacji. |
content_exposure | Na poziomie Węzła (useIntlayer / interpretery) | Jaki klucz słownika / ścieżka klucza został faktycznie rozwiązany i wyświetlony — oraz, jeśli jest częścią eksperymentu, jaki wariant. |
conversion | Gdziekolwiek wywołasz useConversion() | Cel osiągnięty (rejestracja, kliknięcie, zakup...) przypisany do wariantu A/B, na który została wystawiona sesja. |
Zdarzenia są zbierane w pamięci i wysyłane jako jedno żądanie wsadowe (batch request) w przybliżeniu co 20 sekund — nigdy po każdym wciśnięciu klawisza czy renderowaniu — więc analityka nigdy nie wpływa na czas pierwszego wyrenderowania ani nie dodaje żądań dla każdej interakcji.
Jak napędza to testy A/B treści
Intlayer pozwala ci już deklarować Warianty (Variants) zawartości (np. słownik hero-banner z wariantem control i black_friday). @intlayer/analytics zamyka pętlę:
getVariant(experimentKey, variants)deterministycznie przypisuje każdą anonimową sesję do danego wariantu — czysta funkcja bazująca na identyfikatorze sesji i kluczu eksperymentu, więc przypisanie jest stabilne przez całą sesję i nie wymaga okrężnego zapytania do serwera (server round-trip) przed pierwszym wyrenderowaniem (brak migotania, brak przesunięć układu/layout shift).- Każde zdarzenie
content_exposureprzenosivariant, który został pokazany. useConversion()pozwala na przypisanie celu (np."cta_click") do tego wariantu.- Punkt końcowy (endpoint) z wynikami eksperymentu na dashboardzie porównuje współczynniki konwersji (conversion rates) wariantów, wliczając w to istotność statystyczną (test-z).
Instalacja
@intlayer/analytics jest opcjonalną zależnością każdego pakietu frameworka (react-intlayer, next-intlayer, vue-intlayer, …), więc większość projektów już go ma. Zainstaluj go jawnie, jeśli Twoja konfiguracja pomija zależności opcjonalne (npm install --no-optional, …):
Skopiuj kod do schowka
Instalacja pakietu to wszystko, czego potrzeba, aby włączyć analitykę: analytics.enabled domyślnie wynosi true, a @intlayer/config ustawia je na false, gdy pakietu nie da się znaleźć w projekcie. Jeśli nie ją zainstalujesz, każdy punkt integracyjny sprowadza się do pustej operacji (no-op) — zobacz Zerowy koszt, gdy nie zainstalowano poniżej.
Konfiguracja
Analityka nie wymaga żadnej konfiguracji, aby ruszyć: jest włączona domyślnie i wykorzystuje istniejący blok konfiguracji editor jako endpoint i klucz projektu.
Skopiuj kod do schowka
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
editor: {
backendURL: "https://back.intlayer.org", // Wykorzystywane również jako punkt końcowy przyswajania analityki
clientId: "your-client-id", // Wykorzystywane również jako klucz projektu analityki
clientSecret: "your-client-secret",
},
};
export default config;
editor.backendURL— podstawowy URL, do którego przesyłane są zdarzenia analityki (POST {backendURL}/api/analytics/events).editor.clientId— publiczny klucz projektu przypisany do każdego przetworzonego zdarzenia. Służy również jako przełącznik aktywacji: analityka pozostaje całkowicie wyłączona (oraz usunięta podczas tree-shakingu, patrz niżej), dopókiclientIdnie zostanie skonfigurowany.
Jeśli hostujesz sam Intlayer (self-host), analityka automatycznie wskazuje na twoją własną instancję, jako że współdzieli parametr editor.backendURL.
Wywoływanie API z przeglądarki
Ten sam token zasila mały klient niewymagający danych uwierzytelniających, dzięki czemu strona statyczna lub SPA może odczytać zawartość swojego CMS w czasie działania bez serwera, bez server action i bez żadnego sekretu w paczce (bundle):
Skopiuj kod do schowka
Uwierzytelnia się on samodzielnie na podstawie editor.clientId: wymiana, buforowanie (caching) i odnawianie są obsługiwane wewnętrznie. Zakresy (scopes) ograniczają to, do czego ma dostęp: opublikowaną zawartość słowników oraz przyjmowanie zdarzeń analityki. Wszystko inne (wysyłanie słowników, odczyt projektu, wydawanie kredytów AI) wymaga prawdziwych danych uwierzytelniających, a więc serwera lub zalogowanego użytkownika.
Rezygnacja (opt-out)
Opcjonalny blok analytics pozwala dostroić — lub wyłączyć — zbieranie danych:
Skopiuj kod do schowka
import type { IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
analytics: {
enabled: false, // Domyślnie: true — usuwa całą integrację z pakietu aplikacji
flushInterval: 20_000, // Milisekundy między dwoma zbiorczymi wysyłkami
sampleRate: 1, // Ułamek rejestrowanych sesji, od 0 (żadnej) do 1 (wszystkie)
},
};
export default config;
Odinstalowanie @intlayer/analytics daje ten sam efekt co enabled: false. Pełną listę pól znajdziesz w dokumentacji konfiguracji.
Użycie
Automatyczne śledzenie na poziomie providera
Brak konieczności modyfikowania kodu. Po zainstalowaniu pakietu @intlayer/analytics oraz po skonfigurowaniu editor.clientId, IntlayerProvider będzie automatycznie:
- inicjalizować klienta analityki po zamontowaniu (mount),
- rejestrować
page_viewpo pierwszym załadowaniu, - rejestrować
page_viewza każdą zmianą lokalizacji, - uruchamiać cykl „wypychania” (flush) zdarzeń po około 20 sekundach oraz natychmiast, gdy zakładka zostanie zamknięta (za pośrednictwem
navigator.sendBeacon, z trybem zapasowym (fallback) dofetch(..., { keepalive: true })).
Punkt wejścia różni się w zależności od frameworka, ale w każdym przypadku jest to to samo miejsce, którego już używasz do skonfigurowania Intlayer, więc nie ma nic więcej do dodania:
IntlayerProvider montuje dostawcę analityki wewnętrznie.
Skopiuj kod do schowka
next-intlayer eksportuje ponownie IntlayerProvider z React, więc analityka jest podłączona w ten sam sposób.
Skopiuj kod do schowka
Wtyczka intlayer rejestruje hooki analityki w cyklu życia komponentu głównego.
Skopiuj kod do schowka
Przy Nuxt, nuxt-intlayer instaluje wtyczkę za ciebie: nie musisz nic robić.
setupIntlayer() uruchamia analitykę z komponentu, który konfiguruje Intlayer.
Skopiuj kod do schowka
IntlayerProvider montuje dostawcę analityki wewnętrznie.
Skopiuj kod do schowka
IntlayerProvider montuje dostawcę analityki leniwie (lazy), dzięki czemu ten fragment kodu (chunk) pozostaje poza krytyczną ścieżką.
Skopiuj kod do schowka
provideIntlayer() zawiera już provideIntlayerAnalytics().
Skopiuj kod do schowka
Używaj provideIntlayerAnalytics() samodzielnie tylko wtedy, gdy zarządzasz providerami indywidualnie.
Automatyczne śledzenie na poziomie węzła
Za każdym razem, gdy useIntlayer rozwiąże jakiś fragment treści do wyświetlenia, interpreter raportuje zdarzenie typu content_exposure dla odpowiedniego elementu tj. zbiór dictionaryKey + lokalizacja (locale) + precyzyjna ścieżka klucza (key path) — ponownie, nie ma potrzeby zmieniania kodu. Powielone zdarzenia tego samego węzła pojawiające się w cyklu wypychania zostają zgrupowane do 1 zapytania razem z właściwością count — dzięki czemu lista z renderowaniem wykonywanym po 50 razy nie wypycha 50 razy osobnego zapytania.
Śledzenie konwersji do testów A/B
Wykorzystaj useConversion(), aby przypisać cel do wariantu, z którym wchodzono w interakcję w czasie sesji:
Skopiuj kod do schowka
Skopiuj kod do schowka
useConversionto hook kliencki: oznacz komponent jako"use client".
Skopiuj kod do schowka
Skopiuj kod do schowka
Skopiuj kod do schowka
Skopiuj kod do schowka
Skopiuj kod do schowka
Odbieranie wariantu bezpośrednio po stronie klienta
useExperiment() przypisuje sesję do wariantu i rejestruje ekspozycję, która staje się mianownikiem współczynnika konwersji. Pokazuj poddrzewo zależne od wariantu dopiero, gdy isAssigned ma wartość prawda, aby żaden odwiedzający nie zobaczył krótkiego mignięcia wariantu kontrolnego, zanim przypisanie zostanie rozstrzygnięte:
variant jest zwykłym ciągiem znaków (string).
Skopiuj kod do schowka
variant jest zwykłym ciągiem znaków (string). Przypisanie następuje w przeglądarce, więc komponent musi być komponentem klienckim.
Skopiuj kod do schowka
variant i isAssigned to Refy.
Skopiuj kod do schowka
variant i isAssigned to store'y: odczytaj je z prefiksem $.
Skopiuj kod do schowka
variant jest zwykłym ciągiem znaków (string).
Skopiuj kod do schowka
variant i isAssigned to Accessory: wywołaj je, aby odczytać wartość.
Skopiuj kod do schowka
variant i isAssigned to Signaly: wywołaj je, aby odczytać wartość.
Skopiuj kod do schowka
Wagi są opcjonalne — przekaż jedną na wariant, aby zmienić proporcje podziału, np. useExperiment("homepage-hero", ["default", "black_friday"], [9, 1]).
Komponent dziecko odczytuje następnie pasujący Wariant (Variant) słownika:
Skopiuj kod do schowka
Odczytanie wariantu w komponencie dziecku sprawia, że działa to poza React: w Vue, Svelte, Solid i Angular selektor przekazany do useIntlayer jest przechwytywany w momencie konfigurowania komponentu, więc odczyt musi nastąpić w komponencie, który montuje się dopiero, gdy wariant jest już znany.
Jeśli eksperyment obejmuje całą stronę, a nie pojedynczy słownik, przenieś wariant na providera — zobacz Ambient variant. Każdy useIntlayer poniżej rozwiąże się wtedy względem niego bez zmian w miejscu wywołania.
Jeśli potrzebujesz surowego przypisania poza komponentem, skorzystaj bezpośrednio z klienta:
getVarianttylko przypisuje — nie rejestruje ekspozycji. PreferujuseExperiment(), w przeciwnym razie współczynnik konwersji nie będzie miał mianownika.
Prywatność & Wydajność
- Z założenia anonimowe (Anonymous by design): sesje definiowane są losowymi unikalnymi indentyfikatorami (rotating ids), i backend nie przetwarza danych tak mocno, by przetrzymywać oryginał i nigdy IP urządzenia; pozostawia jedynie odcienie, zjawisko SHA-256 hash.
- Dokładność pozycjonowania ogólna (coarse): pozostaje do dyspozycji jedynie unikalny fragment kraju.
- Odnośniki odrzucają query string (search params) z definicji.
- Losowanie pul (Sampling): opcja
sampleRateumożliwia selekcjonowanie wyświetlanej treści. - Zbiorcze transakcje (Batched): 1 transakcja średnio na 20 sec (
flushInterval), w skrajnych momentach częściej, np. by wyzerować zapętlające procesy, jeżeli dojdzie do uzupełniania bufru (maxBufferSize).
Zerowy koszt, gdy nie zainstalowano
@intlayer/analytics podąża za tym samym modelem zależności opcjonalnej co @intlayer/editor:
- Zawsze paczka dociągana jest dynamicznie w osłonie
import()z klauzulątry/catch. - zmienna środowiskowa ustalana w czasie kompilacji (
INTLAYER_ANALYTICS_ENABLED), automatycznie ustawiana na'false'przez@intlayer/config, gdy pakiet nie jest zainstalowany,analytics.enabledma wartośćfalselub nie skonfigurowanoeditor.clientId, pozwala bundlerom usunąć całą integrację jako martwy kod (dead-code-eliminate);
Dashboard: Strona Analityki
Jak tylko system zdobędzie niezbędne detale na start z Twojego portalu (podpiętego pod projekt), sekcja Analytics (pod panelem) ukaże widok:
- Ilość użytkowników „Aktywnych”.
- Sumę w danym przedziale do ok 7 dni.
- Widok wyświetleń z perspektywy danej grupy stron (Page views).
- Pełen zakres podziału z punktu widzenia specyficznych preferencji odwiedzającego – w oparciu o sekcje państw z dodatkiem preferowanych ustawień językowych na zakładce podziału.
Odniesienie Backend API
Każde odniesienie czytające poddawane jest procesom weryfikacyjnym. System pobierający wystawiony jest na świat by funkcjonować prawidłowo z argumentem body clientId.
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Metoda | Endpoint | Opis |
|---|---|---|
POST | /api/analytics/events | Masowe pobieranie eventów z puli publicznej odfiltrowane wg. kryteriów clientId. |
GET | /api/analytics/overview | Parametry odsłon na język i podstrony do autoryzowanego projektu. |
GET | /api/analytics/audience?days=30 | Grupy wizytorów i szczegóły wyświetlania w ujęciu wielowymiarowym (dzień,język,itd) |
GET | /api/analytics/content-stats | Odsłony w grupie precyzyjnie celowanej ścieżki i pod klucz w słowniku. |
GET | /api/analytics/experiments/:experimentKey | Konwersja by przeprowadzać na wariantach testy (A/B testing, statistical itp.) |
Korzystając z dostępu masz uprawnienia do podpięcia własnych wywoływań ze skryptami wspierając system SDK: CMS SDK:
Skopiuj kod do schowka
Tylko po stronie serwera.createIntlayerCMS()uwierzytelnia się za pomocąclientId+clientSecret, a sekret nigdy nie jest dostępny w przeglądarce: ten fragment kodu wysyłałby nieuwierzytelnione żądania, gdyby działał tam. Trzymaj go w route handlerze, server action lub skrypcie.
