2.6 KiB
analytics
Ładuje GA4 albo Google Tag Manager, spięte z modułem consent: Consent Mode dostaje decyzję odwiedzającego, zanim tag się załaduje, i aktualizację w momencie kliknięcia w banerze.
Config
Brak opcji w payload.config — plugin czyta ID z globala Site Integrations
(Settings → Site Integrations):
- GA4 Measurement ID —
G-XXXXXXXXXX - GTM Container ID —
GTM-XXXXXXX
Gdy ustawione są oba, wygrywa GTM. Gdy żadne — komponent nie robi nic.
To jedyne pola z Site Integrations, które trafiają na klienta — są publiczne
(widać je w źródle każdej strony z GA). getAnalyticsConfig czyta wyłącznie je,
więc sekrety (Turnstile, SMTP) nie mają jak wyciec.
Front
W layoucie locale, wewnątrz ConsentProvider:
import { getAnalyticsConfig } from '@intecion/ipal-kit'
import { ConsentProvider, CookieBanner, Analytics } from '@intecion/ipal-kit/client'
export default async function LocaleLayout({ children, params }) {
const payload = await getPayload({ config })
const analytics = await getAnalyticsConfig(payload) // server
return (
<ConsentProvider texts={texts}>
{children}
<CookieBanner />
<Analytics {...analytics} />
</ConsentProvider>
)
}
Analytics nie renderuje nic — wstrzykuje skrypty. Zamontuj raz, wysoko w
drzewie.
Jak działa Consent Mode
- Przed załadowaniem tagu:
gtag('consent', 'default', …)z zapisaną decyzją odwiedzającego (albo wszystkodenied, gdy jeszcze nie zdecydował). - Tag się ładuje i respektuje ten stan od pierwszego trafienia.
- Klik w banerze →
gtag('consent', 'update', …)→ tagi reagują natychmiast.
Mapowanie kategorii na sygnały Google:
| Kategoria | Sygnały |
|---|---|
| analytics | analytics_storage |
| marketing | ad_storage, ad_user_data, ad_personalization |
| functional | functionality_storage, personalization_storage |
| necessary | security_storage (zawsze granted) |
Testowanie
W konsoli: window.dataLayer — powinien zawierać Arguments(3) z consent /
default, a po decyzji consent / update. Jeśli widzisz Array zamiast
Arguments, komenda nie zostanie rozpoznana przez Google.
Ciasteczko _ga pojawia się dopiero po zgodzie na analytics — to jest sedno
Consent Mode.
GTM sam nie ustawia ciasteczek — to pojemnik. Bez opublikowanego (Submit →
Publish, nie sam zapis) tagu GA4 w kontenerze wszystko wygląda dobrze:
gtm.load w dataLayer, Tag Assistant widzi kontener — a _ga nie ma, bo nic go
nie tworzy. Przy debugowaniu warto tymczasowo wyczyścić GTM Container ID i
zostawić samo GA4, żeby wyeliminować kontener jako zmienną.