returnEasier
← Para a tua loja
Para a tua lojaComerciante7 min de leitura

Como cumpre o returnEasier o RGPD com os dados dos seus clientes?

O returnEasier guarda todos os dados pessoais em servidores da União Europeia e responde aos webhooks de RGPD da Shopify: o pedido de acesso exporta os dados do cliente, a redação de cliente anonimiza a sua informação pessoal e a redação de loja apaga tudo 48 horas após desinstalar. Além disso, uma tarefa semanal anonimiza automaticamente os dados pessoais com mais de 5 anos. O registo de auditoria conserva-se como prova legal do cumprimento do Artigo 11.º-A.

O returnEasier está construído para o RGPD desde a base: os dados dos teus pedidos e dos teus clientes vivem em servidores da União Europeia e a aplicação responde corretamente aos três webhooks de privacidade da Shopify (pedido de acesso, apagamento de cliente e apagamento de loja). O único dado que se conserva após um apagamento é o registo de auditoria de eventos, e conserva-se precisamente porque é a prova legal de que cumpriu o Artigo 11.º-A.


Onde estão os dados? (residência UE)

Estes são os fornecedores que tocam em dados, e onde estão:

Serviço Fornecedor Região / nota
Base de dados Neon eu-central-1 (AWS, Frankfurt)
Ficheiros (PDF, fotos…) Cloudflare R2 Jurisdição UE (.eu)
Email transacional Brevo França (sem Schrems II)
Rate limiting Upstash Contadores de limite por IP

Além disso, o token de acesso da sua loja e as chaves de Sendcloud guardam-se cifrados (AES-256-GCM), e todos os webhooks se validam com HMAC antes de serem processados. Nunca se registam emails nem dados pessoais nos logs: para correlacionar usa-se uma impressão digital (os primeiros caracteres de um hash do email).

Os três webhooks de RGPD

A Shopify exige que toda a aplicação responda a três webhooks de privacidade. O returnEasier implementa-os assim:

1. Pedido de acesso (customers/data_request)

Quando um cliente exerce o seu direito de acesso, o returnEasier reúne todos os dados pessoais que tem dele —encomendas, pedidos, eventos, confirmações e verificações do portal— e envia-os a si, o responsável pelo tratamento, num export JSON por email. A aplicação não guarda cópia do export: gera-o e entrega-o. Se ele lhe pedir de novo os seus dados, gera-se outra vez.

2. Apagamento de cliente (customers/redact)

Quando um cliente pede o apagamento dos seus dados, o returnEasier:

  • Anonimiza o email (para um valor neutro) e apaga o nome nas suas encomendas.
  • Apaga as notas do cliente nos pedidos (os campos estruturais —quantidades, motivo— conservam-se).
  • Invalida de imediato a sua verificação do portal.
  • Elimina as confirmações de resolução do contrato e os seus PDF de R2.
  • Conserva o registo de auditoria de eventos: é append-only, com hash encadeado, e mantém-se como prova do cumprimento legal.

3. Apagamento de loja (shop/redact)

A Shopify dispara este webhook 48 horas depois de desinstalar a aplicação. O returnEasier faz uma limpeza profunda: anonimiza os dados de clientes de toda a loja, apaga os ficheiros de R2 (PDF, fotos, etiquetas), limpa a configuração (definições legais, branding, Sendcloud), reda o token e deixa o plano em Free. A linha da loja e o registo de auditoria conservam-se (o registo referencia a loja) como tombstone para que o registo continue a ser atribuível.

Como se reconcilia o apagamento com um registo append-only?

É a pergunta-chave. O registo de auditoria é append-only: pela via normal da aplicação, a base de dados rejeita com um trigger os UPDATE e DELETE sobre os eventos. Quando chega um apagamento, anonimizam-se as tabelas mutáveis (encomendas, notas, verificações) e apagam-se os ficheiros, mas os eventos conservam-se ao abrigo da base legal de obrigação legal (provar o cumprimento do Artigo 11.º-A).

Nota de transparência: a base legal concreta para conservar PII dentro do registo append-only está pendente de revisão por advogado. Como próximo passo está prevista uma retenção por camadas do próprio registo (conservar apenas os hashes passado um prazo maior); entretanto, as linhas de eventos conservam-se protegidas por um trigger que, pela via normal da aplicação, impede modificá-las ou apagá-las.

Anonimização automática aos 5 anos

Além dos apagamentos que a Shopify dispara, o returnEasier executa uma tarefa semanal (todas as segundas-feiras de madrugada, em UTC) que aplica a retenção de 5 anos: cada registo corre o seu próprio relógio desde a criação e, passado o prazo, a tarefa:

  • Anonimiza o email (para um valor neutro) e apaga o nome nas encomendas antigas.
  • Apaga as notas do cliente nos pedidos (incluídas as notas por artigo); os campos estruturais —quantidades, motivo— conservam-se.
  • Anonimiza as verificações do portal caducadas.
  • Elimina de R2 os ficheiros associados: o PDF de confirmação, a etiqueta de envio e as fotos do cliente.
  • Deixa rasto no registo de auditoria com um evento de anonimização (sem dados pessoais), que além disso evita repetir o trabalho.

Se o apagamento de um ficheiro falhar, a tarefa não dá o registo por anonimizado: tenta de novo na semana seguinte até confirmar que o ficheiro desapareceu. Não tem de configurar nada: a retenção funciona sozinha em todos os planos.

O que pode fazer você?

  • Atender pedidos dos seus clientes: os webhooks da Shopify encarregam-se do trabalho automaticamente; você recebe o export de acesso por email.
  • Exportar o seu histórico antes de desinstalar (ver «O que é o registo de auditoria e como exporto o meu histórico auditável?»).
  • Entender o que acontece ao desinstalar ou cancelar: detalha-o «Desinstalar ou cancelar o returnEasier».
Este artigo foi-te útil?