Τεκμηρίωση

Τεκμηρίωση CookiePilot

Πλήρης οδηγός για την εγκατάσταση, τη διαμόρφωση και την ενσωμάτωση του CookiePilot στον ιστότοπό σας.

Εισαγωγή

Το CookiePilot είναι μια πλατφόρμα διαχείρισης συγκαταθέσεων για cookies (CMP), συμβατή με τον ΓΚΠΔ, τον ελληνικό νόμο για το ηλεκτρονικό απόρρητο (ν. 3471/2006) και το Google Consent Mode v2. Αυτοί είναι οι κανόνες που εφαρμόζει η Αρχή Προστασίας Δεδομένων Προσωπικού Χαρακτήρα (ΑΠΔΠΧ).

Για ποιους

  • Ιδιοκτήτες ιστοτόπων: ενσωμάτωση χωρίς προγραμματισμό.
  • Προγραμματιστές: API, events, ενσωματώσεις με το GTM.
  • Agencies: white-label, διαχείριση πολλαπλών domains.

Γρήγορη εκκίνηση

Βήμα 1: Εγγραφή

  1. Δημιουργήστε λογαριασμό στο app.cookiepilot.io/register.
  2. Προσθέστε το domain στον πίνακα και αντιγράψτε το κλειδί API (μορφή cp_live_...).

Βήμα 2: Εγκατάσταση του κώδικα

Η απευθείας εγκατάσταση γίνεται με δύο scripts στην ενότητα <head>, με αυτή τη σειρά.

Βήμα 2α: Προεπιλεγμένες συγκαταθέσεις (inline stub). Επικολλήστε το πρώτο, πριν από οποιοδήποτε άλλο script (cookiepilot.js, GA, GTM, διαφημιστικά tags και tags παρακολούθησης):

<script>"use strict";(function(){window.dataLayer=window.dataLayer||[];var d={ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500},h=false;try{for(var i=0;i<window.dataLayer.length;i++){var x=window.dataLayer[i];if(x&&x[0]==="consent"&&x[1]==="default"){h=true;break}}}catch(err){}if(!h&&window.dataLayer.length)window.dataLayer.unshift(["consent","default",d]);window.gtag=function(){window.dataLayer.push(arguments)};if(!h)window.gtag("consent","default",d);var a=document.cookie.match(/(^|)cookiepilot_consent=([^;]+)/);if(a){try{var e=JSON.parse(decodeURIComponent(a[2]));window.gtag("consent","update",{analytics_storage:e.analytics?"granted":"denied",ad_storage:e.marketing?"granted":"denied",ad_user_data:e.marketing?"granted":"denied",ad_personalization:e.marketing?"granted":"denied",functionality_storage:e.preferences?"granted":"denied",personalization_storage:e.preferences?"granted":"denied",security_storage:"granted"})}catch(err){}}})();</script>

Αυτό το inline snippet ορίζει αμέσως όλες τις κατηγορίες σε denied (με wait_for_update: 500), έτσι ώστε η προεπιλεγμένη κατάσταση του Google Consent Mode v2 να είναι έτοιμη προτού φορτωθεί οτιδήποτε άλλο. Για έναν επανερχόμενο χρήστη διαβάζει αμέσως την αποθηκευμένη συγκατάθεση από το cookie και στέλνει ένα consent update.

Βήμα 2β: Script του banner. Προσθέστε το αμέσως μετά το inline stub:

<!-- CookiePilot -->
<script async src="https://cdn.cookiepilot.io/cookiepilot.js" data-cpkey="TWOJ_KLUCZ"></script>

Βήμα 3: Διαμόρφωση του banner

Στον πίνακα: Domain → Διαμόρφωση → Εμφάνιση:

  • θέση του banner (πάνω, κάτω, modal),
  • χρώματα και κείμενα,
  • πλωτό κουμπί "Ρυθμίσεις cookies" για επανερχόμενους χρήστες.

Ενσωμάτωση με το Google Tag Manager

Μέσω του GTM εγκαθιστάτε το CookiePilot με ένα μόνο tag Custom HTML, το οποίο ορίζει αμέσως τις προεπιλεγμένες συγκαταθέσεις και φορτώνει το banner στην πιο πρώιμη φάση του GTM. Δεν χρειάζεστε ξεχωριστό αρχείο stub ούτε δεύτερο tag.

Στο GTM δημιουργήστε ένα tag Custom HTML (Tags → New → Custom HTML) και επικολλήστε:

<script>"use strict";
(function() {
window.dataLayer=window.dataLayer||[];var d={ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",functionality_storage:"denied",personalization_storage:"denied",security_storage:"granted",wait_for_update:500},h=false;try{for(var i=0;i<window.dataLayer.length;i++){var x=window.dataLayer[i];if(x&&x[0]==="consent"&&x[1]==="default"){h=true;break}}}catch(err){}if(!h&&window.dataLayer.length)window.dataLayer.unshift(["consent","default",d]);window.gtag=function(){window.dataLayer.push(arguments)};if(!h)window.gtag("consent","default",d);var a=document.cookie.match(/(^|)cookiepilot_consent=([^;]+)/);if(a){try{var e=JSON.parse(decodeURIComponent(a[2]));window.gtag("consent","update",{analytics_storage:e.analytics?"granted":"denied",ad_storage:e.marketing?"granted":"denied",ad_user_data:e.marketing?"granted":"denied",ad_personalization:e.marketing?"granted":"denied",functionality_storage:e.preferences?"granted":"denied",personalization_storage:e.preferences?"granted":"denied",security_storage:"granted"})}catch(err){}}
var s = document.createElement('script');
s.src = 'https://cdn.cookiepilot.io/cookiepilot.js?cpkey=' + encodeURIComponent('TWOJ_KLUCZ');
document.head.appendChild(s);
})();
</script>

Trigger: Consent Initialization - All Pages. Το tag πρέπει να εκτελείται μία φορά ανά σελίδα. Τα tags της Google (GA4, Google Ads), το Facebook Pixel και άλλα marketing tags ΔΕΝ χρησιμοποιούν τον trigger Consent Initialization, αλλά ενεργοποιούνται αργότερα (Consent Checks ή trigger που εξαρτάται από τη συγκατάθεση). Αποθηκεύστε το tag και δημοσιεύστε το container του GTM.

Σειρά και triggers

ΣειράTagTrigger
1CookiePilot - Consent Init + BannerConsent Initialization - All Pages
2GA4, Google Ads, UETAll Pages (το Consent Mode διαχειρίζεται μόνο του τις συγκαταθέσεις)
3Facebook Pixel, TikTok, LinkedIn κ.λπ.Custom Event cookiepilot_consent_update + συνθήκη συγκατάθεσης (δείτε παρακάτω)

Tags εκτός Google (Facebook Pixel, TikTok, LinkedIn)

Το Google Consent Mode διαχειρίζεται μόνο τα tags της Google. Για τα υπόλοιπα scripts, το widget σε κάθε αλλαγή συγκατάθεσης κάνει push στο dataLayer το event:

dataLayer.push({
  event: 'cookiepilot_consent_update',
  cookiepilot_consent: {
    necessary: true,
    analytics: true,
    marketing: true,
    preferences: false
  }
});

Το event στέλνεται επίσης σε κάθε είσοδο επανερχόμενου χρήστη (όταν το widget διαβάσει το cookie με τη συγκατάθεση), έτσι ο trigger στο GTM θα λειτουργήσει σε κάθε επίσκεψη, όχι μόνο στην πρώτη απόφαση.

Κοινό μοτίβο (εκτελέστε το μία φορά)

Αυτά τα τρία στοιχεία τα διαμορφώνετε μία φορά και έπειτα τα χρησιμοποιείτε για όλα τα tags εκτός Google.

  1. Trigger (Triggers → New → Custom Event): Event name cookiepilot_consent_update. Χωρίς συνθήκες, χωρίς "Once per page" (το tag πρέπει να μπορεί να ενεργοποιηθεί ξανά μετά από αλλαγή απόφασης).
  2. Data Layer Variable για κάθε κατηγορία που χρησιμοποιείτε:
    • Name cookiepilot_consent.marketing → μεταβλητή π.χ. dlv.cp_marketing
    • Name cookiepilot_consent.analytics → μεταβλητή π.χ. dlv.cp_analytics
    • Name cookiepilot_consent.preferences → μεταβλητή π.χ. dlv.cp_preferences
  3. Trigger Group ή συνθήκη στον trigger: dlv.cp_marketing equals true (για marketing tags) ή το αντίστοιχο πεδίο.

Σε καθένα από τα παρακάτω παραδείγματα, ο Trigger είναι το ίδιο Custom Event με προσθήκη συνθήκης στην κατάλληλη μεταβλητή.

Facebook Pixel

Tag στο GTM: Tags → New → Custom HTML.

<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'YOUR_PIXEL_ID');
fbq('track', 'PageView');
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_marketing equals true.
  • Tag firing options: Once per page.

Προαιρετικά, για πλήρη συμμόρφωση με το Facebook Limited Data Use, προσθέστε ένα δεύτερο tag που καλεί fbq('consent','revoke') με trigger dlv.cp_marketing equals false.

TikTok Pixel

Tag στο GTM: Tags → New → Custom HTML.

<script>
!function (w, d, t) {
  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)};
  ttq.load('YOUR_TIKTOK_PIXEL_ID');
  ttq.grantConsent();
  ttq.page();
}(window, document, 'ttq');
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_marketing equals true.
  • Tag firing options: Once per page.

Το ttq.grantConsent() είναι το νέο API του TikTok (από το 2024). Χωρίς αυτό, το TikTok λαμβάνει κατακερματισμένα (hashed) δεδομένα χωρίς συγκατάθεση, κάτι που παραβιάζει τους όρους.

LinkedIn Insight Tag

<script type="text/javascript">
_linkedin_partner_id = "YOUR_LINKEDIN_PARTNER_ID";
window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
window._linkedin_data_partner_ids.push(_linkedin_partner_id);
</script>
<script type="text/javascript">
(function(l) {
if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
window.lintrk.q=[]}
var s = document.getElementsByTagName("script")[0];
var b = document.createElement("script");
b.type = "text/javascript";b.async = true;
b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
s.parentNode.insertBefore(b, s);})(window.lintrk);
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_marketing equals true.
  • Tag firing options: Once per page.

Hotjar

<script>
(function(h,o,t,j,a,r){
  h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
  h._hjSettings={hjid:YOUR_HOTJAR_ID,hjsv:6};
  a=o.getElementsByTagName('head')[0];
  r=o.createElement('script');r.async=1;
  r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
  a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-',".js?sv=");
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_analytics equals true.
  • Tag firing options: Once per page.

Το Hotjar εντάσσεται στην κατηγορία analytics, όχι marketing (μετράει συμπεριφορά, όχι διαφημίσεις). Ελέγξτε τη δική σας πολιτική cookies, καθώς ορισμένες εταιρείες ταξινομούν το Hotjar διαφορετικά.

Microsoft Clarity

<script type="text/javascript">
(function(c,l,a,r,i,t,y){
  c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
  t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
  y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "YOUR_CLARITY_PROJECT_ID");
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_analytics equals true.
  • Tag firing options: Once per page.

Pinterest Tag

<script>
!function(e){if(!window.pintrk){window.pintrk = function () {
window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var
n=window.pintrk;n.queue=[],n.version="3.0";var
t=document.createElement("script");t.async=!0,t.src=e;var
r=document.getElementsByTagName("script")[0];
r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
pintrk('load', 'YOUR_PINTEREST_TAG_ID');
pintrk('page');
</script>
  • Trigger: cookiepilot_consent_update + συνθήκη dlv.cp_marketing equals true.
  • Tag firing options: Once per page.

Microsoft Ads (UET)

Το UET υποστηρίζει το Google Consent Mode από τα τέλη του 2023, οπότε δεν χρειάζεστε trigger Custom Event. Τοποθετήστε το tag με τον τυπικό τρόπο (All Pages, Once per page) και το UET διαβάζει μόνο του το ad_storage από το GCM, το οποίο ορίζει το widget.

Αντιστοίχιση κατηγοριών (σύνοψη)

TagΚατηγορίαΠεδίο στο cookiepilot_consent
Facebook Pixelmarketingmarketing
TikTok Pixelmarketingmarketing
LinkedIn Insightmarketingmarketing
Pinterestmarketingmarketing
Hotjaranalyticsanalytics
Microsoft Clarityanalyticsanalytics
Mixpanel, Amplitudeanalyticsanalytics
Intercom, Drift, Crisppreferencespreferences
GA4, Google Ads, UET(GCM, χωρίς trigger)διαχειρίζεται μέσω gtag('consent','update')

API Reference

Το CookiePilot παρέχει το αντικείμενο window.CookiePilot:

ΜέθοδοςΠεριγραφή
CookiePilot.getConsent()Τρέχουσα κατάσταση συγκαταθέσεων ή null αν δεν υπάρχει απόφαση.
CookiePilot.acceptAll()Συγκατάθεση σε όλες τις κατηγορίες.
CookiePilot.rejectAll()Απορρίπτει τα πάντα εκτός από necessary.
CookiePilot.updateConsent(partial)Ενημερώνει επιλεγμένες κατηγορίες, π.χ. { analytics: true }.
CookiePilot.showSettings()Ανοίγει το modal προτιμήσεων.
CookiePilot.hideSettings()Κλείνει το modal προτιμήσεων.
CookiePilot.showMyConsent() / hideMyConsent()Εμφανίζει/αποκρύπτει το πλωτό κουμπί.

Παράδειγμα

const consent = CookiePilot.getConsent();
// { necessary: true, analytics: true, marketing: false, preferences: false }

CookiePilot.updateConsent({ analytics: true });

document.getElementById('cookie-settings').addEventListener('click', () => {
  CookiePilot.showSettings();
});

Σύνδεσμος "Διαχείριση cookies" στο υποσέλιδο

<a href="#" onclick="CookiePilot.showSettings(); return false;">Zarządzaj cookies</a>

Events JavaScript

Το widget κάνει dispatch το εγγενές event cookiepilot:consent στο window. Ο listener πρέπει να έχει καταχωρηθεί πριν από τη φόρτωση του widget, αν θέλετε να πιάσετε το event για επανερχόμενο χρήστη (το dispatch στέλνεται αμέσως μετά την εκκίνηση του widget):

<script>
  window.addEventListener('cookiepilot:consent', (e) => {
    if (e.detail.marketing) {
      fbq('init', 'YOUR_PIXEL_ID');
    }
  });
</script>
<script src="https://cdn.cookiepilot.io/cookiepilot.js" data-cpkey="TWOJ_KLUCZ"></script>

Το e.detail περιέχει το ίδιο payload με το getConsent(). Για ενσωμάτωση μέσω GTM χρησιμοποιήστε το event του dataLayer που περιγράφηκε παραπάνω αντί γι' αυτό, επειδή το dataLayer είναι persistent array και το GTM απορροφά και τα ιστορικά events.


Κατηγορίες συγκαταθέσεων

ΚατηγορίαΠεριγραφήΠροεπιλογή
necessaryΑπαραίτητα για τη λειτουργία του ιστοτόπουΠάντα ενεργά
analyticsΣτατιστικά και αναλυτικά στοιχείαΑπαιτείται συγκατάθεση
marketingΔιαφημίσεις και remarketingΑπαιτείται συγκατάθεση
preferencesΕξατομίκευση, γλώσσαΑπαιτείται συγκατάθεση
Κατηγορία CookiePilotΠεδία Consent Mode
analyticsanalytics_storage
marketingad_storage, ad_user_data, ad_personalization
preferencesfunctionality_storage, personalization_storage
(πάντα)security_storage: granted

Η έκδοση 2 πρόσθεσε τα ad_user_data και ad_personalization (υποχρεωτικά από τον Μάρτιο του 2024 για EU/EEA στις διαφημίσεις της Google).

ΠαράμετροςΠεριγραφή
ad_storageΔιαφημιστικά cookies
analytics_storageΑναλυτικά cookies
ad_user_dataΑποστολή δεδομένων χρήστη στη Google
ad_personalizationΕξατομίκευση διαφημίσεων
functionality_storageΛειτουργικά cookies
personalization_storageCookies εξατομίκευσης
security_storageΠάντα granted

Μηχανισμός:

  1. Το stub ορίζει όλα τα πεδία σε denied σύγχρονα, με wait_for_update: 500.
  2. Μετά την απόφαση του χρήστη το widget στέλνει gtag('consent', 'update', {...}) με την παραπάνω αντιστοίχιση.
  3. Για επανερχόμενο χρήστη το σημείο 2 εκτελείται αμέσως μετά την εκκίνηση του widget, με βάση το cookie.

Διαμόρφωση εμφάνισης

Στον πίνακα: Domain → Διαμόρφωση:

  • Εμφάνιση: θέση, χρώματα, διάταξη (BAR / BOX / MODAL).
  • Κείμενα: επικεφαλίδα, περιγραφή, ετικέτες κουμπιών, περιγραφές κατηγοριών. 13 γλώσσες (EN, PL, DE, FR, ES, IT, NL, PT, SV, CS, RO, EL, HU).
  • Κουμπί συγκαταθέσεων: πλωτό κουμπί "Ρυθμίσεις cookies" ορατό μετά την πρώτη απόφαση (κάτω αριστερά/δεξιά).
  • Custom CSS: πεδίο για δικά σας στυλ. Το widget αποδίδεται σε Shadow DOM, οπότε οι CSS selectors από το κύριο έγγραφο δεν θα λειτουργήσουν. Μόνο μέσω αυτού του πεδίου.

Προσβασιμότητα (WCAG 2.1 AA)

  • ✅ Πλοήγηση με πληκτρολόγιο (Tab, Shift+Tab, Enter, Escape).
  • ✅ ARIA labels, role="dialog", aria-modal.
  • ✅ Focus trap στο modal.
  • ✅ Screen reader (live regions στην αλλαγή κατάστασης).
  • ✅ Responsiveness.

Ενσωματώσεις

WordPress

Διαθέτουμε επίσημο plugin: CookiePilot στο WordPress.org.

  1. WordPress admin → Plugins → Add New → αναζητήστε "CookiePilot".
  2. Εγκαταστήστε και ενεργοποιήστε.
  3. Settings → CookiePilot → επικολλήστε το κλειδί API από τον πίνακα.

Το plugin εισάγει μόνο του το stub και το tag στο <head> (με τη σωστή σειρά πριν από άλλα scripts) και παρέχει το shortcode [cookiepilot_settings] για τον σύνδεσμο "Διαχείριση cookies" στο υποσέλιδο.

Αν προτιμάτε χωρίς plugin: χρησιμοποιήστε το "Insert Headers and Footers" και επικολλήστε το snippet από το βήμα 2 της Γρήγορης εκκίνησης στην ενότητα Header.

Shopify

  1. Κατάστημα → Themes → Edit code.
  2. Στο theme.liquid επικολλήστε το snippet πριν από το </head>.

Next.js

// app/layout.tsx
import Script from 'next/script';

export default function RootLayout({ children }) {
  return (
    <html>
      <head>
        <Script
          src="https://cdn.cookiepilot.io/cookiepilot.js"
          data-cpkey="TWOJ_KLUCZ"
          strategy="beforeInteractive"
        />
      </head>
      <body>{children}</body>
    </html>
  );
}

Το strategy="beforeInteractive" διασφαλίζει ότι το script του banner θα εκτελεστεί νωρίς. Να θυμάστε ότι το inline stub από το Βήμα 2α (προεπιλεγμένες συγκαταθέσεις) το προσθέτετε ξεχωριστά, στο <head> πριν από αυτό το script, π.χ. μέσω next/script με dangerouslySetInnerHTML ή απευθείας στο app/layout.tsx.


FAQ

Επιβραδύνει το script τον ιστότοπο;

Το bundle είναι περίπου 12 KB gzip, φορτώνεται ασύγχρονα. Χωρίς επίπτωση στα Core Web Vitals.

Για πόσο χρόνο διατηρούνται οι συγκαταθέσεις;

Cookie με την απόφαση του χρήστη: προεπιλεγμένα 365 ημέρες (παραμετροποιήσιμο στον πίνακα). Συμβάντα στα αναλυτικά στοιχεία: 2 χρόνια (TTL ClickHouse).

Ναι. Το widget διαβάζει το cookie κατά την εκκίνηση και κάνει push το event στο dataLayer. Ο trigger Custom Event στο GTM θα ενεργοποιηθεί σε κάθε επίσκεψη, όχι μόνο στην πρώτη απόφαση.

Πού να αναφέρω ένα πρόβλημα;

kontakt@cookiepilot.io ή στο chat του πίνακα.


Λίστα ελέγχου μετά την ενσωμάτωση

Μετά την εγκατάσταση του CookiePilot ελέγξτε τη διαμόρφωση πριν από τη δημοσίευση διαφημιστικών καμπανιών.

1. Έλεγχος πριν από τη συγκατάθεση του χρήστη

  1. Ανοίξτε τον ιστότοπο σε λειτουργία incognito και καθαρίστε τα cookies για το domain.
  2. Ανοίξτε DevTools → Network και ανανεώστε τη σελίδα.
  3. Πριν κάνετε κλικ στη συγκατάθεση, βεβαιωθείτε ότι:
    • δεν δημιουργούνται αναλυτικά/marketing cookies, π.χ. _ga, _gcl_*, _fbp, _ttp,
    • τα marketing tags δεν στέλνουν requests προς Meta/TikTok/LinkedIn πριν από τη συγκατάθεση marketing,
    • στο dataLayer έχει οριστεί η προεπιλεγμένη κατάσταση denied για τα ad_storage, ad_user_data, ad_personalization και analytics_storage.

2. Έλεγχος μετά την αποδοχή των συγκαταθέσεων

  1. Κάντε κλικ στο „Αποδοχή όλων".
  2. Στα DevTools ελέγξτε αν εμφανίστηκε το event cookiepilot_consent_update.
  3. Για τα tags της Google ελέγξτε στο GTM Preview / Tag Assistant αν το Consent Mode άλλαξε κατάσταση σε granted για τις αντίστοιχες κατηγορίες.
  4. Για το GA4 ελέγξτε στο DebugView αν τα events άρχισαν να φτάνουν μετά τη συγκατάθεση.
  5. Για Meta Pixel / TikTok / LinkedIn ελέγξτε αν τα tags ενεργοποιούνται μόνο μετά το event cookiepilot_consent_update και τη συνθήκη συγκατάθεσης marketing.

3. Έλεγχος απόρριψης των συγκαταθέσεων

  1. Καθαρίστε τα cookies και ανανεώστε τη σελίδα.
  2. Κάντε κλικ στο „Απόρριψη όλων".
  3. Βεβαιωθείτε ότι τα cookies και τα marketing requests εξακολουθούν να μην ενεργοποιούνται.
  4. Βεβαιωθείτε ότι οι απαραίτητες λειτουργίες του ιστοτόπου εξακολουθούν να λειτουργούν.

4. Συχνότερα λάθη

  • Το tag GA4/Google Ads ενεργοποιείται στο Consent Initialization αντί για μεταγενέστερο trigger.
  • Το Meta Pixel ή το TikTok Pixel δεν έχει συνθήκη στο cookiepilot_consent.marketing.
  • Στον ιστότοπο έχει παραμείνει παλιό, hardcoded tracker στο <head> πριν από το CookiePilot.
  • Στην τεκμηρίωση ή στο template έχει παραμείνει παρωχημένο URL του script ή παλιό attribute αναγνωριστικού αντί για το τρέχον cookiepilot.js με data-cpkey.