GDPR per i negozi PrestaShop: Cosa serve davvero
Guida pratica GDPR per PrestaShop: consenso cookie, privacy policy, diritti sui dati, regole di conservazione, fornitori terzi e checklist di conformità.
Non è una consulenza legale. Siamo un'azienda di moduli PrestaShop con sede nell'UE: il GDPR è la legge sotto la quale lavoriamo ogni giorno. Ma gli schemi tecnici qui sotto sono esattamente questo: tecnici. La formulazione del tuo accordo sul trattamento dei dati (DPA), il tuo Registro delle attività di trattamento, la notifica delle violazioni e la necessità o meno di un DPO sono compiti per un avvocato specializzato in protezione dei dati nella tua giurisdizione. Considera questa pagina come il complemento, sul versante dello sviluppo, di quella conversazione, non come un suo sostituto.
Cosa significa davvero "conforme al GDPR" (e cosa nessun modulo può darLe)
Abbiamo realizzato due moduli in questo ambito (Cookies Revolution per il consenso, e un kit di strumenti per la privacy del cliente per l'esportazione/cancellazione) e nel complesso distribuiamo 159 moduli. L'unica cosa che diremmo a ogni commerciante prima di acquistare qualsiasi cosa: la "piena conformità al GDPR" non è qualcosa che un modulo possa venderti. Un modulo copre i cookie, la registrazione del consenso, l'esportazione dei dati lato cliente, la cancellazione dell'account e le pulizie periodiche per la conservazione. Il GDPR copre anche gli accordi sul trattamento dei dati con ogni fornitore, un Registro delle attività di trattamento, una risposta documentata alle violazioni, le decisioni sulla base giuridica e (a seconda delle tue dimensioni e di ciò che fai) un Responsabile della protezione dei dati. La maggior parte di queste cose è documentazione e policy, non PHP.

Quindi quando questa pagina dice "usa un banner di consenso che blocchi davvero gli script", quella è una correzione tecnica reale. Quando dice "Ti serve un DPA con Stripe", quello resta a carico tuo, non del tuo sviluppatore di moduli.
Il principio che sta alla base di tutto
I dati del tuo cliente appartengono al cliente. Tu li detieni per gestire l'ordine. Quella singola frase riformula la maggior parte dei requisiti:
- Di' alle persone cosa raccogli e perché: nessun tracciamento silenzioso, nessun pixel di terze parti nascosto
- Raccogli solo ciò di cui l'ordine ha effettivamente bisogno. La data di nascita non serve a spedire un pacco
- Ottieni un consenso reale (opt-in) per tutto ciò che non è strettamente necessario
- Permetti alle persone di consultare, correggere, esportare e cancellare il proprio record su richiesta
- Proteggi ciò che detieni e non conservarlo più a lungo del necessario
Il GDPR si applica al Suo negozio?
Se spedisci a clienti dell'UE o il tuo sito è disponibile in una lingua dell'UE, chiedi a un consulente legale nella tua giurisdizione di valutare se il GDPR si applica. Abbiamo clienti con sede negli Stati Uniti che insistevano che il GDPR non li riguardasse, fino al loro primo ordine francese. Verifica con un consulente legale quando iniziano gli obblighi GDPR per il tuo negozio.
Smetti di cercare di cavartela con i ragionamenti. Il lavoro di conformità si sovrappone quasi interamente alla buona ingegneria: HTTPS, conservazione sensata, una UX del consenso decorosa, non raccogliere robaccia che non ti serve. La maggior parte di queste cose le avresti fatte comunque.
Cosa conta come dato personale in un database PrestaShop
Tutto ciò che può identificare una persona direttamente o in combinazione con altri dati. Per un negozio ciò significa: nome, email, telefono, indirizzo, cronologia degli ordini, hash della password, IP, fingerprint del browser, log comportamentali e cookie. La trappola in cui le persone cadono è "l'IP non è un dato personale". Lo è, nel momento in cui lo si può combinare con un timestamp e una sessione.
Sei basi giuridiche, di cui tre quelle che userà davvero
Il GDPR non ti consente di raccogliere dati "perché puoi". Ti serve una di sei giustificazioni. Per un negozio di e-commerce, tre di esse portano il 99% del carico:
- Contratto: per adempiere all'ordine. Indirizzo di spedizione, nome, email, dati di pagamento.
- Consenso: newsletter, marketing, cookie non essenziali. Deve essere un opt-in attivo, granulare e revocabile con la stessa facilità con cui è stato concesso.
- Obbligo legale: fatture, registri fiscali. Conservazione specifica per Paese (in genere 7-10 anni in tutta l'UE).
Il "legittimo interesse" viene invocato per la prevenzione delle frodi e i log di sicurezza di base. Le altre due (interesse vitale, interesse pubblico) non si applicano quasi mai a un negozio.
Cosa raccoglie realmente il Suo negozio PrestaShop, e dove risiede
Prima di poter descrivere cosa raccogli, devi saperlo. La maggior parte dei commercianti lo sottovaluta della metà. L'audit che eseguiamo su ogni negozio che prendiamo in carico passa in rassegna ciascuna categoria di tabelle qui sotto.
Account dei clienti
ps_customer contiene nome, cognome, email, hash della password, data di nascita e genere opzionali, i flag di newsletter e optin, la data di creazione dell'account, l'ultimo accesso, l'IP alla registrazione e i campi B2B (azienda, SIRET/APE). La maggior parte dei negozi chiede la data di nascita alla registrazione senza mai usarla. Se non stai conducendo campagne di compleanno, elimina il campo.
Ordini e indirizzi
Ogni ordine scrive su ps_orders, ps_order_detail, ps_order_payment, ps_order_history, ps_address, ps_order_carrier e ps_message. La sola ps_address può contenere dati postali completi, due numeri di telefono, ragione sociale, partita IVA e un documento d'identità nazionale (il campo dni, usato in Spagna e in alcuni altri Paesi).
Ospiti, connessioni, visualizzazioni di pagina: la tabella che esplode in silenzio
Anche i visitatori che non si registrano mai lasciano una traccia attraverso ps_guest, ps_connections, ps_connections_source, ps_connections_page, ps_page e ps_page_viewed. Su un negozio moderatamente trafficato abbiamo visto ps_connections raggiungere otto cifre di righe in un anno. L'IP più il comportamento di navigazione è un dato personale, e nessuno ci ha mai detto "sì, ne conserviamo deliberatamente tre anni". Si accumula e basta, perché niente lo svuota.
Carrelli
ps_cart riceve una riga nel momento in cui un visitatore mette qualcosa nel carrello, che proceda al checkout o meno. Collegato a un cliente o a un ospite, con le selezioni di prodotti, gli indirizzi e i timestamp. I carrelli abbandonati che si ricollegano a una persona reale sono dati personali. La maggior parte dei negozi non li ripulisce mai.
Newsletter, cookie, log del server, moduli di terze parti
ps_emailsubscription (o ps_newsletter sui negozi più datati) contiene email, date di iscrizione e talvolta l'IP. I cookie propri di PrestaShop sono funzionali (sessione, carrello, autenticazione admin) e non necessitano di consenso. I cookie che necessitano di consenso sono quelli che rilasciano i tuoi moduli di terze parti: GA, Meta Pixel, Hotjar, widget di chat, tag di retargeting. Anche i log di accesso di Apache/Nginx sono dati personali (IP + timestamp + URL). Verifica ogni modulo che crea tabelle proprie, recensioni, liste dei desideri, chat dal vivo, fidelizzazione, recupero carrelli, moduli di analytics. Se non sai quali tabelle ha creato un modulo, non puoi essere trasparente su ciò che raccogli.
Apri phpMyAdmin, filtra l'elenco delle tabelle per il prefisso del tuo modulo e controlla cosa c'è dentro. Lo facciamo su ogni negozio che verifichiamo e trova sempre qualcosa che il commerciante aveva dimenticato di aver installato.
Consenso ai cookie: dove la maggior parte dei negozi sbaglia ancora
Se verificassimo un negozio a caso domani, la violazione più probabile che troveremmo è il consenso ai cookie. O il banner è cosmetico (compare, ma GA si carica comunque), oppure le caselle sono pre-spuntate, oppure non c'è un controllo granulare. Questa è la parte che le autorità di controllo esaminano per prima, perché è la più facile da verificare con un ispettore del browser.
Cosa richiedono davvero ePrivacy + GDPR
- I cookie strettamente necessari (sessione, carrello, CSRF, autenticazione admin) non necessitano di consenso
- Tutto il resto (analytics, marketing, personalizzazione, social) necessita di un opt-in esplicito prima che il cookie venga impostato o lo script eseguito
- Il consenso deve essere libero, specifico (per categoria), informato e attivo
- La revoca del consenso deve essere facile quanto la sua concessione
Cosa non è un consenso valido
- "Continuando a navigare, accetti i cookie": il consenso implicito non è consenso
- Un banner con solo "OK": nessuna scelta reale
- Caselle pre-spuntate: deve essere opt-in, non opt-out
- I cookie wall ("accetta o lascia"): la maggior parte delle autorità di controllo dell'UE si è pronunciata contro questi
- Un banner che compare mentre gli script sono già stati eseguiti, puramente decorativo
Che aspetto ha un'implementazione funzionante
Lo schema di tag script che funziona davvero:
<!-- Invece di caricare Google Analytics direttamente: -->
<script src="https://www.googletagmanager.com/gtag/js?id=GA_ID"></script>
<!-- Caricarlo in modo condizionato in base al consenso: -->
<script type="text/plain" data-cookieconsent="statistics">
// Questo script viene eseguito solo dopo che l'utente ha acconsentito ai cookie statistici
(function(){ /* codice GA qui */ })();
</script>
type="text/plain" impedisce al browser di eseguire lo script. Dopo il consenso, il tuo gestore del consenso lo cambia in type="text/javascript" e lo esegue. Se il tuo "banner di consenso" non fa questo (se puoi vedere _ga negli Strumenti per sviluppatori prima di cliccare qualsiasi cosa) è difettoso.
Il problema di Google Analytics di cui nessuno parla onestamente
Se implementi il consenso correttamente, una frazione significativa di visitatori rifiuterà gli analytics e i tuoi numeri di GA caleranno. Quello è il risultato corretto. I dati che avevi prima erano raccolti senza base giuridica. Tre strade oneste da percorrere:
- Mantieni GA4 con un consenso corretto e accetta dati incompleti. Le tendenze funzionano ancora; i numeri assoluti no.
- Passa a Matomo o Plausible self-hosted configurati per funzionare senza cookie identificativi. Alcuni avvocati accettano il "nessun consenso necessario" sotto il legittimo interesse per questi, verifica con il tuo.
- Usa GA4 Consent Mode, che invia ping senza cookie in caso di rifiuto e modella la lacuna. Un compromesso, non una soluzione.
Il modulo ufficiale psgdpr rispetto alle CMP dedicate
PrestaShop include psgdpr, che aggiunge un banner di consenso, un flusso di esportazione/cancellazione dati rivolto al cliente e un registro del consenso. È un punto di partenza ragionevole. Non sempre blocca i cookie di terze parti prima del consenso (questo dipende da come il tuo tema e i tuoi moduli caricano gli script) e la UX del banner è essenziale. Per un piccolo negozio con GA e nient'altro, può essere sufficiente se i test confermano che il tracciamento è bloccato prima del consenso. Per un negozio con GA + Pixel + Hotjar + chat + retargeting + pixel di affiliazione, vorrai o il nostro Cookies Revolution, oppure una CMP dedicata come Cookiebot o CookieYes.
Qualunque cosa installi, mettila alla prova. Finestra di navigazione privata, Strumenti per sviluppatori aperti su Applicazione → Cookie, ricarica la home page. Se_ga,_fbpo qualsiasi cookie di tracciamento viene impostato prima di cliccare alcunché, l'implementazione non sta facendo il suo lavoro.
La Sua informativa sulla privacy
Questo è un documento legale. I modelli generici copiati da internet falliscono perché descrivono un negozio che non è il tuo. Il tuo deve indicare nominalmente i tuoi responsabili del trattamento, i tuoi periodi di conservazione e i tuoi specifici flussi di dati.
Cosa deve coprire (articoli 13 e 14 del GDPR)
- Chi sei tu: ragione sociale, sede legale, email di contatto per le richieste sulla privacy
- Il recapito del tuo DPO, se ne hai nominato uno
- Quali dati personali raccogli, suddivisi per categoria
- Perché raccogli ciascuna categoria: la finalità
- La base giuridica per categoria (contratto, consenso, legittimo interesse, obbligo legale)
- Con chi condividi i dati: pagamento, spedizione, email, analytics, hosting
- I trasferimenti internazionali e il meccanismo legale che li sostiene
- I periodi di conservazione per tipo di dato
- I diritti dell'interessato: accesso, rettifica, cancellazione, portabilità, opposizione, limitazione
- Come esercitare tali diritti
- Il diritto di reclamo a un'autorità di controllo
- Se la fornitura dei dati è necessaria per usare il servizio
- Eventuali processi decisionali automatizzati (la maggior parte dei negozi non ne ha)
- Informazioni sui cookie, o un collegamento a un'informativa sui cookie separata
Uno schema che può adattare
1. Chi Siamo
- Ragione sociale, numero di registrazione, indirizzo
- Email di contatto per le questioni di privacy
2. Quali Dati Raccogliamo
- Dati di registrazione dell'account (nome, email, password)
- Dati dell'ordine (indirizzo di spedizione, indirizzo di fatturazione, contenuto dell'ordine)
- Dati di pagamento (nota: non conserviamo i numeri delle carte: lo fa il nostro processore di pagamento)
- Dati di comunicazione (messaggi del modulo di contatto, messaggi dell'ordine)
- Dati tecnici (indirizzo IP, tipo di browser, cookie)
- Iscrizione alla newsletter (indirizzo email)
3. Perché Li Raccogliamo (Finalità e Base Giuridica)
- Per elaborare i tuoi ordini (contratto)
- Per creare e gestire il tuo account (contratto)
- Per inviare conferme d'ordine e aggiornamenti di spedizione (contratto)
- Per inviare email di marketing (consenso: puoi annullare l'iscrizione in qualsiasi momento)
- Per migliorare il nostro sito web (legittimo interesse / consenso per i cookie di analytics)
- Per adempiere alle leggi fiscali e contabili (obbligo legale)
- Per prevenire le frodi (legittimo interesse)
4. Con Chi Condividiamo i Tuoi Dati
- Processore di pagamento: [Nome]: elabora i pagamenti con carta
- Corriere di spedizione: [Nome]: riceve l'indirizzo di consegna e il numero di telefono
- Servizio email: [Nome]: invia email transazionali e di marketing
- Analytics: [Nome]: statistiche di utilizzo del sito web
- Fornitore di hosting: [Nome]: conserva tutti i dati del sito web
5. Trasferimenti Internazionali
- [Elenca qualsiasi servizio che trasferisce dati al di fuori dell'UE/SEE]
- Garanzie predisposte (EU-US Data Privacy Framework, Clausole Contrattuali Standard)
6. Per Quanto Tempo Conserviamo i Tuoi Dati
- Dati dell'account: fino alla richiesta di cancellazione o alla scadenza del periodo di conservazione per inattività, con anonimizzazione dei record collegati agli ordini
- Dati dell'ordine: [X] anni (requisito legale per le fatture)
- Dati dei carrelli abbandonati: [X] mesi
- Dati di analytics: [X] mesi
- Log del server: [X] giorni
7. I Tuoi Diritti
- Accesso, rettifica, cancellazione, portabilità, opposizione, limitazione
- Come esercitarli (email, impostazioni dell'account, modulo GDPR)
- Diritto di reclamo a [l'autorità di controllo del tuo Paese]
8. Cookie
- [Riepilogo o collegamento all'informativa sui cookie]
9. Modifiche a Questa Informativa
- Ultimo aggiornamento: [data]
10. Come contattarci
- Email per le richieste sulla privacy
Dove collegarla
Piè di pagina (ogni pagina), modulo di registrazione, checkout, modulo di contatto, iscrizione alla newsletter e il banner dei cookie. In PrestaShop di solito si crea l'informativa come pagina CMS (Design → Pagine) e la si rende visibile tramite il widget dei link o il piè di pagina del tuo tema.
I diritti del cliente sui dati
Il tuo cliente può chiedere i propri dati, chiederti di correggerli, chiederti di cancellarli o chiederli in un formato portabile. Devi rispondere senza ingiustificato ritardo e al più tardi entro un mese dal ricevimento della richiesta.
Diritto di accesso: esportazione dei dati
Non solo la pagina del loro account. Tutto: ordini, indirizzi, registri del consenso, messaggi, stato della newsletter e qualunque cosa i tuoi moduli abbiano memorizzato. Il modulo psgdpr aggiunge un pulsante nella pagina dell'account che genera un PDF/CSV dalle tabelle del core di PrestaShop. Se lo stai facendo a mano:
-- Ottieni tutti i dati di un cliente specifico
SELECT * FROM ps_customer WHERE id_customer = {ID};
SELECT * FROM ps_address WHERE id_customer = {ID};
SELECT * FROM ps_orders WHERE id_customer = {ID};
SELECT * FROM ps_cart WHERE id_customer = {ID};
SELECT * FROM ps_message WHERE id_customer = {ID};
SELECT * FROM ps_customer_message WHERE id_customer = {ID};
-- Non dimenticare le tabelle specifiche dei moduli
SELECT * FROM ps_emailsubscription WHERE email = '{EMAIL}';
-- Controlla qualsiasi altra tabella di moduli che memorizza dati dei clienti
Diritto alla cancellazione: diritto all'oblio
Non è assoluto. Puoi rifiutare laddove tu abbia un obbligo legale di conservare il record (le fatture a fini fiscali, in genere 5-10 anni in tutta l'UE) o una controversia legale in corso. In pratica ciò significa un mix di cancellare, anonimizzare e conservare:
- Cancellare: gli indirizzi inutilizzati, i carrelli abbandonati, l'iscrizione alla newsletter, i record degli ospiti, la lista dei desideri, le recensioni. Anonimizzare il record del cliente quando è collegato agli ordini.
- Anonimizzare: gli ordini, sostituisci i campi personali con "Cliente Cancellato", mantieni il record finanziario per la contabilità
- Conservare: le fatture, con i dettagli del cliente anonimizzati sulla copia rivolta al cliente, il record completo conservato a fini fiscali
Approccio manuale se non puoi usare un modulo:
-- Anonimizza il record del cliente (non eliminarlo con DELETE: gli ordini collegati si romperebbero)
UPDATE ps_customer SET
firstname = 'Deleted',
lastname = 'Customer',
email = CONCAT('deleted_', id_customer, '@anonymous.invalid'),
passwd = '',
birthday = '0000-00-00',
phone = '',
optin = 0,
newsletter = 0,
deleted = 1,
active = 0
WHERE id_customer = {ID};
-- Anonimizza gli indirizzi non collegati a ordini consegnati
UPDATE ps_address SET
firstname = 'Deleted',
lastname = 'Customer',
address1 = 'Deleted',
address2 = '',
postcode = '00000',
city = 'Deleted',
phone = '',
phone_mobile = '',
other = '',
company = '',
vat_number = '',
dni = '',
deleted = 1
WHERE id_customer = {ID}
AND id_address NOT IN (
SELECT id_address_delivery FROM ps_orders WHERE id_customer = {ID}
UNION
SELECT id_address_invoice FROM ps_orders WHERE id_customer = {ID}
);
-- Elimina i carrelli abbandonati (non convertiti in ordini)
DELETE FROM ps_cart_product
WHERE id_cart IN (
SELECT id_cart FROM ps_cart
WHERE id_customer = {ID}
AND id_cart NOT IN (SELECT id_cart FROM ps_orders)
);
DELETE FROM ps_cart
WHERE id_customer = {ID}
AND id_cart NOT IN (SELECT id_cart FROM ps_orders);
-- Rimuovi l'iscrizione alla newsletter
DELETE FROM ps_emailsubscription WHERE email = '{ORIGINAL_EMAIL}';
Esegui sempre prima un backup, esegui sempre la versione SELECT di ogni query e controlla il conteggio delle righe, esegui sempre i test su staging. Anonimizza laddove le righe sono collegate agli ordini. Abbiamo ripulito abbastanza cancellazioni manuali andate storte da poter sostenere ogni parola scritta qui.
Diritto alla portabilità
Un'esportazione leggibile da una macchina (JSON o CSV) affinché l'interessato possa portarla altrove. L'esportazione di psgdpr lo copre. Se lo stai facendo manualmente, lo stesso insieme di query del diritto di accesso, formattato come CSV o JSON.
Diritto di rettifica
Il più semplice. I clienti possono gestire la maggior parte di queste cose in autonomia dalla pagina del loro account. Se ti scrivono via email, correggilo nel back office. Fatto.
Gestire il processo
- Verifica l'identità: la stessa email dell'account, o una corrispondenza del nome reale sul record del cliente. Abbiamo visto tentativi di acquisizione tramite email di "diritto alla cancellazione".
- Registralo: chi ha chiesto, quando, cosa voleva
- Rispondi entro un mese: prorogabile di altri due mesi nei casi complessi, ma devi avvisarli entro il primo mese
- Soddisfa la richiesta o rifiutala con una motivazione documentata: ad esempio "anonimizzeremo tutto tranne le fatture, conservate per obbligo legale per 7 anni"
- Conferma il completamento per iscritto
Gestione del consenso
Modulo di registrazione
Casella di consenso all'informativa sulla privacy non spuntata, con il collegamento all'informativa. Non pre-spuntata. Non abbinata al consenso alla newsletter. Quelli sono consensi separati per finalità separate.
Newsletter
Opt-in attivo, chiaro su ciò a cui ci si sta iscrivendo, con annullamento dell'iscrizione facile in ogni email. Controlla il template del blocco newsletter del tuo tema, i temi più datati includono una casella pre-spuntata che devi sbloccare manualmente.
Consenso al marketing / alla pubblicità
Se invii liste di email a Facebook Custom Audiences o simili, quella è una finalità distinta e necessita di un proprio opt-in. Il consenso dell'informativa sulla privacy non lo copre.
Conservare le ricevute
Devi essere in grado di dimostrare che il consenso è stato dato. Chi, quando, per cosa, come e quale versione dell'informativa era in vigore. psgdpr tiene un registro. Se stai realizzando la tua soluzione:
CREATE TABLE ps_gdpr_consent_log (
id_consent_log INT AUTO_INCREMENT PRIMARY KEY,
id_customer INT DEFAULT NULL,
customer_email VARCHAR(255) NOT NULL,
consent_type VARCHAR(50) NOT NULL, -- 'privacy_policy', 'newsletter', 'marketing'
consent_given TINYINT(1) NOT NULL, -- 1 = dato, 0 = revocato
ip_address VARCHAR(45) DEFAULT NULL,
date_add DATETIME NOT NULL,
request_details TEXT DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Conservazione: per quanto tempo può tenerli?
Il GDPR dice "non più a lungo del necessario". Non ti fornisce numeri specifici, li definisci tu, li documenti e vi ti attieni. Per le pulizie ricorrenti, Database Cleanup può occuparsi delle tabelle PrestaShop che tendono a superare la propria finestra di conservazione. I nostri valori predefiniti nei negozi che gestiamo:
- Account attivi: finché sono attivi. Consideriamo inattivi 24-36 mesi senza un accesso o un acquisto.
- Account inattivi: email di riattivazione, poi anonimizzazione se non c'è risposta entro 30 giorni.
- Dati degli ordini: il periodo di conservazione fiscale nel tuo Paese (in genere 5-10 anni in tutta l'UE). Anonimizza i campi personali, conserva il record finanziario.
- Fatture: il periodo previsto per legge, punto.
- Carrelli abbandonati: 6-12 mesi al massimo. Non c'è alcun motivo commerciale per conservarli più a lungo.
- Ospiti / connessioni: 6 mesi.
ps_connectionsè la tabella che fa più male se tu te ne dimentichi. - Iscritti alla newsletter: finché non annullano l'iscrizione. Riconferma periodicamente gli iscritti inattivi da tempo.
- Log del server: 30-90 giorni, con una rotazione aggressiva.
- Registri del consenso: almeno per la durata del consenso (di solito un minimo di 12 mesi).
L'SQL di pulizia che eseguiamo davvero
-- Elimina i record degli ospiti più vecchi di 6 mesi
DELETE FROM ps_guest
WHERE id_guest NOT IN (SELECT id_guest FROM ps_cart WHERE id_cart IN (SELECT id_cart FROM ps_orders))
AND id_guest IN (
SELECT g.id_guest FROM ps_guest g
INNER JOIN ps_connections c ON c.id_guest = g.id_guest
GROUP BY g.id_guest
HAVING MAX(c.date_add) < DATE_SUB(NOW(), INTERVAL 6 MONTH)
);
-- Elimina i vecchi record di connessione (mantiene le statistiche ma rimuove i dati collegati all'IP)
DELETE FROM ps_connections_source
WHERE id_connections IN (
SELECT id_connections FROM ps_connections
WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH)
);
DELETE FROM ps_connections_page
WHERE id_connections IN (
SELECT id_connections FROM ps_connections
WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH)
);
DELETE FROM ps_connections
WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH);
-- Elimina i carrelli abbandonati più vecchi di 12 mesi (non convertiti in ordini)
DELETE cp FROM ps_cart_product cp
INNER JOIN ps_cart c ON cp.id_cart = c.id_cart
WHERE c.date_add < DATE_SUB(NOW(), INTERVAL 12 MONTH)
AND c.id_cart NOT IN (SELECT id_cart FROM ps_orders);
DELETE FROM ps_cart
WHERE date_add < DATE_SUB(NOW(), INTERVAL 12 MONTH)
AND id_cart NOT IN (SELECT id_cart FROM ps_orders);
-- Pulisci le vecchie statistiche di visualizzazione delle pagine (dati aggregati anonimi: priorità più bassa)
DELETE FROM ps_page_viewed
WHERE date_add < DATE_SUB(NOW(), INTERVAL 12 MONTH);
Avvolgi qualsiasi DELETE in una SELECT prima e controlla il conteggio delle righe prima di eseguirlo. Eseguilo mensilmente nelle ore di minore traffico tramite cron. Esegui sempre prima un backup. La prima volta che dimentichi la clausola WHERE è l'ultima volta che la dimenticherai.
# Esempio di voce crontab: viene eseguita alle 3 del mattino il 1° di ogni mese
0 3 1 * * /usr/bin/php /path/to/your/store/scripts/gdpr-cleanup.php >> /var/log/gdpr-cleanup.log 2>&1
Lo script dovrebbe scrivere cosa ha eliminato e quando. Quel log fa parte della tua traccia documentale di responsabilizzazione.
Responsabili del trattamento di terze parti
Il tuo negozio non opera in isolamento. Ogni fornitore a cui invii dati dei clienti è un responsabile del trattamento che agisce per tuo conto, e ti serve un accordo sul trattamento dei dati con ciascuno di essi.
I responsabili del trattamento che ha un tipico negozio PrestaShop
- Pagamento: Stripe, PayPal, Adyen, Mollie
- Corrieri: DHL, UPS, DPD, poste nazionali locali
- Email marketing: Mailchimp, Brevo, Klaviyo
- Analytics: GA, Matomo, Plausible
- Hosting: il tuo VPS, server dedicato o provider cloud
- CDN / WAF: Cloudflare, Sucuri
- Strumenti di assistenza: Zendesk, Freshdesk
- Pixel di marketing: Meta, TikTok, Pinterest
- ERP / contabilità: qualunque cosa importi gli ordini nel tuo back office
I DPA
Ciascuno di essi necessita di un DPA firmato. La buona notizia: i grandi provider hanno tutti versioni preconfezionate che puoi accettare all'interno della loro dashboard.
- Stripe: incorporato nelle loro Condizioni di Servizio
- PayPal: nei loro documenti legali
- Google: Data Processing Amendment, interruttore nell'amministrazione di GA
- Mailchimp: DPA standard sulla loro pagina legale
- Brevo: DPA nelle condizioni o su richiesta
- Cloudflare: DPA nella loro documentazione sull'affidabilità
Accettali, conservane le copie, archiviale in un luogo dove tu possa trovarle in caso di audit. Noi usiamo una cartella condivisa per ogni negozio, con un PDF per fornitore.
Trasferimenti internazionali
Se un responsabile del trattamento è al di fuori dell'UE/SEE (e la maggior parte dell'elenco SaaS qui sopra ha sede negli Stati Uniti) ti serve un meccanismo legale per il trasferimento. Attualmente:
- EU-US Data Privacy Framework: aziende statunitensi che si sono certificate. Verifica su dataprivacyframework.gov.
- Clausole Contrattuali Standard: il testo standard approvato dalla Commissione UE. La maggior parte dei grandi provider le include nei propri DPA.
- Decisioni di adeguatezza: Regno Unito, Canada, Giappone, Corea del Sud, Svizzera e una manciata di altri.
Elenca ogni trasferimento nella tua informativa sulla privacy con il Paese e il meccanismo.
Quando qualcosa fuoriesce: la procedura per le violazioni
Una "violazione dei dati" ai sensi del GDPR non è soltanto "ci hanno hackerato". È qualsiasi incidente che comporti la distruzione, la perdita, la modifica, la divulgazione o l'accesso accidentali o illeciti, quindi un'esportazione di ordini inviata al destinatario sbagliato, un bucket di backup mal configurato, un portatile rubato, una query di un dipendente disonesto o un ransomware che ti blocca fuori dai record dei clienti, tutto questo rientra nella definizione.
L'orologio delle 72 ore
Se è probabile che la violazione incida sui diritti degli interessati, devi notificarla alla tua autorità di controllo entro 72 ore dal momento in cui ne vieni a conoscenza. Se il rischio è elevato, devi notificarla anche alle persone interessate senza ingiustificato ritardo. "Venire a conoscenza" significa il momento in cui hai ragionevolmente concluso che si è verificata una violazione, e ci si aspetta che tu disponga di un monitoraggio per far arrivare in fretta quel momento.
Cosa va in una notifica di violazione
- La natura della violazione
- Le categorie e il numero approssimativo di interessati coinvolti
- Le categorie e il numero approssimativo di record coinvolti
- Il recapito del DPO o il punto di contatto principale
- Le probabili conseguenze
- Le misure adottate o proposte
Abbia il piano prima di averne bisogno
- Individua la tua autorità di controllo: CNIL (Francia), ICO (Regno Unito), UODO (Polonia), BfDI (Germania), Garante (Italia), AEPD (Spagna) e così via
- Aggiungi ai preferiti il loro modulo di notifica delle violazioni
- Redigi adesso un modello di notifica: per l'autorità e per i clienti interessati
- Documenta ogni incidente, anche quelli per cui decidi che non era necessario notificarli. Il ragionamento è esso stesso richiesto dal GDPR.
- Sappi chi indaga, chi applica le patch, chi comunica
Un attacco bloccato senza alcuna perdita di dati è un incidente, non una violazione. Registralo comunque, dimostra che il monitoraggio esiste.
Gli errori che vediamo più spesso
Attraverso gli audit che abbiamo eseguito sui negozi PrestaShop, ricorrono le stesse dieci cose.
1. Caselle di consenso pre-spuntate
La casella della newsletter al checkout o alla registrazione pre-spuntata. Cerca nei template del tuo tema checked o checked="checked" su qualsiasi campo di input relativo al consenso. Deselezionala.
2. Nessun modo per cancellare un account
Pronto all'uso, PrestaShop non consente a un cliente di gestire in autonomia la cancellazione dell'account. Installa psgdpr, il nostro modulo per la privacy del cliente, oppure realizza un tuo pulsante nella pagina Il mio account.
3. Accumulare dati per sempre
Nessuna policy di conservazione. Righe di ps_connections dal 2019. Carrelli abbandonati tre anni fa ancora lì. Definisci le finestre di conservazione e automatizza la pulizia.
4. Base tecnica debole
L'articolo 32 del GDPR richiede "misure tecniche e organizzative adeguate". Una base di hardening documentata, che sia manuale o imposta tramite Security Revolution, fa parte del dimostrare che quelle garanzie esistono. I fallimenti che vediamo:
- Nessun HTTPS: non c'è scusa per questo nel 2026
- Account admin con password deboli o condivise tra il personale
- Versioni di PrestaShop indietro di anni rispetto alle patch di sicurezza
- Moduli con CVE note ancora installati
- Nessun backup, oppure backup in una directory leggibile pubblicamente
- Hosting condiviso con uno scarso isolamento tra i clienti
- FTP al posto di SFTP: credenziali in chiaro
5. Google Analytics che si attiva prima del consenso
Il classico. Il banner compare, GA è già caricato. Il banner è teatro.
6. Banner dei cookie cosmetico
Il banner esiste, gli script vengono eseguiti comunque. Apri gli Strumenti per sviluppatori e osserva la scheda Rete mentre la pagina si carica, se Pixel e GA si attivano prima di qualsiasi clic, il banner è decorazione.
7. Informativa sulla privacy mancante o generica
Copia-incolla di un modello con i segnaposto non compilati, o che nomina responsabili del trattamento che il negozio non usa realmente. L'informativa deve descrivere il tuo negozio.
8. Nessun registro del consenso
"Dimostra che questo cliente ha acconsentito alle email di marketing", e non c'è nulla da mostrare. O il registro di psgdpr, o il registro del nostro Cookies Revolution, o la tua tabella del consenso.
9. Verificare solo il core, ignorando i moduli
Recensioni, liste dei desideri, recupero dei carrelli abbandonati, chat dal vivo, ciascuno di essi memorizza dati personali, ciascuno di essi deve essere nella tua informativa sulla privacy e nella tua pulizia per la conservazione.
10. Nessun DPA
Stripe, GA, Mailchimp, Cloudflare in uso, zero DPA firmati in archivio. Dedica un'ora, accettali tutti, archivia i PDF.
La checklist
Affrontala una volta, poi rivisitala trimestralmente.
Fondamenta legali
- Informativa sulla privacy redatta, pubblicata, specifica per questo negozio
- Collegata dal piè di pagina, dalla registrazione, dal checkout, dal modulo di contatto
- Informativa sui cookie (pagina o sezione separata)
- Le Condizioni Generali fanno riferimento all'informativa sulla privacy
- DPA firmati con ogni responsabile del trattamento
- Registro delle attività di trattamento (ROPA) mantenuto aggiornato
- DPO nominato se richiesto (di solito solo per trattamenti su larga scala o sensibili)
Consenso
- Registrazione: casella dell'informativa sulla privacy non spuntata
- Newsletter: opt-in attivo separato
- Marketing: separato dal consenso all'informativa sulla privacy
- Il banner dei cookie blocca i cookie non essenziali prima del consenso
- Scelta granulare: accetta tutti / rifiuta tutti / personalizza
- Revocabile da un collegamento persistente nel piè di pagina
- Registro del consenso con timestamp, interessato, tipo, versione
Diritti del cliente
- I clienti possono esportare i propri dati
- I clienti possono richiedere la cancellazione dell'account
- I clienti possono correggere i propri dati
- Esportazione portabile (leggibile da una macchina) disponibile
- Processo di risposta entro 30 giorni documentato
- Verifica dell'identità su ogni richiesta
- psgdpr o equivalente installato e testato
Gestione dei dati
- Periodi di conservazione definiti per categoria di dati
- Pulizia automatizzata per le tabelle ospiti/connessioni
- Pulizia automatizzata per i carrelli abbandonati
- Rotazione dei log del server predisposta
- Account inattivi gestiti
- Tutte le posizioni dei dati documentate (DB, file, terze parti)
Sicurezza
- HTTPS imposto
- PrestaShop su una versione supportata con le patch di sicurezza applicate
- Moduli aggiornati
- Password admin robuste (e 2FA dove supportato)
- Directory dell'admin rinominata
- Backup configurati, testati, conservati fuori dalla web root
- Solo SFTP/SSH
- Permessi dei file sensati (nessun 777)
- Accesso al database limitato
Preparazione alle violazioni
- Autorità di controllo individuata
- Modello di notifica redatto
- Contatto designato per gli incidenti
- Monitoraggio (log, rilevamento delle intrusioni) predisposto
Terze parti
- Ogni responsabile del trattamento elencato
- DPA in archivio per ciascuno
- Trasferimenti internazionali documentati con base giuridica
- Responsabili del trattamento nominati nell'informativa sulla privacy
- Analytics e pixel di marketing subordinati al consenso
Onestà conclusiva
Le autorità di controllo non cercano la perfezione. Cercano un impegno genuino e una pratica ragionevole. Un negozio con un'informativa sulla privacy reale, un consenso funzionante, regole di conservazione e un processo per le richieste degli interessati è in una posizione solida, anche se non ogni caso limite è coperto. Ciò che viene sanzionato è la negligenza: i negozi che ignorano le richieste, accumulano dati di cui non hanno bisogno e gestiscono banner cosmetici che non fanno nulla.
Scegli la checklist qui sopra. Affrontala nel corso delle prossime settimane. Rivisitala trimestralmente. Questa è la conformità nella pratica, documentazione più ingegneria, nessuna delle due da sola.
Lo abbiamo detto due volte e lo diremo ancora una volta: questo è il complemento, sul versante dello sviluppo, di una conversazione con un avvocato specializzato in protezione dei dati. I pezzi tecnici (la subordinazione del consenso, le pulizie per la conservazione, i flussi di cancellazione, il logging di audit) possiamo distribuirli noi. La formulazione del DPA, il ROPA, la notifica delle violazioni, le decisioni sulla base giuridica e la necessità o meno di un DPO sono compiti per un consulente legale nella tua giurisdizione.
Letture correlate
- Cookies Revolution: il nostro modulo per il consenso: blocca gli script prima del consenso, categorie granulari, interfaccia di revoca, registro del consenso
- Lightweight Cookie Banner: banner minimale per i negozi che non hanno bisogno della CMP completa
- Delete Orders: eliminazione massiva degli ordini per la pulizia e il lavoro sul diritto alla cancellazione
- Customer Extra Info & IP Ban: contesto sui dati IP e cosa farci
- Hardening della Sicurezza di PrestaShop: la base tecnica dell'articolo 32
- Recapitabilità delle Email in PrestaShop: rendere conformi le email transazionali e di marketing
- Backup e Disaster Recovery di PrestaShop: conservazione, archiviazione off-site, prove di ripristino
- GDPR e Conformità ai Cookie per PrestaShop: Cosa Le Serve Davvero
Domande correlate
- Blog Revolution per PrestaShop supporta commenti e GDPR?
- Database Cleanup può pianificare pulizie automatiche PrestaShop con cron?
- Il tracking Meta Pixel può rispettare il consenso cookie in PrestaShop?
- Come pulisco vecchi carrelli, log e statistiche da un database PrestaShop?
- Il cookie banner supporta Google Consent Mode v2?