Analityka privacy-first: statystyki strony bez ciasteczek
Jak mierzyć ruch na stronie bez zgody na ciasteczka: Plausible, Umami, Matomo i własny first-party tracking. Porównanie narzędzi, implementacja krok po kroku i zgodność z RODO.
Od kilku lat nie instaluję Google Analytics na nowych stronach bez konkretnej potrzeby. Powód nie jest ideologiczny – jest prawny i praktyczny. Po wyroku Schrems II i decyzjach europejskich organów nadzoru (w tym polskiego UODO) klasyczna analityka Google wymaga zgody na ciasteczka, umowy o transfer danych i bannera, który i tak zabiera 30-60% danych. Tymczasem istnieje cała kategoria narzędzi, które mierzą ruch bez ciasteczek, bez IP i bez zgody – i dają dane wystarczające do podejmowania decyzji. W tym poście pokazuję, jak je wdrożyć.
Problem: Google Analytics i ciasteczka
Klasyczny GA4 opiera się na ciasteczkach i identyfikatorach, które są danymi osobowymi w rozumieniu RODO. Konsekwencje prawne w UE po 2020 roku:
- Transfer danych do USA bez gwarancji odpowiedniego poziomu ochrony (wyrok C-311/18 – Schrems II),
- Konieczność zgody na ciasteczka analityczne (ePrivacy) → banner,
- Rezygnacje ze zgody → luki w danych i zafałszowane statystyki,
- Ryzyko kar UODO (precedensy w Austrii, Francji, Włoszech – kary dla stron używających GA bez zgody).
Do tego dochodzi problem praktyczny: dane są niekompletne. Użytkownicy odmawiają zgód, blokery reklam tną skrypty, a ruch z przeglądarek z ITP/Safari jest niedoszacowany. Im więcej osób chroni prywatność, tym gorzej działa model śledzący.
Czym jest analityka privacy-first
Zasady są proste i twarde:
- Zero ciasteczek – żadnych identyfikatorów, żadnych fingerprintingów, żadnego localStorage.
- Zero danych osobowych – adres IP jest anonimizowany albo w ogóle nie zbierany; brak e-maili, numerów, ID urządzeń.
- Agregacja zamiast śledzenia – liczysz zdarzenia, nie osoby. “1000 odwiedzin” to suma zdarzeń, nie 1000 zidenty- fikowanych użytkowników.
- First-party, kontekstowe dane – skąd przyszedł ruch, jaka strona, jaka przeglądarka, jaki kraj (na poziomie regionu) – wszystko, czego potrzebujesz do decyzji, i nic więcej.
Skutek prawny: takie przetwarzanie nie wymaga zgody (art. 6 ust. 1 lit. f RODO – prawnie uzasadniony interes), nie wymaga bannera ciasteczek i nie wymaga umowy powierzenia z transferem poza UE. Skutek praktyczny: 100% danych – każda odsłona, każde wejście, bez dziur po odmowach zgód.
Porównanie narzędzi
| Narzędzie | Model | Koszt | Self-hosted | Język PL | Źródła |
|---|---|---|---|---|---|
| Plausible | SaaS | od 9 USD/m | ✅ (open-source) | ✅ | lightweight, ~1 KB |
| Umami | Open-source | darmowe | ✅ (Node + DB) | ✅ | własny serwer |
| Matomo | Open-source | SaaS od 19 EUR/m | ✅ (PHP + MySQL) | ✅ | pełny GA-klon |
| GoatCounter | Open-source | od 5 EUR/m | ✅ | częściowo | minimalistyczne |
| Własny endpoint | DIY | ~0-100 PLN/rok | ✅ | – | pełna kontrola |
Moja rekomendacja: Plausible dla klientów (zero utrzymania, czytelny dashboard, polski interfejs) i Umami self-hosted dla projektów, gdzie liczy się koszt (darmowe, ale trzymasz własny serwer z bazą). Matomo wybierają ci, którzy chcą pełnej funkcji heatmap i nagrań sesji – pamiętaj wtedy, że te funkcje znów wchodzą w dane osobowe.
Implementacja: snippet Plausible
Wdrożenie to jedna linia w <head> – Plausible automatycznie
pobiera z domeny “prawdziwe” dane (kraj, urządzenie, źródło) bez
ciasteczek:
<script defer data-domain="twojadomena.pl" src="https://plausible.io/js/script.js"></script>Dla statystyk skonfigurowanych z raportowaniem wydarzeń (outbound clicks, 404, cele) – wariant z funkcjami:
<script defer data-domain="twojadomena.pl" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.tagged-events.js"></script>I rejestracja zdarzenia (np. klik w przycisk darowizny):
// śledzenie celu — bez ciasteczek, bez danych osobowychplausible('Wplacono', { props: { kwota: '50' } });Koniec. Zero bannera, zero zgód, zero konfiguracji po stronie przeglądarki. Jeśli chcesz trzymać wszystko u siebie, Umami daje analogiczny snippet wskazujący twój serwer:
<script defer src="https://analityka.twojadomena.pl/script.js" data-website-id="xxxx-xxxx"></script>Własny, first-party tracking: kiedy i jak
Jeśli zależy ci na pełnej kontroli i zerowych kosztach – własny
endpoint to ~50 linii kodu. Minimalna wersja: beacon na zdarzenie
pageview wysyłany z przeglądarki na twój serwer:
// strona: wyślij zdarzenie bez czekania na odpowiedźnavigator.sendBeacon('/api/analytics', new URLSearchParams({ path: location.pathname, referrer: document.referrer.slice(0, 500), ua: navigator.userAgent.slice(0, 300),}));
// serwer (endpoint): zapisz zdarzenie w bazie, IP tylko do// anonimizacji na poziomie kraju, potem usunięteAnonimizacja adresu IP w praktyce: pobierz IP tylko po to, by
odczytać kraj (GeoLite2), zapisz kraj, usuń IP. Wtedy nie
przetwarzasz danych osobowych w rozumieniu RODO. Pamiętaj o
ograniczeniach: navigator.sendBeacon to zwykle 64 KB payloadu
na zdarzenie i brak gwarancji dostarczenia – dla statystyk
wystarczające, dla krytycznych danych nie.
Co z RODO: checklista zgodności
- Brak ciasteczek i identyfikatorów – brak obowiązku zgody (art. 6 ust. 1 lit. f RODO, uzasadniony interes)
- IP anonimizowane lub niezbierane; brak danych osobowych w zdarzeniach (nie loguj query stringów z danymi!)
- Umowa powierzenia (DPA) tylko jeśli narzędzie jest SaaS – sprawdź, gdzie są serwery: Plausible (UE), Matomo Cloud (UE)
- Polityka prywatności opisuje narzędzie i cel przetwarzania
- Retention: ustal i opisz okres przechowywania (np. 12 mies.)
- Jeśli włączasz funkcje identyfikujące (heatmapy, nagrania, e-mail tracking) – znów potrzebujesz zgody
Co mierzysz i czego nie mierzysz
Analityka privacy-first daje wszystko, co potrzebne do decyzji: odwiedziny, unikalni (przybliżeni przez agregację), źródła ruchu, kraje, urządzenia, cele i konwersje. Nie daje: ścieżek pojedynczych użytkowników między wizytami, dokładnej liczby powracających (przybliżenie), profili behawioralnych ani retargetingu. Dla 95% stron – blogów, firm, sklepów – to właściwy kompromis. Dla reszty (mocno spersonalizowany e-commerce) dołóż zgodowy GA4 obok privacy-first – ale nie zamiast.
Co dalej
Chcesz wymienić Google Analytics na analitykę bez ciasteczek i bannera? Napisz do mnie – migracja z raportami i celami zajmuje 1-2 dni, koszt od 500 PLN.
Najczęściej zadawane pytania
Czy mogę używać Google Analytics bez zgody użytkowników?
Czym różni się analityka privacy-first od zwykłej?
Ile kosztuje analityka bez ciasteczek?
Powiązane posty
- tools
Witaj na blogu Mahawira: AI, WordPress i filozofia kodu
Startuje blog Mahawira Iwanowskiego o AI, multi-agent systems, WordPress, Linux i psychologii technologii. Sprawdź co planuję publikować.
1 min - aiAI
Jak wyszukiwarki AI rankują treści inaczej niż Google – i co z tym zrobić
Algorytmy rankingowe ChatGPT, Perplexity, Gemini i Google AI Overview – co mają wspólnego, czym się różnią, jak pod nie optymalizować. Dane z 12 miesięcy testów.
6 min