Darmowy baner cookie spełniający wymagania UI bannera GDPR. Jeden tag script - zero konfiguracji backendu, zero opłat, zero danych osobowych.
Tak wygląda baner na Twojej stronie. Kliknij przyciski żeby przetestować.
Ta strona używa plików cookie
Używamy plików cookie, aby zapewnić najlepsze doświadczenie. Możesz zaakceptować wszystkie lub dostosować preferencje.
Obsługuje kategorie zgód: niezbędne, statystyki i marketing. Uwaga: pełna zgodność z GDPR wymaga wdrożenia własnych logów zgód po stronie serwera.
Vanilla JS, zero zależności, Shadow DOM. Nie spowalnia Twojej strony.
Dostępny na zawsze za darmo. Jedyna prośba: zachowaj link "Powered by SN Solutions".
Ustaw język, link do polityki prywatności i kolor akcentu przez atrybuty data-*.
Skopiuj kod
Skopiuj poniższy kod script.
Wklej przed zamknięciem strony
Wklej kod tuż przed zamykającym tagiem body w swoim HTML.
Gotowe!
Odśwież stronę - baner pojawi się automatycznie.
<script
src="https://snsolutions.pl/cookie-widget.js"
data-lang="pl"
data-privacy-url="/polityka-prywatnosci"
data-accent-color="#2563eb"
></script>data-langJęzyk banera (pl lub en)"pl" | "en"data-privacy-urlLink do Twojej polityki prywatności"/polityka-prywatnosci"data-accent-colorKolor akcentu przycisków (HEX)"#2563eb"Widget automatycznie integruje się z GTM poprzez Google Consent Mode v2 i dataLayer. Wymagany jest jeden snippet w sekcji head strony - PRZED tagiem GTM:
1Wklej poniższy kod w sekcji head swojej strony, PRZED skryptem GTM. Ustawia domyślnie denied i przywraca zgodę powracającym użytkownikom przed załadowaniem GTM:
<!-- Consent Mode v2 – paste BEFORE GTM script -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// 1. Ustaw domyślnie denied (wymagane przez Consent Mode v2)
gtag('consent', 'default', {
analytics_storage: 'denied',
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied'
});
// 2. Jeśli użytkownik już wcześniej wyraził zgodę - przywróć ją
// PRZED załadowaniem GTM, żeby page_view był poprawnie oznaczony
try {
var _c = JSON.parse(localStorage.getItem('ns-cookie-consent') || 'null');
if (_c && _c.v === 1) {
gtag('consent', 'update', {
analytics_storage: _c.statistics ? 'granted' : 'denied',
ad_storage: _c.marketing ? 'granted' : 'denied',
ad_user_data: _c.marketing ? 'granted' : 'denied',
ad_personalization: _c.marketing ? 'granted' : 'denied'
});
}
} catch(e) {}
</script>⚠ Bez tego snippetu GTM może wysłać dane analityczne zanim użytkownik udzieli zgody.
2Widget sam wywoła gtag('consent', 'update', ...) po każdej zmianie zgody.
// Widget automatycznie wywołuje:
gtag('consent', 'update', {
analytics_storage: 'granted' | 'denied',
ad_storage: 'granted' | 'denied',
ad_user_data: 'granted' | 'denied',
ad_personalization: 'granted' | 'denied'
});
// Oraz pcha do dataLayer:
dataLayer.push({ event: 'cookieConsentUpdated', cookieConsent: { ... } });3W GTM użyj triggera Custom Event o nazwie cookieConsentUpdated lub wbudowanej obsługi Consent Mode.
Ważne: odpowiedzialność za logi zgód
Widget zapewnia mechanizm zbierania zgód (UI) zgodny z wymogami formy bannera GDPR. Jednak GDPR Art. 7 nakłada na administratora danych (właściciela strony) obowiązek udowodnienia, że zgoda została udzielona. Oznacza to konieczność prowadzenia własnych logów po stronie serwera. Widget przechowuje wybory użytkownika w localStorage - nie stanowią one dowodu wystarczającego dla organów nadzorczych (np. UODO). Właściciel strony jest wyłącznie odpowiedzialny za wdrożenie server-side consent logging.
Widget emituje zdarzenie nsCookieConsent przy każdej zmianie zgody. Przechwytując je, możesz zapisać wybory na swoim serwerze:
document.addEventListener('nsCookieConsent', async function(e) {
await fetch('/api/consent-log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
ts: e.detail.ts,
necessary: e.detail.necessary,
statistics: e.detail.statistics,
marketing: e.detail.marketing,
bannerVersion: 1,
sessionId: crypto.randomUUID() // anonimowy identyfikator
})
});
});⚠ Twój endpoint powinien zapisywać: timestamp, wybory kategorii, wersję bannera oraz anonimowy identyfikator sesji. Nie zapisuj adresu IP bez odrębnej podstawy prawnej.
Czy widget jest naprawdę bezpłatny?
Tak, całkowicie. Jedyną prośbą jest zachowanie linku "Powered by SN Solutions" w banerze.
Czy zbiera dane użytkowników?
Nie. Widget nie wysyła żadnych danych osobowych. Jedyne co może wysłać to nazwa domeny instalacji (do naszych statystyk), bez żadnych danych o odwiedzających.
Czy widget wystarczy do pełnej zgodności z GDPR?
Widget spełnia wymagania dotyczące formy bannera GDPR: brak pre-zaznaczonych pól, równorzędny przycisk odrzucenia, możliwość wycofania zgody. Nie zapewnia jednak server-side consent logging wymaganego przez GDPR Art. 7 - administratorzy danych muszą prowadzić własne logi zgód po stronie serwera. Szczegółowy opis i przykład znajdziesz w sekcji powyżej.
Co jeśli chcę usunąć link "Powered by"?
Link jest warunkiem korzystania z bezpłatnej wersji. Jeśli potrzebujesz wersji white-label lub bardziej zaawansowanej konfiguracji, skontaktuj się z nami.
Widget to tylko jeden z wielu elementów. Zbudujemy Ci stronę, która przyciąga klientów.
Bezpłatna konsultacja