returnEasier està construït per al RGPD des de la base: totes les dades personals viuen en servidors de la Unió Europea i l'app respon correctament als tres webhooks de privacitat de Shopify (sol·licitud d'accés, supressió de client i supressió de botiga). L'única dada que es conserva després d'una supressió és l'audit log d'esdeveniments, i es conserva precisament perquè és la prova legal que vas complir l'Article 11 bis.
On són les dades? (residència UE)
Tots els proveïdors amb dades personals són a la Unió Europea:
| Servei | Proveïdor | Regió / nota |
|---|---|---|
| Base de dades | Neon | eu-west-2 (AWS, Londres) |
| Fitxers (PDF, fotos…) | Cloudflare R2 | Jurisdicció UE (.eu) |
| Correu transaccional | Brevo | França (sense Schrems II) |
| Rate limiting | Upstash | UE |
| Errors | Sentry | Instància UE, amb scrubbing de PII |
| Analítica de producte | PostHog | Instància UE |
A més, el token d'accés de la teva botiga i les claus de Sendcloud es desen xifrats (AES-256-GCM), i tots els webhooks es validen amb HMAC abans de processar-se. Mai es registren correus ni dades personals als logs: per correlacionar es fa servir una empremta (els primers caràcters d'un hash del correu).
Els tres webhooks de RGPD
Shopify exigeix que tota app respongui a tres webhooks de privacitat. returnEasier els implementa així:
1. Sol·licitud d'accés (customers/data_request)
Quan un client exerceix el seu dret d'accés, returnEasier reuneix totes les dades personals que té d'ell —comandes, sol·licituds, esdeveniments, confirmacions i verificacions del portal— i te les envia a tu, el responsable del tractament, en un export JSON per correu. L'app no desa còpia de l'export: el genera i el lliura. Si et torna a demanar les seves dades, es torna a generar.
2. Supressió de client (customers/redact)
Quan un client demana la supressió de les seves dades, returnEasier:
- Anonimitza el correu (a un valor neutre) i esborra el nom a les seves comandes.
- Esborra les notes del client a les sol·licituds (els camps estructurals —quantitats, motiu— es conserven).
- Invalida de seguida la seva verificació del portal.
- Elimina les confirmacions de desistiment i els seus PDF de R2.
- Conserva l'audit log d'esdeveniments: és immutable i es manté com a prova del compliment legal.
3. Supressió de botiga (shop/redact)
Shopify dispara aquest webhook 48 hores després que desinstal·lis l'app. returnEasier fa una neteja profunda: anonimitza les dades de clients de tota la botiga, esborra els fitxers de R2 (PDF, fotos, etiquetes), neteja la configuració (ajustos legals, branding, Sendcloud), redacta el token i deixa el pla en Free. La fila de la botiga i l'audit log es conserven (el log referencia la botiga) com a tombstone perquè el registre continuï sent atribuïble.
Com es reconcilia la supressió amb un log immutable?
És la pregunta clau. L'audit log és append-only: la base de dades rebutja qualsevol UPDATE o DELETE sobre els esdeveniments. Quan arriba una supressió, s'anonimitzen les taules mutables (comandes, notes, verificacions) i s'esborren els fitxers, però els esdeveniments es conserven sota la base legal d'obligació legal (provar el compliment de l'Article 11 bis).
Nota de transparència: la base legal concreta per conservar PII dins del log immutable està pendent de revisió per advocat. Com a pas següent està prevista una retenció per capes del mateix log (conservar només els hashos passat un termini més llarg); mentrestant, les files d'esdeveniments es conserven protegides pel trigger d'immutabilitat.
Anonimització automàtica als 5 anys
A més de les supressions que dispara Shopify, returnEasier executa una tasca setmanal (cada dilluns de matinada, en UTC) que aplica la retenció de 5 anys: cada registre corre el seu propi rellotge des de la seva creació i, passat el termini, la tasca:
- Anonimitza el correu (a un valor neutre) i esborra el nom a les comandes antigues.
- Esborra les notes del client a les sol·licituds (incloses les notes per article); els camps estructurals —quantitats, motiu— es conserven.
- Anonimitza les verificacions del portal caducades.
- Elimina de R2 els fitxers associats: el PDF de confirmació, l'etiqueta d'enviament i les fotos del client.
- Deixa constància a l'audit log amb un esdeveniment d'anonimització (sense dades personals), que a més evita repetir la feina.
Si l'esborrat d'un fitxer falla, la tasca no dona el registre per anonimitzat: ho reintenta la setmana següent fins a confirmar que el fitxer ha desaparegut. No has de configurar res: la retenció funciona sola en tots els plans.
Què pots fer tu?
- Atendre sol·licituds dels teus clients: els webhooks de Shopify s'encarreguen de la feina automàticament; tu reps l'export d'accés per correu.
- Exportar el teu històric abans de desinstal·lar (vegeu «Què és l'audit log i com exporto el meu històric auditable?»).
- Entendre què passa en desinstal·lar o cancel·lar: ho detalla «Què passa amb les meves dades si desinstal·lo o cancel·lo returnEasier?».