L’articolo 17 GDPR: un obbligo semplice da formulare, complesso da eseguire
“Il cliente può chiedere la cancellazione dei suoi dati”. La frase è lapidaria nell’articolo 17 del GDPR. La sua messa in opera su un negozio PrestaShop o WooCommerce con 5 anni di esistenza è tutto fuorché semplice. Perché una “cancellazione di account” ben fatta deve navigare tra quattro requisiti contraddittori:
- Il diritto all’oblio del cliente (GDPR articolo 17).
- L’obbligo di conservazione contabile di 10 anni (art. 2220 c.c.).
- La tracciabilità fiscale delle vendite (DPR 600/73, fatture elettroniche SdI).
- Il diritto di risposta a un eventuale contenzioso (Codice del consumo, garanzie legali fino a 2 anni dopo l’acquisto, allungabili a 5 per certi prodotti).
La posta in gioco pratica: un modulo che cancella tutto brutalmente mette l’impresa in infrazione contabile. Un modulo che non cancella nulla mette l’impresa in infrazione GDPR (sanzione fino al 4% del fatturato mondiale). La buona pratica è la pseudonimizzazione selettiva — cancellare ciò che non è necessario a un obbligo legale, conservare il resto sotto una forma non riconducibile a una persona identificata.
Cosa dice esattamente l’articolo 17 GDPR
L’articolo 17.1 elenca sei motivi che giustificano la richiesta di cancellazione:
- I dati non sono più necessari alla finalità per cui sono stati raccolti.
- La persona revoca il consenso e non esiste altro fondamento giuridico.
- La persona si oppone al trattamento e non esiste motivo legittimo cogente.
- I dati hanno costituito oggetto di un trattamento illecito.
- I dati devono essere cancellati per rispettare un obbligo legale.
- I dati sono stati raccolti nell’ambito dell’offerta di servizi a un minore.
Ma l’articolo 17.3 prevede cinque eccezioni che si applicano frequentemente all’e-commerce:
- Esercizio della libertà di espressione e di informazione.
- Rispetto di un obbligo legale (ad esempio: conservazione contabile).
- Motivo di interesse pubblico nel campo della sanità pubblica.
- Fini archivistici, ricerca scientifica o storica, statistiche.
- Constatazione, esercizio o difesa di diritti in sede giudiziaria.
L’eccezione (b) — obbligo legale — è quella che si applica ai dati contabili. Ma non copre tutti i dati di un account cliente: solo quelli strettamente necessari alla tenuta della contabilità e al rispetto della durata di conservazione (10 anni).
Cartografare i dati di un account cliente
Su un negozio PrestaShop con 5 anni di storico, un account cliente contiene tipicamente:
| Categoria di dato | Esempi | Cancellazione articolo 17 | Conservazione legale |
|---|---|---|---|
| Identificazione | nome, cognome, email, telefono | Pseudonimizzare | 10 anni (contabilità) |
| Indirizzi | consegna, fatturazione | Conservare indirizzo di fatturazione, cancellare consegna vecchia | 10 anni per fatturazione |
| Ordini | numero, data, importi, item | Conservare | 10 anni (contabilità) + 2 anni (garanzia legale) |
| Pagamenti | token Stripe/PayPal, ultime cifre | Cancellare se non più usati | Nessun obbligo, ma utile per contenzioso |
| Password | hash bcrypt | Cancellare immediatamente | Nessuna |
| Preferenze | newsletter, marketing, cookie | Cancellare | Nessuna (salvo prova di consenso utile 3 anni) |
| Storico di navigazione | log visite, carrelli abbandonati | Cancellare | Nessuna |
| Recensioni e commenti | recensioni prodotti, messaggi SAV | Anonimizzare (“Cliente anonimo”) | Variabile secondo visualizzazione pubblica |
| Programma fedeltà | punti, status | Cancellare | Nessuna |
| Wishlist | prodotti preferiti | Cancellare | Nessuna |
La regola di smistamento: questo dato è necessario alla traccia contabile o a un eventuale contenzioso? Se sì, si conserva sotto forma pseudonimizzata. Se no, si cancella.
Pseudonimizzazione: il meccanismo centrale
Pseudonimizzare non è anonimizzare. La differenza è giuridica e tecnica:
- Anonimizzazione: soppressione irreversibile del legame tra il dato e la persona. Il dato non può più essere ricondotto. L’anonimizzazione fa uscire il dato dal perimetro GDPR.
- Pseudonimizzazione: sostituzione degli identificativi diretti con uno pseudonimo, ma il legame resta teoricamente ricostruibile (ad esempio tramite una tabella di corrispondenza cifrata). Il dato resta nel perimetro GDPR, ma il trattamento è considerato meno rischioso.
Per l’e-commerce, si mira generalmente a una pseudonimizzazione forte che si avvicina a un’anonimizzazione pratica:
customer.firstname→"Cliente"customer.lastname→"#" + id_customer(es."#42851")customer.email→"deleted-" + id_customer + "@invalid"(prefisso speciale, dominio non valido)customer.phone→ NULLcustomer.passwd→ byte casuali (account effettivamente inutilizzabile)customer.note→ NULLaddress.firstname,address.lastnamesu indirizzi vecchi → pseudonimoaddress.firstname,address.lastnamesull’indirizzo di fatturazione degli ordini esistenti → conservare (necessario alla fattura)
La chiave è nella sfumatura: si tiene la fattura così come è stata emessa (obbligo contabile), ma si cancella tutto ciò che non serve più.
Architettura di un modulo di cancellazione conforme
Un modulo serio per PrestaShop come DfAccountDelete implementa cinque strati:
Strato 1 — Identificazione della richiesta
Tre canali possibili:
- Pulsante nell’area cliente — “Cancella il mio account” accessibile da “Le mie informazioni”. UX del self-service.
- Form di richiesta — per i vecchi clienti che non possono più connettersi. Verifica d’identità tramite email con link di conferma.
- Richiesta al DPO/contatto GDPR — tramite email o posta, trattata manualmente con riconduzione nel sistema.
Strato 2 — Verifica d’identità
Prima della cancellazione, si verifica che la persona sia veramente titolare dell’account. Per i clienti connessi: il fatto di essere connessi + inserimento della password o validazione tramite email (magic link bis). Per i clienti non connessi: invio di un’email di conferma con un link di validazione single-use a durata limitata (1 ora tipicamente). Per le richieste per posta: copia di un documento d’identità conservata 1 anno poi distrutta.
Strato 3 — Termine di riflessione
Opzionale ma consigliato: un termine di 7-30 giorni tra la richiesta e l’esecuzione effettiva. L’utente riceve un’email “la tua richiesta sarà trattata il [data], clicca qui per annullare”. Questo evita le cancellazioni accidentali e i ripensamenti. È una buona pratica indicata dal Garante Privacy.
Strato 4 — Esecuzione della pseudonimizzazione
Il modulo esegue in transazione MySQL atomica:
- Pseudonimizza
ps_customer(nome, email, telefono, ecc.). - Pseudonimizza gli
ps_addressnon collegati a ordini finalizzati. - Cancella
ps_cartabbandonati,ps_compare,ps_wishlist. - Cancella le voci del programma fedeltà, alert prezzi, alert stock.
- Anonimizza le recensioni pubbliche (
"Cliente anonimo") o le cancella secondo la policy. - Cancella i log di sessione, token magic link, carrelli salvati.
- Cancella le iscrizioni newsletter (e propaga a Mailchimp, Brevo tramite API se collegati).
- Marca l’account come cancellato (
active=0,deleted=1,deleted_at= now). - Conserva intatti ordini, fatture, note di credito (
ps_orders,ps_order_invoice,ps_order_slip).
Strato 5 — Audit log e notifica
Una voce in un journal di audit GDPR:
- Data della richiesta, data dell’esecuzione.
- Email d’origine (prima della pseudonimizzazione).
- ID cliente.
- Metodo di verifica d’identità.
- Lista delle tabelle toccate e numero di righe modificate.
Questo log è conservato 3 anni (durata consigliata dal Garante per dimostrare la conformità). Serve in caso di ispezione del Garante o di richiesta della persona (“hai veramente cancellato i miei dati?”).
Un’email di conferma viene inviata all’indirizzo d’origine, con menzione che i dati sono stati cancellati salvo quelli necessari alla contabilità (trasparenza articolo 12 GDPR).
Il ponte con la contabilità: cosa va assolutamente preservato
Come spiegato in il nostro articolo sulla conformità contabile e-commerce italiana, alcuni dati sono necessari alla produzione di libri contabili e fatture elettroniche conformi:
- Identificazione del cliente sulla fattura emessa (nome + indirizzo di fatturazione al momento dell’emissione, codice fiscale o partita IVA per le fatture B2B). Ma non c’è bisogno che questo nome resti sempre rintracciabile dalla base clienti viva — è nella fattura elettronica XML archiviata e in
ps_orders. - Importi imponibili, IVA, spedizione, totale IVA inclusa — dati contabili puri, da conservare intatti.
- Data dell’ordine, della fattura, del pagamento — idem.
- Metodo di pagamento (Stripe, PayPal, Satispay, bonifico) — utile per la riconciliazione bancaria.
Il pattern pratico: si pseudonimizza ps_customer, ma si lasciano ps_orders.firstname, ps_orders.lastname, ps_orders.email tali quali erano al momento dell’ordine. È quello che appare sulla fattura emessa. La fattura è la registrazione contabile, immutabile. L’account cliente è un aggregato vivo, che si può anonimizzare.
Su PrestaShop, questa logica è facilitata dal fatto che la fattura è gestita da ps_order_invoice con i suoi campi propri (il nome non è solo riferito da id_customer, è anche congelato nell’ordine). Su WooCommerce, è più delicato: gli order WC memorizzano il customer ID e ricostruiscono le info al display. Bisogna quindi congelare il nome e l’indirizzo di fatturazione sull’order al momento della pseudonimizzazione, altrimenti la fattura rigenerata mostra “Cliente anonimo”.
Le recensioni e i commenti: un caso a parte
Una recensione prodotto mostrata pubblicamente con il nome del cliente è un dato personale (articolo 4 GDPR). La sua cancellazione su richiesta pone due problemi:
- Il contenuto della recensione ha un valore per gli altri clienti (informazione al consumatore).
- Lo storico delle recensioni serve alla media di valutazione.
La risoluzione giuridica standard: anonimizzare il nome (“Cliente anonimo” o “C.A.”), conservare il contenuto della recensione e la nota. È un trattamento statistico ai sensi dell’articolo 17.3.d. Se il cliente chiede esplicitamente la cancellazione completa della recensione (“non voglio più che questo testo esista”), allora si cancella interamente, ma si può rivalutare la media senza il dato perso.
Questa sfumatura deve essere presentata all’utente nel form: “Vuoi cancellare le tue recensioni o renderle anonime?”.
Casi particolari difficili
Account cliente con un contenzioso in corso
Se un ordine è in contenzioso (reso bloccato, contestazione, azione in garanzia), la cancellazione dei dati del cliente compromette la difesa dell’impresa. L’articolo 17.3.e copre questo caso: si può rifiutare la cancellazione fino alla risoluzione del contenzioso, informando il cliente di questa ragione. La conservazione si fa sotto status “in contenzioso”, con accesso limitato.
Account B2B con multi-utenti
Su un account B2B con più utenti, la cancellazione dell’account di un utente non deve cancellare la società. Si cancella l’utente (che ha un diritto individuale), si conservano gli ordini a nome della società (che non ha diritto all’oblio, essendo una persona giuridica).
Newsletter senza account (anonima)
Un’email iscritta alla newsletter senza account cliente: la cancellazione è immediata, senza pseudonimizzazione. Nessun obbligo contabile collegato. Un’eccezione: se il consenso marketing è tracciato per prova, si può conservare lo storico del consenso (data, IP, opt-in) per 3 anni dopo la disiscrizione. Oltre, cancellazione completa.
Abbonati a un servizio ricorrente (abbonamento)
Per i negozi in abbonamento, la cancellazione dell’account esige prima l’arresto dell’abbonamento (impossibile addebitare una carta di un account che non esiste più). Il modulo deve sequenziare: annullamento degli abbonamenti → attesa di un ciclo per conferma → pseudonimizzazione. Saltare la sequenza causa addebiti orfani e contenziosi cliente.
Il termine di risposta imposto dal GDPR
Articolo 12.3 GDPR: la risposta a una richiesta deve intervenire entro 1 mese, prorogabile a 2 o 3 mesi per le richieste complesse (con notifica della proroga al richiedente). In pratica per l’e-commerce:
- Richiesta semplice tramite il pulsante “cancella il mio account”: esecuzione immediata (secondo il termine di riflessione opzionale) — ben al di sotto del termine legale.
- Richiesta tramite email/posta che esige una verifica d’identità: 1-2 settimane di trattamento, al di sotto del mese.
- Richiesta in un contesto complesso (contenzioso, abbonamento attivo, multi-account): 1 mese con informazione al richiedente dello status.
Il mancato rispetto del termine espone a sanzioni del Garante. Un modulo automatizzato che risponde in 24-48h copre largamente il rischio.
Costo e ROI
Il ROI di un modulo di cancellazione account conforme si misura diversamente da un modulo di conversione:
- Costo del modulo: 39 € licenza per PrestaShop.
- Costo evitato di una sanzione del Garante: variabile, ma le sanzioni e-commerce 2023-2025 vanno da 5.000 € per PMI a diversi milioni per le grandi catene. Il rapporto costo/rischio è estremamente favorevole.
- Costo evitato di rielaborazione manuale: su un negozio di 50.000 clienti, trattare 5-10 richieste/mese manualmente rappresenta 2-4 h/mese di lavoro interno — circa 1.200 €/anno.
- Beneficio di fiducia: mostrare un pulsante “cancella il mio account” ben visibile è diventato un segnale di fiducia forte nel 2026, misurabile in tasso di creazione di account (+3-6% osservato).
FAQ
Bisogna davvero conservare gli ordini 10 anni dopo la cancellazione dell’account?
Sì, è l’obbligo contabile (art. 2220 c.c.). Il GDPR non dispensa dal diritto fiscale. La risoluzione: gli ordini restano in base sotto forma pseudonimizzata (il nome del cliente non è più collegato a un account vivo ma figura ancora sulla fattura emessa, come è necessario). Allo scadere dei 10 anni, cancellazione completa possibile.
Cosa fare se Mailchimp o Brevo continua a inviare la newsletter?
Il GDPR articolo 19 impone la propagazione della cancellazione ai destinatari dei dati. Se hai sincronizzato la tua base con Mailchimp/Brevo/Klaviyo, il modulo deve chiamare la loro API per cancellare il contatto (e non solo disiscriverlo). È un punto da validare all’installazione: tutti i connettori marketing devono ricevere il segnale di cancellazione.
Come gestire la cancellazione presso i sub-fornitori (Stripe, PayPal)?
Stripe e PayPal conservano i token di pagamento e lo storico delle transazioni secondo la loro politica (generalmente 10 anni per conformità fiscale + lotta antiriciclaggio). Non puoi forzare la loro cancellazione — è il loro obbligo legale, distinto dal tuo. La menzione nella tua politica di privacy deve indicare che i sub-fornitori di pagamento conservano i dati secondo la loro propria durata legale.
Si può cancellare un account senza informare il cliente?
Se è il cliente che ha chiesto la cancellazione: lo si informa dell’esecuzione. Se è l’impresa che cancella di sua iniziativa (inattività prolungata, ad esempio): bisogna aver previsto questa politica nei Termini e Condizioni/politica di privacy, e idealmente notificare 30 giorni prima della cancellazione per permettere l’opposizione. La cancellazione senza notifica è rischiosa.
Quanto tempo dopo una richiesta d’oblio un cliente può tornare da noi?
Il diritto all’oblio non è un diritto all’inversione. Una volta cancellati (o pseudonimizzati) i dati, il cliente che torna crea un nuovo account ex novo. Lo storico resta nell’audit log GDPR (che serve a provare che si è eseguita la richiesta), ma non può essere riutilizzato per ricostituire l’account iniziale.
In sintesi
La cancellazione di account conforme all’articolo 17 GDPR è un esercizio di equilibrismo tra quattro obblighi legali contraddittori. La risoluzione passa per la pseudonimizzazione selettiva: si cancella o anonimizza tutto ciò che non è coperto da un obbligo di conservazione, si conserva intatta la traccia contabile necessaria ai libri contabili e alla verifica fiscale.
Il modulo DfAccountDelete per PrestaShop implementa questa logica con i cinque strati di un workflow conforme: identificazione, verifica d’identità, termine di riflessione opzionale, pseudonimizzazione atomica, audit log. Si integra con l’export contabile per non rompere la catena contabile e con i principali strumenti marketing (Mailchimp, Brevo, Klaviyo) per propagare la cancellazione.
Il giusto riflesso nel 2026: mostrare un pulsante “cancella il mio account” ben visibile nell’area cliente (segnale di fiducia, conformità esplicita), documentare il workflow nella politica di privacy (trasparenza articolo 12), conservare l’audit log 3 anni per dimostrare la conformità in caso di ispezione del Garante.
Per i negozi che desiderano un audit completo della loro conformità GDPR, il nostro audit PrestaShop copre i sei punti critici: cookie e consenso, base di trattamento dei dati clienti, durate di conservazione configurate, diritto di accesso e di portabilità, diritto all’oblio, registro dei trattamenti articolo 30.
