Notizie e-commerce

Diritto all’oblio GDPR articolo 17 su PrestaShop: cancellazione account senza rompere la traccia fiscale nel 2026

Droit à l'oubli RGPD article 17 sur PrestaShop : suppression de compte sans casser la trace fiscale en 2026

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:

  1. I dati non sono più necessari alla finalità per cui sono stati raccolti.
  2. La persona revoca il consenso e non esiste altro fondamento giuridico.
  3. La persona si oppone al trattamento e non esiste motivo legittimo cogente.
  4. I dati hanno costituito oggetto di un trattamento illecito.
  5. I dati devono essere cancellati per rispettare un obbligo legale.
  6. 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:

  1. Esercizio della libertà di espressione e di informazione.
  2. Rispetto di un obbligo legale (ad esempio: conservazione contabile).
  3. Motivo di interesse pubblico nel campo della sanità pubblica.
  4. Fini archivistici, ricerca scientifica o storica, statistiche.
  5. 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 → NULL
  • customer.passwd → byte casuali (account effettivamente inutilizzabile)
  • customer.note → NULL
  • address.firstname, address.lastname su indirizzi vecchi → pseudonimo
  • address.firstname, address.lastname sull’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:

  1. Pseudonimizza ps_customer (nome, email, telefono, ecc.).
  2. Pseudonimizza gli ps_address non collegati a ordini finalizzati.
  3. Cancella ps_cart abbandonati, ps_compare, ps_wishlist.
  4. Cancella le voci del programma fedeltà, alert prezzi, alert stock.
  5. Anonimizza le recensioni pubbliche ("Cliente anonimo") o le cancella secondo la policy.
  6. Cancella i log di sessione, token magic link, carrelli salvati.
  7. Cancella le iscrizioni newsletter (e propaga a Mailchimp, Brevo tramite API se collegati).
  8. Marca l’account come cancellato (active=0, deleted=1, deleted_at = now).
  9. 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.