Dokumentacja

Wdrożenie w 5 minut

1. Snippet

Snippet znajdziesz po utworzeniu Property w sekcji Property → Integracja. Wygląda tak:

<script src="https://consented.eu/sdk/dist/stub.js"
        data-block="googletagmanager.com/gtag|connect.facebook.net"></script>
<script async src="https://consented.eu/p/TWOJE-ID-WITRYNY/cmp.js"></script>

Pierwsza linia to loader: synchroniczny, około 2 KB w transmisji, i musi znajdować się przed każdym innym skryptem — także przed Google Tag Managerem. Natychmiast blokuje wzorce podane w data-block i ustawia domyślne wartości Consent Mode. Oba odczytuje z własnego tagu script, ponieważ działa, zanim istnieje konfiguracja właściwości. Jeśli zmienisz usługi albo przełącznik Consent Mode, wklej snippet ponownie.

Język bannera: najpierw język strony z <html lang>, potem atrybut data-lang w tagu skryptu (<script async src="…/cmp.js" data-lang="pl">) lub w <html>, a na końcu język przeglądarki. Wygrać mogą tylko języki włączone w property. Kolejność i menu języków dla odwiedzających ustawisz w Property → Ustawienia.

2. Blokowanie skryptów

Deklaratywnie — dla skryptów, które osadzasz sam:

<script type="text/plain" data-consented="google-analytics-4">
  gtag('config', 'G-XXXXXXX');
</script>

Na podstawie wzorców — dla skryptów osadzanych przez innych:

Przy każdej usłudze wpisz fragmenty URL (np. googletagmanager.com/gtag). MutationObserver usuwa atrybut src, gdy tylko element pojawi się w dokumencie — także głęboko w bloku wstawionym później — i przywraca go po udzieleniu zgody.

Te dwie drogi nie są równoważne. W przypadku znaczników, które przeglądarka przetwarza podczas ładowania strony, loader wchodzi przed żądaniem. Jeśli strona wstawia skrypt później sama przez appendChild, jest to wyścig z ładowaniem, którego observer nie musi wygrać. Dla skryptów, które masz pod kontrolą, droga deklaratywna jest niezawodna; blokowanie wzorcami to siatka bezpieczeństwa na wszystko inne.
2b. Blokowanie osadzeń

Osadzenia — dla treści osadzonych z widoczną powierzchnią, np. filmu albo mapy:

<iframe data-consented="youtube-embed"
        data-consented-src="https://www.youtube-nocookie.com/embed/XXXX"
        width="560" height="315"
        title="Tytuł filmu"></iframe>

Żaden atrybut src nie istnieje, dopóki nie ma zgody — data-consented nazywa usługę wprost, data-consented-src niesie właściwy adres. Ponieważ przeglądarka nigdy nie widzi src, nie ma tu wyścigu: w przeciwieństwie do blokowania wzorcami powyżej, ta droga jest dla osadzeń niezawodna przez cały czas, a nie tylko siatką bezpieczeństwa.

3. API JavaScript
// Poczekaj, aż stan będzie znany
Consented.ready(function (state) {
  if (state && state.services['google-analytics-4']) { startTracking(); }
});

// Reaguj na zmiany
Consented.on('change', function (state) { console.log(state); });

// Otwórz widok szczegółowy — albo po prostu dodaj data-consented-open do elementu
Consented.openSettings();

// Dokumentowanie zgody
Consented.getConsentId();
4. Zdarzenia dataLayer
ZdarzenieKiedy
consented_readyRuntime załadowany, stan znany
consented_updatePo każdej decyzji odwiedzającego
5. Deklaracja cookies

Gotowe zestawienie wszystkich usług i cookies Twojej właściwości — do miejsca w polityce prywatności, w którym art. 13 RODO wymaga poinformowania. Dwie linie, które same się aktualizują:

<div id="consented-cookie-declaration"></div>
<script src="https://consented.eu/p/TWOJE-ID-WITRYNY/cookies.js?lang=pl"></script>

div jest opcjonalny: bez niego deklaracja umieszcza się dokładnie tam, gdzie stoi script. Ma własne oszczędne formatowanie, wszystko pod klasą consented-cd — Twój CSS je nadpisuje. Język wybierasz przez ?lang=; bez tego obowiązuje domyślny język właściwości.

Ta sama deklaracja jest dostępna jako osobna strona do linkowania i drukowania:

https://consented.eu/p/TWOJE-ID-WITRYNY/cookies?lang=pl

Oba powstają z opublikowanego stanu Twojej właściwości, a nie z wersji roboczej. To, co edytujesz, pojawi się dopiero po opublikowaniu — dzięki temu Twoja polityka prywatności nigdy nie wymienia usługi, której strona jeszcze nie ładuje.

Prawa osób, których dane dotyczą

Każda zgoda dostaje ID, które pokazuje się odwiedzającemu w widoku szczegółowym. Dzięki niemu może bez konta poprosić o wgląd albo o usunięcie:

GET    /api/v1/consent/{consentId}
DELETE /api/v1/consent/{consentId}

Albo wygodniej przez publiczną stronę wyszukiwania.