Dowiedz się więcej
Poznaj i zrozum jak wygląda
Technologia
Elastyczne zespoły
Sztuczna inteligencja
Cloud / chmura
Rozwój oprogramowania
Projektowanie produktów cyfrowych
Wybrane technologie
Usługi serwisowe IT
Fintech
Przemysł i produkcja
Rozwiązania dedykowane
Oprogramowanie produkcyjne
Rozszerzona rzeczywistość
Oprogramowanie dla branży HoReCa
CJakCiasteczko to polski banner zgody na cookies plus panel SaaS. Robi trzy rzeczy: zgodę zgodną z RODO, Google Consent Mode v2 i hash-chain audit trail dla UODO. Dla typowego polskiego sklepu wychodzi kilka razy taniej niż Cookiebot. Ma polskie faktury VAT i panel po polsku.
Zbudowaliśmy go w aveneo, bo żaden gotowy CMP, który sprawdziliśmy, nie pasował do polskiego MŚP. Albo był drogi, albo enterprise-only, albo wystawiał irlandzkie faktury. Po wdrożeniach u trzech klientów wyszło, że ten sam problem ma większość polskiego rynku — więc otworzyliśmy go publicznie jako produkt. Pokazuję dlaczego, jak działa i kiedy warto go rozważyć.
Wszystko się zaczęło od trzech rozmów w marcu 2024. Klient z WooCommerce (5 tys. zamówień miesięcznie), klient z customowym Magento i klient z portalem B2B — wszyscy w odstępie tygodnia dostali to samo: maila od Google'a, że bez Consent Mode v2 dla ruchu z EOG przestaną widzieć modeled conversions w Adsach.
Sprawdziliśmy, co rynek ma do zaoferowania. Cookiebot — banner waży ponad 100 KB, panel wygląda jak z 2014 roku, faktury z Irlandii, ceny w euro. OneTrust — żeby w ogóle z nimi porozmawiać, dostajesz sales engineera, kontrakt na rok i miesiąc negocjacji. CookieYes — po angielsku, bez polskich faktur VAT, support odpowiada po dwóch dniach. Iubenda — włoski produkt, polskie tłumaczenia miejscami kulawe.
Po dwóch tygodniach zbudowaliśmy własny banner dla tych trzech klientów. Działało dobrze. Po kolejnych kilku wdrożeniach było jasne, że ten sam problem ma większość polskiego rynku, więc zrobiliśmy z tego produkt SaaS — CJakCiasteczko. Tagline: „Cookiebot alternative dla polskiego biznesu", bo tak realnie pozycjonujemy się rynkowo.
Banner „Akceptuj cookies" to dawno za mało. CMP w 2026 roku odpowiada za trzy rzeczy naraz. Każda jest niezależna i każdej musi pilnować w tle.
Po pierwsze — zgoda zgodna z RODO i ePrivacy. To znaczy: cztery kategorie (necessary, preferences, analytics, marketing), opt-in (a nie pre-checked), przycisk „Odrzuć" wyglądający tak samo jak „Akceptuj" i floating button do wycofania zgody w każdej chwili. Artykuł 7(3) RODO mówi wprost: withdrawal as easy as consent. Bez tego inspekcja UODO kończy się decyzją administracyjną i karą.
Po drugie — Google Consent Mode v2. Od marca 2024 Google wymaga, żeby każda strona z ruchem z EOG przesyłała sygnały zgody do GA4 i Adsów. Cztery sygnały: ad_storage, ad_user_data, ad_personalization, analytics_storage. Wszystkie domyślnie denied, aktualizowane dopiero po decyzji użytkownika. Bez GCM v2 Smart Bidding optymalizuje na ślepo, bo traci dostęp do modeled conversions.
ad_storage
ad_user_data
ad_personalization
analytics_storage
denied
Po trzecie — audit trail. Sama deklaracja „mamy banner" to za mało. Inspektor UODO przy kontroli pyta o konkretnego użytkownika i konkretną datę. Bez logu z timestampem, anonimizowanym ID i wyborem kategorii nie ma jak udowodnić, że zgoda faktycznie została wyrażona.
CJakCiasteczko zaprojektowaliśmy tak, żeby wdrożenie było pracą na pięć minut, nie na pół dnia. Niezależnie od tego, czy masz WordPressa, własny sklep, dedykowaną aplikację B2B, czy projekt napisany dziesięć lat temu — schemat jest ten sam.
Dla popularnych CMS-ów (WordPress, WooCommerce, Magento 2, PrestaShop) instalujesz plugin z marketplace, wpisujesz klucz wygenerowany w panelu i to wszystko. Plugin sam wstrzykuje skrypt we właściwe miejsce — żadnego edytowania szablonu motywu, żadnego ryzyka, że update wtyczki rozwali integrację. Dla wszystkich pozostałych CMS-ów albo dedykowanych aplikacji wklejasz dwie linijki w sekcję head swojej strony i banner odpala się natychmiast.
head
Reszta — kolory, układ, tekst polityki prywatności, lista kategorii cookies — siedzi w naszym panelu. Klikasz „zapisz" i w 60 sekund propaguje się na produkcję. Bez deploya, bez czekania na developera, bez ruszania kodu.
Sam skrypt waży 8 KB po gzipie. Cookiebot waży około 220 KB. Na slow 4G ta różnica oznacza półtorej sekundy szybszego LCP, a po Core Web Vitals Google realnie ranknie Cię wyżej w wynikach organicznych. Drobiazg, który robi się ważny w skali roku.
Każda zgoda zapisana w CJakCiasteczko trafia do bazy PostgreSQL jako rekord ConsentRecord. W środku: domainId, anonimizowany visitorId, timestamp, wybór per kategoria w JSON, język, wersja polityki, źródło i kraj geolokalizacji. Plus dwie wartości, które robią różnicę — prevHash i thisHash, oba SHA-256.
PostgreSQL
ConsentRecord
domainId
visitorId
prevHash
thisHash
Ten prevHash to skrót poprzedniego rekordu w łańcuchu danej domeny. thisHash to SHA-256 z prevHash sklejonego z kanonicznym JSON-em obecnego wpisu. Dokładnie ten sam mechanizm, którego używa blockchain. Ktoś modyfikuje albo usuwa jeden rekord — wszystkie późniejsze hashe się rozjeżdżają i widać, gdzie ktoś próbował coś poprawić.
Po co to? Inspektor UODO przy kontroli zwykle pyta o konkretny przypadek: czy użytkownik X faktycznie zaakceptował kategorię analytics dnia Y o godzinie Z? Pokazujesz raport z panelu albo eksport CSV/NDJSON z całej historii. Inspektor weryfikuje łańcuch hashy i widzi, że nikt nie majstrował przy danych post factum. Prostsze CMP-y trzymają tylko log bez łańcuchowania, więc realnie nie ma jak udowodnić, że dane są nietknięte.
Funkcja dostępna na każdym planie — bez przeskoczenia na drogie warianty enterprise.
Drugi problem każdego właściciela strony brzmi: „nie wiem, jakie cookies u mnie się ładują". WordPress plus 12 wtyczek plus motyw plus Google Tag Manager — razem ustawiają kilkadziesiąt cookies, z czego część przez trzecie strony, o których właściciel nie ma pojęcia.
W panelu CJakCiasteczko klikasz „skanuj domenę". W tle nasz worker odpala headless Chromium przez Playwright, wchodzi na stronę, czeka na networkidle plus 2 sekundy „settle", czyta dataLayer, zbiera wszystkie ustawione cookies i request log dla trzecich stron. Każde cookie klasyfikuje według taksonomii — mamy bazę około 250 znanych nazw plus wzorce regex dla nieznanych.
networkidle
dataLayer
Po skanie dostajesz raport. Konkretnie: _ga i _gid to Analytics, _fbp to Pixel od Facebooka, _clck to Microsoft Clarity, __hssc to HubSpot. Z opisem co robi i kto je ustawia. Co się nie sklasyfikowało automatycznie, możesz ręcznie wskazać kategorię w panelu.
_ga
_gid
_fbp
_clck
__hssc
Bez tego skanu nie ma jak zacząć — żeby zbierać zgodę, trzeba najpierw wiedzieć, na co właściwie chcesz ją zbierać.
Stack mamy świadomie nudny. Optymalizowaliśmy pod stabilność i niski koszt operacyjny, nie pod modne technologie z konferencji.
Backend to monolit w Next.js 15: App Router, server components, server actions. TypeScript w trybie strict, PostgreSQL z Prismą ORM jako jedyne canonical schema. Logowanie idzie przez Better Auth (email plus opcjonalnie Google OAuth). Billing trzymamy na Stripe z Stripe Tax — VAT 23% PL dla B2C, reverse charge dla B2B z VAT-UE, wszystko liczy się automatycznie. Zero ręcznej księgowości.
Skanner cookies to osobny worker w tym samym kontenerze, używający Playwright. Dashboard po stronie klienta to Tailwind CSS z własnymi tokenami brandu, next-intl dla i18n (PL i EN), next/og dla dynamicznych obrazków OG. React server components wszędzie, gdzie się da. Klient renderuje się tylko dla rzeczy interaktywnych — formularzy, podglądu bannera w czasie rzeczywistym.
Sam skrypt na stronie klienta (cjakciasteczko.js) to czysty TypeScript skompilowany do single-file IIFE. Vanilla DOM API, zero zależności — żadnego Reacta, framer-motion, jQuery. Banner renderuje się w Shadow DOM, więc nie ma kolizji CSS ze stroną hosta. 8 KB po gzipie. Twardy budżet egzekwowany w CI — przekroczyłeś, nie przechodzi.
cjakciasteczko.js
Pluginy do CMS-ów to natywny PHP w konwencjach platformy. Cała infrastruktura siedzi w Docker Compose (app, db, Caddy), za Apache reverse proxy do CORS-ów. Pipeline na TFS Azure Pipelines. Sami sobie jesteśmy klientem — eat your own dog food, GA4 plus Consent Mode v2 na cjakciasteczko.pl odpalone naszym własnym skryptem.
CJakCiasteczko rozwijamy w oparciu o realne zgłoszenia od płacących klientów — nie o abstrakcyjną „wizję produktu". W kolejce na najbliższe miesiące siedzą trzy rzeczy, o które klienci pytają najczęściej. TCF v2 (Transparency and Consent Framework) dla klientów sprzedających powierzchnię reklamową przez Google Ad Manager, Xandr czy Magnite. Plugin Shopify jako natywna app w app store — żeby klienci na Shopify nie musieli wklejać snippetu ręcznie. Module dla Drupala — zgłaszany przez kilku klientów z sektora publicznego.
Roadmapę kierujemy bezpośrednio według głosów klientów, więc pojedyncze zgłoszenie często przesuwa coś w górę. Jeśli czegoś brakuje konkretnie Tobie, napisz na cjakciasteczko.pl/kontakt — odpowiadamy osobiście, zazwyczaj tego samego dnia.
Migracja z Cookiebota wygląda mniej dramatycznie, niż brzmi. Wymieniasz dwie linijki w sekcji head, w panelu CJakCiasteczko importujesz listę swoich cookies — albo z eksportu CSV, który masz w Cookiebocie, albo automatycznym skanem domeny — i to wszystko. Pół godziny pracy, zero ruszania szablonu motywu, zero przerwy w obsłudze bannera. Klienci, którzy się przesiadali, nie pamiętają, żeby coś przy tym poszło źle.
Pod kątem zgodności jest komfortowo i nie ma asterisków drobnym drukiem. Banner spełnia wymagania ePrivacy i polskie wytyczne UODO: opt-in (a nie pre-checked), równoważne odrzucenie z przyciskiem „Odrzuć" w tym samym stylu co „Akceptuj", floating reopen button do wycofania zgody w każdej chwili — wszystko zgodnie z artykułem 7(3) RODO. Hash-chain audit trail trzyma za Ciebie twardy dowód dla inspektora. Przy okazji — żeby było jasne — działa też z GA4 i Google Ads bez dodatkowej konfiguracji: skrypt sam instaluje gtag stub, wystawia denied-defaults i propaguje update po decyzji użytkownika. Bez tego Google traci dostęp do modeled conversions w EOG, a Smart Bidding optymalizuje na ślepo. U nas to siedzi out of the box.
gtag
Jeśli masz CMS-a, którego nie ma w naszym marketplace — Drupal, Joomla, dedykowany portal B2B w .NET, Laravel albo Django — nic się nie zmienia. Wklejasz dwie linijki w head i działa identycznie. Pluginy w marketplace to wygoda dla popularnych platform, nie wymóg. Po stronie infrastruktury: aveneo działa od 2008 roku (NIP 7792268011), CJakCiasteczko hostujemy w Polsce, w Warszawie, z normalnym SLA dla SaaS-ów — uptime monitoring, backupy, restart policy. Plan Business obejmuje priorytetowy support z odpowiedzią w cztery godziny robocze.
Zanim zarejestrujesz trial, możesz zobaczyć banner odpalony na naszej własnej stronie pod cjakciasteczko.pl/demo — kliknij i sprawdź, jak wygląda integracja z GA4 w DevTools. Plus free audit pod cjakciasteczko.pl/sprawdz: headless Chromium audytuje Twoją stronę pod sześć wymagań Google Consent Mode v2 i mówi konkretnie, czego brakuje. Pierwszy audyt dnia bez emaila, kolejne za podaniem maila. Jeśli budujesz polski sklep, portal B2B albo aplikację SaaS i chcesz mieć RODO z głowy za rozsądne pieniądze — zacznij od audytu albo 30-dniowego trialu. Software house aveneo stoi za produktem i odbiera support tickety osobiście. Powiązane lektury: oprogramowanie dedykowane — koszt i czas wdrożenia oraz aplikacje internetowe dla firm.
Powiedzmy sobie szczerze: tworzenie takich narzędzi w 2026 roku jest prostsze, niż wynikałoby z technicznych akapitów wyżej. Open-source, kilka tygodni pracy, dobrze nazwany problem — i masz CMP. Zwłaszcza jeśli — jak my — od kilkunastu lat budujesz oprogramowanie dla innych firm, a sam wciąż klikasz „Akceptuj wszystko" w czyimś bannerze za 100 EUR miesięcznie. Stare powiedzenie o szewcu bez butów ma drugie dno: czasem szewc po prostu jest zbyt zajęty cudzymi butami, żeby załatwić sobie własne. Tak długo, aż któryś klient nie zapyta wprost: „a wy sami z czego korzystacie?".
CJakCiasteczko zrobiliśmy najpierw dla siebie. Potem trzech klientów zapytało, czy mogliby z tego skorzystać. Potem kolejnych. W pewnym momencie wyszło, że to faktycznie się sprzedaje — więc zrobiliśmy z tego produkt. Nic nie stoi na przeszkodzie, żebyś i Ty z niego skorzystał — tym bardziej, że trial jest na 30 dni, bez podawania karty. A jak coś nie zadziała, wiesz, kogo pytać. ;)
Maciej jest doświadczonym starszym analitykiem i menadżerem projektów IT w firmie aveneo. Posiada bogatą wiedzę i umiejętności w zakresie zarządzania projektami rozwoju oprogramowania, a także wdrażania i integracji systemów informatycznych. Dzięki swoim kompetencjom Maciej skutecznie zarządza zespołami projektowymi i zapewnia terminową realizację oraz najwyższą jakość.