Dokumentacja
Wdrożenie w 5 minut
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.
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.
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. 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.
// 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();
| Zdarzenie | Kiedy |
|---|---|
consented_ready | Runtime załadowany, stan znany |
consented_update | Po każdej decyzji odwiedzającego |
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.
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.