Cum să configurați PostHog:GDPR, CCPA și legile globale privind confidențialitatea
Două modalități curate de a conecta PostHog într-un site care respectăGDPR, CCPA și restul supei alfabetice a legii privind confidențialitatea, fără a vă pierde analiza.
Doriți să puneți PostHog pe site-ul dvs. Echipa dvs. juridică a menționatGDPR. Liderul dvs. de vânzări din SUA tocmai a aflat despre CCPA. Echipa dvs. de asistență a întrebat despre acel lucru LGPD în Brazilia. Acum vă uitați la o setare "mod fără cookie-uri" și vă întrebați dacă trebuie să aruncați întreaga stivă de analiză.
Există două modalități curate de a face acest lucru, iar alegerea dvs. depinde de o singură întrebare: vă pasă de ceva dincolo de numărarea vizitatorilor unici și a vizualizărilor paginilor?
Acest ghid vă duce prin ambele, cu cantitatea minimă de cod, butoanele de configurare care contează de fapt și biturile conștiente de reglementare pe care platforma le gestionează pentru dvs., astfel încât să nu trebuie să le faceți.
TL;DR
PostHog cookieless mode elimină poarta de consimțământ în jurul lui PostHog însuși – dar pierdeți identify(), replay-ul sesiunii, sondaje, steaguri persistente de caracteristici și îmbogățirea GeoIP. Aveți încă nevoie de banner pentru tot restul pe site (fonturi, inserții, urmărirea erorilor, anunțuri...).
Dacă aveți nevoie de oricare dintre acesteBannerul cookie al platformei alege modul corect (opt-in pentruGDPR/ UKGDPR/ ePrivacy / LGPD / FADP / POPIA / PIPL / PIPA / DPDP / PDPL, opt-out pentru CCPA / CPRA / PIPEDA / LFPDPPP / APPI) pe vizitator în funcție de țara lor, astfel încât să nu scrieți un tabel de țară în baza de cod.
Existing consent always wins asupra regulamentului implicit – dacă vizitatorul a acceptat deja sau a respins într-o vizită anterioară, această decizie este onorată. strictly necessary (există pentru a asigura conformitatea) și, prin urmare, este permis să fie stabilit fără consimțământ.
Nu inițiați niciodată PostHog - sau nu setați niciun cookie non-esențial - înainte ca banner-ul să se fi rezolvat (1) modul de reglementare / consimțământ aplicabil și (2) consimțământul existent al vizitatorului. așteptați evenimentul probo-ready. Inițializarea prea devreme fie aruncă un cookie pe un vizitator opt-in fără consimțământ (în afara etapei cu cerința de consimțământ prealabil aGDPR), fie aruncă un $pageview pe care nu îl puteți aminti pentru un vizitator opt-out care a respins deja o vizită anterioară.
Don’t forget the PostHog project setting: chiar și cu cookieless_mode activat în SDK, trebuie să porniți Cookieless server hash mode În secțiunea Setări proiect → Web Analytics, în caz contrar, numărul de utilizatori unici nu va fi calculat pentru vizitatorii respinși / anonimi.
Custom events that carry user data trebuie să fie ghidat pe posthog.has_opted_in_capturing() (sau un ajutor de verificare a consimțământului - acoperit mai jos) - nu aveți încredere în SDK pentru a șterge PII pentru dvs.
Forma problemei
PostHog-js, în mod implicit, scade un cookie de primă parte și scrie la localStorage astfel încât să poată oferi fiecărui vizitator un stabil distinct_id. În conformitate cu Directiva ePrivacy aGDPR, care contează ca accesarea echipamentului terminal și necesită consimțământul prealabil. Sub CCPA/CPRA nu necesită consimțământul prealabil, dar trebuie să oferiți o opțiune. Sub LGPD, opțiune. Sub PIPEDA, „consimțământul semnificativ” care în practică înseamnă opțiune.
Există două căi de ieșire din acest labirint:
Don’t store anything. PostHog în sine nu mai declanșează o cerință de consimțământ - dar totuși aveți nevoie de un banner pentru restul paginii (fonte, încorporări, widget-uri de suport, urmărire a erorilor, etichete de marketing), așa că nu citiți acest lucru ca "nu este nevoie de banner".
depozitare, dar numai cu acordul corespunzător. Rulați PostHog în mod normal acolo unde reglementările o permit (sau unde vizitatorul a fost de acord), și degradați grațios la fără cookie-uri acolo unde nu este.
Alegeți unul pe baza a ceea ce aveți nevoie de fapt de la analiză. În ambele cazuri, banner-ul cookie-ului platformei rămâne pe pagină.
Decide pe ce traseu te afli
Ești pe Track 1 (cookieless-only) Dacă tot ce ai nevoie de PostHog este:
Pageviews și analize web de bază (referenți, pagini de top, rata de respingere)
Custom events that contain no user-level data
Top-level conversion funnels measured per-day
Ești pe Track 2 (consent-aware) Dacă aveți nevoie de oricare dintre:
identify() pentru a lega comportamentul unui utilizator cunoscut (înregistrare, autentificare, ID cont)
Session replay
Surveys
Caracteristici de steaguri cu cache (fără tururi suplimentare pe fiecare încărcare a paginii)
Călătoriile de utilizator de-a lungul zilei sau de-a lungul dispozitivelor (reținere săptămânală/lunară, atribuire)
GeoIP îmbogățirea, detectarea bot, sau web analytics harta lumii
Profiluri de persoane care leagă mai multe evenimente de o singură persoană
Dacă ați încercat să revendicați Track 1, dar doriți, de asemenea, redarea sesiunii, nu puteți avea ambele.
In practice, most companies need both — one per surfaceSite-ul de marketing public → Track 1 (vizualizări de pagină agregate, nu sunt necesare date per utilizator). Aplicație web autentificată → Track 2 (veți ști deja cine este utilizatorul și doriți replay, steaguri, retenție). use a separate banner per surface (un banner ID pentru site, altul pentru app): diferite inventaruri de cookie-uri, liste de categorii diferite, traseu de audit mai curat.
Track 1: cookieless-only
Aceasta este setarea minimă de frecare pentru PostHog. SDK-ul nu stochează nimic în browser-ul vizitatorului. Utilizatorii unici sunt numărați printr-un hash pe partea serverului rotativ zilnic de (team_id, daily_salt, ip_address, user_agent, hostname) - niciodată reversibil, niciodată date personale, iar sarea este ștersă la sfârșitul zilei.
O interpretare greșită comună a documentelor PostHog este că modul fără cookie vă permite să eliminați banner-ul cookie. need banner-ul. banner-ul încă aparține site-ului pentru fiecare alt instrument care stochează ceva - fonturi web, încorporate YouTube / Vimeo, Calendly, Intercom, Sentry, etichete de marketing, pixeli de anunțuri. Tratați Track 1 ca "PostHog nu mai are nevoie de un port de consimțământ", nu ca "nu este nevoie de banner". banner-ul platformei este conștient de reglementare și de categorie, așa că îl păstrați în funcțiune pentru acele alte instrumente și pur și simplu nu porniți PostHog în spatele acestuia.
Pasul 1 – porniți setarea proiectului
În proiectul dvs. PostHog, mergeți la Project Settings → Web Analytics and enable Cookieless server hash modeFără aceasta, hash-ul nu este calculat, iar tablourile dvs. vor afișa zero utilizatori pentru vizitatorii fără cookie. Acesta este singurul motiv cel mai frecvent pentru care oamenii cred că modul fără cookie „nu funcționează”.
Step 2 — initialize the SDK
import posthog from"posthog-js";
posthog.init("<YOUR_POSTHOG_KEY>", {
api_host: "https://us.i.posthog.com", // or your reverse proxy
defaults: "2026-01-30",
cookieless_mode: "always",
respect_dnt: true,
});
Capturează vizualizările paginilor și evenimentele ca de obicei:
posthog.capture("checkout_started", {
plan: "pro",
// never include emails, names, IPs, etc. — see "Custom events" below
});
La ce renunţi
Modul fără cookie-uri are limitări reale: nici identify(), nici o reluare a sesiunii, nici sondaje, nici cache-uri cu steaguri de caracteristici, nici îmbogățire GeoIP, nici detectare bot, WAU/MAU umflată (rotatele zilnice de sare de hash) și coliziuni ocazionale de hash pe rețelele corporative partajate. their cookieless tracking guide.
Dacă oricare dintre acestea contează pentru produsul dvs., sunteți pe Track 2.
Track 2: consent-aware, with a regulation-smart banner
Partea grea a analizei de conformitate nu este de a scrie codul PostHog - este de a ști ce mod (opt-in vs opt-out) să se aplice pentru care vizitator, și dovedind că ați făcut-o corect în timpul unui audit.
De ce contează bannerul
Bannerul cookie al platformei este regulation-awareAcesta detectează țara vizitatorului din IP-ul său și rezolvă automat modul de consimțământ. Nu introduceți if (country === "FR") { ... } oriunde. Geolocation and Regulations pentru cartografierea completă, dar versiunea scurtă este:
Non-essential cookies blocked until the visitor accepts.
Opt-out
CCPA / CPRA, PIPEDA, LFPDPPP, APPI
Cookie-urile sunt active în mod implicit; vizitatorul poate renunța.
The banner also detects Global Privacy Control (navigator.globalPrivacyControl) și înregistrează automat o respingere - necesară pentru conformitatea CCPA - fără a afișa bannerul.
Consimțământul existent are întotdeauna prioritate față de standardul de reglementare. Banner-ul reamintește ultima decizie a vizitatorului într-un cookie ___ZBT_I18N_RUNTIME_BLOCK_175__ (și cade înapoi la platformaAPIpentru a returna vizitatorii ale căror cookie-uri au expirat sau au venit de pe alt dispozitiv).
Cookie-ul ___ZBT_I18N_RUNTIME_BLOCK_176__ este strictly necessary - singura sa sarcină este de a memora și de a aplica decizia de consimțământ a vizitatorului la încărcările ulterioare ale paginii. Cookie-urile necesare sunt exceptate de la cerința de consimțământ în temeiul articolului 5 alineatul (3) dinGDPR/ ePrivacy și de la sculpturile echivalente din alte reglementări, astfel încât cookie-ul este întotdeauna setat indiferent de ceea ce a acceptat vizitatorul.
Pe partea serverului, fiecare acțiune este înregistrată cu o captură instantanee a versiunii bannerului, IP anonimizată, agentul utilizatorului și alegerile pe categorii. audit trail Aveți nevoie atunci când un DPA vine să bată.
Cum funcționează integrarea
Înainte de orice cod, o regulă că toate celelalte depind: nu atingeți PostHog - sau setați orice cookie non-esențial - până când două lucruri au fost rezolvate.
Reglementarea aplicabilă și modul de consimțământ, calculate de platformaAPIdin geolocalizarea vizitatorului (opt-in pentruGDPR, opt-out pentru CCPA, etc.).
The visitor’s existing consent, citit din cookie-ul probo_consent sau, atunci când cookie-ul este lipsit, preluat de pe platformaAPIprin ID-ul vizitatorului.
Bannerul expune ambele ca un singur semnal: evenimentul probo-ready DOM, care se aprinde o dată după calcularea snapshot-ului. atârnă fiecare inițiere de setare a cookie-ului de la acel eveniment - inițializarea riscurilor anterioare de scriere a unui cookie înainte de consimțământ (în afara etapei cu cerința de consimțământ prealabil a luiGDPR) sau lansarea unui ___ZBT_I18N_RUNTIME_BLOCK_179__ pe care nu îl poți anula pentru un vizitator care a refuzat deja.
Cu această regulă în vigoare, integrarea are două părți:
PostHog inițiază din snapshot-ul actual al consimțământului. Dacă este permisă analiza (opt-out vizitator în mod implicit, sau un opt-in vizitator care a acceptat deja), PostHog se activează cu cookie-uri.
Un abonament la starea de consimțământ reflectă orice opt-in/opt-out viitor Apel la posthog.opt_in_capturing() / posthog.opt_out_capturing() – nu este necesară reîncărcarea paginii.
Starea de consimțământ provine de la getConsent(), starea de consimțământ Consent Manager API este expusă de @probo/cookie-banner/consent. Este un singleton pe care îl puteți apela din orice modul pentru a citi starea actuală per categorie (consent.has("analytics"), consent.getAll()) sau pentru a vă abona la schimbări (consent.subscribe(cb)).
Minimum configuration
Aceasta este cea mai mică setare React viabilă. Exemplul complet de lucru cu interfața de utilizare a consimțământului plutitor, panoul de debugare și trei stiluri de bannere diferite trăiește la getprobo/probo/examples/cookie-banner-reactRăspunsul corespunzător al postului este în src/lib/posthog.ts.
Aceasta este regula de comandă de mai sus făcută concret. posthog.init trăiește în interiorul probo-ready trader, așa că rulează numai odată ce banner-ul a rezolvat regulamentul și consimțământul existent al vizitatorului. opțiunile ___ZBT_I18N_BLOCK_194___ și opt_out_capturing_by_default sunt derivate din instantaneu în acel moment - nu de la "ce regulament suntem sub" (care ar pierde prioritatea regulă pentru vizitatorii care au ales deja) dar de la starea actuală de consimțământ.
The PostHog init options worth knowing
Exemplul de mai sus utilizează o mână de opțiuni care afectează în mod semnificativ conformitatea și calitatea analizelor.
Option
Why it’s there
defaults: "2026-01-30"
Pins PostHog SDK este setat în mod implicit la o dată cunoscută, astfel încât viitoarele actualizări SDK să nu vă schimbe în tăcere comportamentul.
cookieless_mode: "on_reject"
Când vizitatorul a acceptat analiza, rulați în mod normal; când respingeți (sau nu ați decis), rulați fără cookie-uri.
cookieless_mode: "always"
Ceea ce folosiți atunci când snapshot-ul spune că analiza este negată la momentul init. garanție tare că nimic nu este scris în browser.
opt_out_capturing_by_default: true
Dacă cookieless_mode este "always", niciun eveniment nu este trimis oricum, dar setarea acestui lucru evită cazul de margine în care vizitatorul se întoarce pentru a accepta și PostHog încearcă să umple vizualizarea paginii inițiale.
person_profiles: "identified_only"
Reduce facturarea MTU și se potrivește cu spiritul principiilor de minimizare a datelor dinGDPRși CCPA.
respect_dnt: true
Onorabil navigator.doNotTrack. Ieftin de setat, fără dezavantaje, iar mai multe legi de stat din SUA (și viitoarele reguli de confidențialitate ale UE AI Act) tratează semnalele DNT / GPC ca fiind obligatorii.
api_host
Setați acest lucru pe un subdomeniu de primă parte (de exemplu, https://t.yourdomain.com proxy la PostHog) pentru a evita blocarea anunțurilor și Safari ITP. PostHog are un ghid reverse-proxy.
before_send
Ultima șansă de a șterge PII din proprietățile evenimentelor înainte de a părăsi browserul. e-mailuri de bandă, șiruri de interogări cu jetoane, orice nu puteți garanta că nu va pătrunde.
Setarea proiectului PostHog (nu treceți peste acest lucru)
Same as Track 1: enable Cookieless server hash mode under Project Settings → Web Analytics Vizitatorii care resping consimțământul se vor întoarce la hash-ul de pe server pentru numărarea utilizatorilor unici.Fără această setare, acești vizitatori sunt invizibili – graficul „vizitatori unici” scade de fiecare dată când cineva respinge.
Wiring the banner category
În cadrul consolei de platformă, bannerul are o Analytics fie să păstreze slug-ul său ca analytics (care corespunde constantei din exemplu) sau să flageze o altă categorie cu PostHog consent în consola şi utilizaţi slug-ul său în codul dumneavoastră. JavaScript SDK and Consent Manager API Docs pentru referință completă.
Want feature flags?
Dacă aveți nevoie de steaguri de caracteristici PostHog (sau identify() în mijlocul sesiunii după o acceptare), păstrați Track 2 pe cookieless_mode: "on_reject" pentru fiecare pornire - nu "always" atunci când analiza este refuzată la init - și poarta UI până când este acordat consimțământul și utilizatorul este identificat. model complet, __ph_opt_in_out_* ca stocare de consimțământ necesară, și un exemplu de lucru: PostHog feature flags behind a cookie banner.
Custom events that touch user data
Aceasta este partea care mușcă echipele timp de șase luni. mașina de excludere a PostHog oprește doar evenimentele pe care SDK le trimite automat. Dacă propriul dvs. cod cheamă posthog.capture("invoice_paid", { email, amount }) pentru un vizitator optat, nimic în SDK nu îl va bloca - opt_out_capturing() oprește doar capturile din același apel SDK după ce a fost setat, dar dacă codul dvs. personalizat rulează înainte ca ascultătorul de consimțământ să aprindă, capturați PII fără consimțământ.
Modelul de siguranță este de a introduce fiecare captură care poartă date identificabile pe o verificare explicită a consimțământului:
Două verificări pentru că protejează împotriva diferitelor moduri de eșec. getConsent().has("analytics") este sursa adevărului din banner. posthog.has_opted_out_capturing() captează cazul în care PostHog însuși a fost optat (de exemplu, de către un vizitator care respectă DNT), dar se întâmplă să fie permisă categoria de analiză a banner-ului.
Pentru evenimente fără date de utilizator – posthog.capture("homepage_cta_clicked") fără proprietăți – puteți sări peste verificare; modul fără cookie-uri le va număra prin intermediul hash-ului de pe server pentru vizitatorii care au optat.
Dacă uitați să porniți, nu degradați doar analiza - prelucrați date cu caracter personal fără o bază legală, ceea ce este tipul de lucru pe care acțiunile de aplicare aGDPRși CCPA tind să se concentreze.
Putting it together
The two-track view in one decision:
Need identify(), replay, surveys, retention, or feature flag caching?
├─ No → Track 1: cookieless_mode: "always", no PostHog consent gate
(Probo banner stays on the page in both tracks for everything else you load.)
In either case:
Enable Cookieless server hash mode în setările Web Analytics ale proiectului dvs. PostHog.
Always gate captează datele utilizatorului la o verificare a consimțământului.
Utilizați defaults: "2026-01-30" pentru a bloca comportamentul SDK.
Rulați de la o primă parte api_host pentru a supraviețui blocantelor de anunțuri.
Bannerul cookie al platformei se ocupă de cartografierea regulamentului-mod, detectarea GPC, prioritatea consimțământului existent, blocarea resurselor terțe și pista de audit, astfel încât să nu trebuie să o vedeți. examples/cookie-banner-react Puneți-l în evidență pe platforma dvs.
Dacă nu aveți încă o instanță a platformei, Cookie Banner overview and quickstart ajungeți la un banner publicat în mai puțin de cincisprezece minute.
platforma este platforma de conformitate care livrează, de asemenea, un banner cookie gratuit, fără dependență, cu suport încorporat pentruGDPR, UKGDPR, FADP, CCPA, CPRA, LGPD, PIPEDA, POPIA, PDPA, PIPL, PIPA, APPI, DPDP, LFPDPPP și PDPL. Programează o discuție.
Scris de Émile Ré
Émile Ré scrie despre integrări, engineering workflows și partea tehnică a platformelor de conformitate.
Verifică inbox-ul pentru linkul de confirmare. Abonarea devine activă numai după confirmare.
Framework-uri gestionateManaged frameworks
Nu găsești framework-ul pe care îl cauți?
Discută cu noi — este posibil să îl putem include în program.
Nu vedeți cadrul pe care îl căutați?
Reach out – este posibil să o susținem deja în program.