Aprenda como gerenciar solicitações de exclusão de dados de visitantes para estar em conformidade com o direito ao esquecimento do GDPR.
Entender o direito ao esquecimento
O que é RTBF?
O Direito ao Esquecimento (RTBF) sob o artigo 17 do GDPR permite que indivíduos solicitem a exclusão de seus dados pessoais quando:
- Os dados não são mais necessários para a finalidade original
- O consentimento é retirado
- Os dados foram processados ilicitamente
- A obrigação legal exige exclusão
- O indivíduo se opõe ao processamento
Quando se aplica a Analytics
Um visitante pode solicitar a exclusão de seus dados analíticos:
- Visualizações de página e histórico de sessão
- Dados de rastreamento de eventos
- Perfis de usuários identificados
- Dados de atribuição de receita
Receber solicitações de exclusão
Canais de solicitação
Aceite solicitações por:
- E-mail ([email protected])
- Formulário web em seu site
- Correspondência postal
- Pessoalmente (se aplicável)
Informações obrigatórias
Para processar uma solicitação, você precisa:
- Verificação de identidade
- Escopo da exclusão solicitada
- Qualquer informação de identificação que você tenha
Exemplo de formulário de solicitação
<form action="/privacy/erasure" method="POST">
<h2>Solicitação de exclusão de dados</h2>
<label>Endereço de e-mail (para verificação)</label>
<input type="email" name="email" required>
<label>ID do usuário (se conhecido)</label>
<input type="text" name="user_id">
<label>Quais dados devem ser excluídos?</label>
<select name="scope">
<option value="all">Todos os meus dados</option>
<option value="analytics">Apenas dados analíticos</option>
<option value="account">Conta e análises</option>
</select>
<label>Informações adicionais</label>
<textarea name="details"></textarea>
<button type="submit">Enviar solicitação</button>
</form>
Processar solicitações
Etapa 1: Verificar identidade
Antes de excluir, verifique o solicitante:
// Exemplo de processo de verificação
async function verifyIdentity(email, userId) {
// Opção 1: Enviar e-mail de verificação
await sendVerificationEmail(email, {
action: 'data_deletion',
token: generateSecureToken()
});
// Opção 2: Corresponder a usuário conhecido
const user = await findUserByEmail(email);
if (user && user.id === userId) {
return { verified: true, user };
}
return { verified: false };
}
Etapa 2: Identificar dados
Encontre todos os dados associados ao solicitante:
Via painel:
Se um visitante foi identificado (você passou um e-mail ou ID de usuário para o rastreador), abra Perfis de visitantes (/analytics/profiles) e pesquise por nome ou e-mail para revisar o perfil, sessões e eventos da pessoa.
Via API: A API REST (plano Pro e superior) pode listar registros de visitantes para um site para que você localize os dados a agir:
# Recuperar dados de visitantes para um site
curl -X GET "https://api.zenovay.com/api/external/v1/analytics/{websiteId}/visitors" \
-H "X-API-Key: zv_YOUR_API_KEY"
Etapa 3: Excluir dados
Zenovay não oferece atualmente uma ferramenta de autoatendimento para apagar registros analíticos de um visitante individual. Para agir em uma solicitação verificada para um visitante específico ou usuário identificado, entre em contato com [email protected] com o site e o identificador (ID do visitante, ID do usuário identificado, ou o e-mail que você passou para o rastreador). A equipe Zenovay realiza a exclusão em seu nome.
Não há endpoint de API público para excluir dados de visitantes ou usuários individuais – a API REST é somente leitura para registros de visitantes.
Se a solicitação é para excluir sua própria conta Zenovay (e os dados pessoais associados), você pode fazer isso você mesmo: abra seu perfil (/profile), escolha Excluir conta e confirme. Isso exclui permanentemente sua conta e propaga a exclusão pelos sistemas conectados.
Etapa 4: Confirmar conclusão
// Enviar confirmação ao solicitante
await sendEmail(requester.email, {
subject: 'Exclusão de dados concluída',
body: `
Sua solicitação de exclusão de dados foi processada.
ID da solicitação: ${request.id}
Concluído: ${new Date().toISOString()}
Dados excluídos:
- Histórico de visualização de página
- Dados de rastreamento de eventos
- Gravações de sessão
- Dados de perfil do usuário
Esta ação é permanente e não pode ser desfeita.
`
});
O que é excluído
Incluído na exclusão
| Tipo de dados | Excluído |
|---|---|
| Visualizações de página | ✓ |
| Eventos | ✓ |
| Dados de sessão | ✓ |
| Gravações de sessão | ✓ |
| Contribuições do mapa de calor | ✓ |
| Perfil do usuário | ✓ |
| Dados de receita | ✓ |
| Propriedades personalizadas | ✓ |
Não incluído
| Tipo de dados | Por quê |
|---|---|
| Estatísticas agregadas | Anonimizadas, não dados pessoais |
| Logs de auditoria | Requisito legal |
| Registros de faturas | Conformidade financeira |
Realizar exclusões
Visitante único ou usuário identificado
Envie um e-mail para [email protected] com o site e o identificador que deseja apagar (ID do visitante, ID do usuário identificado, ou o e-mail passado para o rastreador). A equipe Zenovay verifica a solicitação em relação à sua conta e realiza a exclusão, depois confirma com você.
Exclusão em massa
Para solicitações de exclusão em massa cobrindo várias pessoas, envie a lista completa para [email protected]. Atualmente, não há ferramenta de exclusão em massa de autoatendimento no painel.
Requisitos de cronograma
Prazos do GDPR
| Ação | Prazo |
|---|---|
| Reconhecer solicitação | Prontamente (dentro de 3 dias recomendado) |
| Completar exclusão | Dentro de 30 dias |
| Extensão se necessário | +60 dias (deve notificar) |
Rastreamento de solicitações
// Rastrear solicitações de exclusão
const deletionRequest = {
id: generateId(),
requester_email: '[email protected]',
user_id: 'user_123',
received_at: new Date(),
acknowledged_at: null,
completed_at: null,
status: 'pending'
};
// Atualizar no reconhecimento
deletionRequest.acknowledged_at = new Date();
deletionRequest.status = 'acknowledged';
// Atualizar na conclusão
deletionRequest.completed_at = new Date();
deletionRequest.status = 'completed';
Lidar com casos extremos
Usuário tem múltiplos identificadores
// Encontrar todos os identificadores vinculados
const user = await findUser(email);
const allIdentifiers = {
user_id: user.id,
visitor_ids: user.visitor_ids,
emails: user.emails,
device_ids: user.device_ids
};
// Excluir todos os dados associados
for (const visitorId of allIdentifiers.visitor_ids) {
await deleteVisitorData(visitorId);
}
await deleteUserData(user.id);
Solicitações de visitantes anônimos
Se o visitante não está identificado:
- Solicite as informações de identificação que eles têm
- Verifique se eles podem fornecer:
- Valor do cookie
- Impressão digital do dispositivo
- Hora de visitas específicas
- Se não puder identificar, explique que os dados já estão anonimizados
Dados de terceiros
Se os dados foram compartilhados com terceiros:
- Identifique os terceiros
- Encaminhe a solicitação de exclusão
- Confirme a exclusão por terceiros
- Documente a cadeia
Exceções à exclusão
Quando você pode recusar
O GDPR permite recusa quando:
- Dados necessários para reclamações legais
- Obrigação legal de retenção
- Razões de interesse público
- Exercendo direito de liberdade de expressão
Como recusar
Prezado [Solicitante],
Recebemos sua solicitação de exclusão de dados datada de [data].
Infelizmente, não podemos atender a esta solicitação porque:
[ ] Precisamos reter estes dados para procedimentos legais em andamento
[ ] Temos uma obrigação legal de reter estes dados
[ ] A solicitação é manifestamente infundada ou excessiva
Se você discordar desta decisão, tem o direito de
apresentar uma reclamação à sua autoridade supervisora.
Atenciosamente,
[Sua empresa]
Automatização
Endpoint de admissão para solicitações de exclusão
Zenovay não emite um webhook de solicitação de exclusão. Se você coletar solicitações de exclusão através de seu próprio formulário ou central de ajuda, conecte-os a um endpoint de admissão do seu lado para que cada um seja registrado e criado um ticket automaticamente:
// Configure seu próprio endpoint de admissão
app.post('/privacy/deletion-intake', async (req, res) => {
const { user_id, email, request_id } = req.body;
// Registrar a solicitação
await logDeletionRequest({
request_id,
user_id,
email,
received_at: new Date()
});
// Disparar fluxo de trabalho interno
await createDeletionTicket({
user_id,
email,
deadline: addDays(new Date(), 30)
});
res.status(200).json({ received: true });
});
Limpeza agendada
Automatize a exclusão para usuários inativos:
// Executar diariamente
async function cleanupInactiveUsers() {
const inactiveUsers = await findUsersInactiveFor(365); // 1 ano
for (const user of inactiveUsers) {
await sendNotification(user.email,
'Excluiremos seus dados em 30 dias se não fizer login');
scheduleForDeletion(user.id, 30); // dias
}
}
Documentação
Manter registros
Mantenha registros de:
| Registro | Retenção |
|---|---|
| Solicitação de exclusão | 3 anos |
| Evidência de verificação | 3 anos |
| Confirmação de conclusão | 3 anos |
| Motivo da recusa | 3 anos |
Certificado de exclusão
Forneça prova de exclusão:
CERTIFICADO DE EXCLUSÃO DE DADOS
ID da solicitação: del_abc123
Data de recebimento: 2025-01-15
Data de conclusão: 2025-01-20
Solicitante: [email protected]
Dados excluídos:
- 1.234 registros de visualização de página
- 567 registros de eventos
- 89 gravações de sessão
- 1 perfil de usuário
Exclusão confirmada por: [Sistema/Administrador]
Timestamp: 2025-01-20T15:30:00Z
Este certificado confirma que os dados acima foram
permanentemente excluídos de nossos sistemas e não podem ser recuperados.
Melhores práticas
Modelos de resposta
Prepare modelos para:
- E-mail de reconhecimento
- Solicitação de verificação
- Confirmação de conclusão
- Recusa (com motivos)
Treinamento da equipe
Treine sua equipe sobre:
- Reconhecer solicitações de exclusão
- Procedimentos de verificação
- Requisitos de cronograma
- Processo de escalação
Auditorias periódicas
Revise periodicamente:
- Tempos de processamento de solicitações
- Taxas de conclusão
- Problemas comuns
- Melhorias de processos