Pular para o conteúdo principal

Compliance SMS: LGPD & Boas Práticas

⚖️ Compliance: Configure regras de envio para estar em conformidade com a LGPD e regulamentações brasileiras de telecomunicações.

Este guia mostra como configurar regras de compliance para SMS no Brasil, incluindo horários de silêncio, limites de envio, gestão de consentimentos e opt-out automático.


Regulamentação brasileira de SMS​

Leis aplicáveis​

  • LGPD (Lei 13.709/18): Proteção de dados e consentimento
  • Lei 9.296/96: Telemarketing e horários permitidos
  • Resolução Anatel 612/13: Proteção ao consumidor
  • MP 2.200-2/01: Marco Civil da Internet

O que é proibido​

❌ Enviar SMS sem consentimento prévio
❌ Enviar durante horários de silêncio (22h–08h)
❌ Não oferecer opção de cancelamento (opt-out)
❌ Enviar mensagens excessivas (spam)
❌ Usar remetente falso ou enganoso


Obrigações LGPD para SMS​

1. Consentimento (opt-in)​

Antes de enviar SMS marketing, você deve:

  • Obter consentimento explícito do titular
  • Informar finalidade do uso do telefone
  • Registrar data e hora do consentimento
  • Permitir revogação a qualquer momento
Tipo de mensagemBase legalConsentimento necessário?
TransacionalExecução de contratoNão (mas informar)
MarketingConsentimentoSim, obrigatório
SegurançaLegítimo interesseNão (OTP, alertas)
CobrançaExecução de contratoNão (mas limitado)

3. Retenção de dados​

  • Mantenha logs de envio por 5 anos (obrigação fiscal)
  • Consentimentos devem ser mantidos enquanto válidos
  • Após opt-out, mantenha apenas registro da revogação

Configurar horários de silêncio​

Por padrão, a Notifica bloqueia envios entre 22:00 e 08:00 (horário de Brasília).

Via Dashboard​

  1. Acesse Canais → SMS → Compliance
  2. Configure:
Horários de Silêncio: ✅ Ativado
Início: 22:00
Fim: 08:00
Fuso horário: America/Sao_Paulo

Via API​

curl -X PATCH https://app.usenotifica.com.br/v1/channels/sms/compliance \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"quiet_hours_enabled": true,
"quiet_hours_start": "22:00",
"quiet_hours_end": "08:00",
"timezone": "America/Sao_Paulo"
}'

Resposta:

{
"quiet_hours_enabled": true,
"quiet_hours_start": "22:00",
"quiet_hours_end": "08:00",
"timezone": "America/Sao_Paulo",
"updated_at": "2024-01-15T10:00:00Z"
}

Mensagens isentas de horário​

SMS transacionais (OTP, alertas de segurança) podem ignorar horários de silêncio:

curl -X POST https://app.usenotifica.com.br/v1/notifications \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"to": { "phone": "+5511987654321" },
"channel": "sms",
"content": "Seu código OTP: 584321",
"bypass_quiet_hours": true
}'

Limites diários por destinatário​

Evite spam configurando limites de frequência:

Via Dashboard​

Canais → SMS → Compliance → Limites

Limite diário por número: 5
Limite por hora: 2

Via API​

curl -X PATCH https://app.usenotifica.com.br/v1/channels/sms/compliance \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"daily_limit_per_recipient": 5,
"hourly_limit_per_recipient": 2
}'

Requerer opt-in​

Exija confirmação de consentimento antes de enviar:

curl -X PATCH https://app.usenotifica.com.br/v1/channels/sms/compliance \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"require_opt_in": true,
"opt_in_confirmation_required": true
}'

Gerenciamento de consentimentos​

Criar registro de consentimento​

curl -X POST https://app.usenotifica.com.br/v1/channels/sms/consents \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"phone": "+5511987654321",
"consent_type": "marketing",
"source": "website_form",
"source_detail": "Landing page Black Friday",
"metadata": {
"ip_address": "189.12.34.56",
"user_agent": "Mozilla/5.0...",
"form_id": "newsletter_001"
}
}'

Resposta:

{
"id": "consent_abc123",
"phone": "+5511987654321",
"consent_type": "marketing",
"status": "active",
"created_at": "2024-01-15T10:00:00Z",
"source": "website_form"
}

Listar consentimentos​

curl https://app.usenotifica.com.br/v1/channels/sms/consents \
-H "Authorization: Bearer nk_live_sua_chave"

Resposta:

{
"data": [
{
"id": "consent_abc123",
"phone": "+5511987654321",
"status": "active",
"consent_type": "marketing",
"created_at": "2024-01-15T10:00:00Z"
}
],
"total": 150,
"page": 1
}

Resumo de consentimentos​

curl https://app.usenotifica.com.br/v1/channels/sms/consents/summary \
-H "Authorization: Bearer nk_live_sua_chave"

Resposta:

{
"total_active": 15234,
"total_opted_out": 345,
"by_type": {
"marketing": 12000,
"transactional": 15234,
"all": 15234
},
"recent_opt_ins": 156,
"recent_opt_outs": 12
}

Verificar consentimento de um número​

curl https://app.usenotifica.com.br/v1/channels/sms/consents/+5511987654321 \
-H "Authorization: Bearer nk_live_sua_chave"

Importar consentimentos em massa​

Para migrar uma lista existente:

curl -X POST https://app.usenotifica.com.br/v1/channels/sms/consents/import \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"consents": [
{
"phone": "+5511987654321",
"consent_type": "marketing",
"source": "migration",
"consented_at": "2024-01-01T00:00:00Z"
},
{
"phone": "+5511998765432",
"consent_type": "marketing",
"source": "migration",
"consented_at": "2024-01-01T00:00:00Z"
}
]
}'

Resposta:

{
"imported": 2,
"skipped": 0,
"errors": []
}

Opt-out (cancelamento)​

Palavras-chave automáticas​

A Notifica detecta automaticamente:

PalavraAção
SAIRRemove da lista de marketing
PARARRemove da lista de marketing
STOPRemove da lista de marketing
CANCELARRemove da lista de marketing
DESCADASTRARRemove da lista de marketing

Processo automático​

  1. Cliente responde "SAIR" ao seu SMS
  2. Sistema identifica a palavra-chave
  3. Consentimento é revogado automaticamente
  4. Confirmação é enviada ao cliente

Remover manualmente (opt-out)​

curl -X DELETE https://app.usenotifica.com.br/v1/channels/sms/consents/+5511987654321 \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"reason": "user_request",
"source": "support_dashboard"
}'

Resposta:

{
"success": true,
"phone": "+5511987654321",
"previous_status": "active",
"new_status": "opted_out",
"opted_out_at": "2024-01-15T10:00:00Z"
}

Mensagem de confirmação de opt-out​

Configure a mensagem automática:

curl -X PATCH https://app.usenotifica.com.br/v1/channels/sms/compliance \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"opt_out_confirmation_message": "Você foi removido da nossa lista. Para voltar a receber mensagens, responda SIM."
}'

Analytics de compliance​

Estatísticas de bloqueios​

curl https://app.usenotifica.com.br/v1/channels/sms/compliance/analytics \
-H "Authorization: Bearer nk_live_sua_chave" \
-G -d "period=7d"

Resposta:

{
"period": "7d",
"blocked_by_quiet_hours": 45,
"blocked_by_daily_limit": 12,
"blocked_by_consent": 8,
"total_blocked": 65,
"total_attempted": 15234
}

Logs de eventos​

curl https://app.usenotifica.com.br/v1/channels/sms/compliance/logs \
-H "Authorization: Bearer nk_live_sua_chave" \
-G -d "phone=+5511987654321" -d "limit=50"

Resposta:

{
"data": [
{
"id": "log_001",
"event": "consent_granted",
"phone": "+5511987654321",
"timestamp": "2024-01-10T14:30:00Z",
"source": "website_form"
},
{
"id": "log_002",
"event": "message_blocked",
"phone": "+5511987654321",
"timestamp": "2024-01-15T23:45:00Z",
"reason": "quiet_hours",
"scheduled_for": "2024-01-16T08:00:00Z"
}
]
}

Eventos disponíveis​

EventoDescrição
consent_grantedConsentimento concedido
consent_revokedConsentimento revogado
message_blockedMensagem bloqueada por regra
opt_out_detectedPalavra-chave de opt-out detectada
limit_exceededLimite diário excedido

Node.js​

async function checkCompliance(phone) {
const response = await fetch(
`https://app.usenotifica.com.br/v1/channels/sms/consents/${phone}`,
{
headers: { 'Authorization': `Bearer ${process.env.NOTIFICA_API_KEY}` }
}
);
return response.json();
}

async function registerConsent(phone, source) {
const response = await fetch(
'https://app.usenotifica.com.br/v1/channels/sms/consents',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.NOTIFICA_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
phone,
consent_type: 'marketing',
source,
metadata: { ip_address: req.ip }
})
}
);
return response.json();
}

async function optOutUser(phone) {
const response = await fetch(
`https://app.usenotifica.com.br/v1/channels/sms/consents/${phone}`,
{
method: 'DELETE',
headers: { 'Authorization': `Bearer ${process.env.NOTIFICA_API_KEY}` }
}
);
return response.json();
}

// Uso
const canSend = await checkCompliance('+5511987654321');
if (canSend.status === 'active') {
await sendMarketingSMS('+5511987654321', 'Promoção especial!');
}

Python​

import requests

API_KEY = "nk_live_sua_chave"
BASE_URL = "https://app.usenotifica.com.br/v1"

def check_compliance(phone: str):
"""Verifica se pode enviar SMS para um número."""
response = requests.get(
f"{BASE_URL}/channels/sms/consents/{phone}",
headers={'Authorization': f'Bearer {API_KEY}'}
)
return response.json()

def register_consent(phone: str, source: str, **metadata):
"""Registra consentimento de um usuário."""
response = requests.post(
f"{BASE_URL}/channels/sms/consents",
headers={'Authorization': f'Bearer {API_KEY}'},
json={
'phone': phone,
'consent_type': 'marketing',
'source': source,
'metadata': metadata
}
)
return response.json()

def opt_out_user(phone: str, reason: str = "user_request"):
"""Remove consentimento (opt-out)."""
response = requests.delete(
f"{BASE_URL}/channels/sms/consents/{phone}",
headers={'Authorization': f'Bearer {API_KEY}'},
json={'reason': reason}
)
return response.json()

def get_compliance_stats(days: int = 7):
"""Obtém estatísticas de compliance."""
response = requests.get(
f"{BASE_URL}/channels/sms/compliance/analytics",
headers={'Authorization': f'Bearer {API_KEY}'},
params={'period': f'{days}d'}
)
return response.json()

# Uso
stats = get_compliance_stats()
print(f"Bloqueados por horário: {stats['blocked_by_quiet_hours']}")

Checklist de boas práticas​

✅ Antes de enviar​

  • Obtenha consentimento explícito para marketing
  • Registre a fonte e data do consentimento
  • Configure horários de silêncio (22h–08h)
  • Defina limites diários por número
  • Inclua identificação do remetente
  • Ofereça instruções de opt-out na mensagem

✅ Na mensagem​

  • Seja claro sobre quem está enviando
  • Mantenha mensagens curtas e relevantes
  • Inclua valor real para o destinatário
  • Use linguagem respeitosa
  • Evite CAPS LOCK excessivo (parece spam)

✅ Gerenciamento​

  • Monitore taxas de opt-out (meta: <1%)
  • Respeite imediatamente solicitações de cancelamento
  • Mantenha lista de números limpa (remove inativos)
  • Documente base legal de cada envio
  • Faça backup de consentimentos

❌ Não faça​

  • Compre listas de números sem consentimento
  • Envie mensagens fora do horário permitido
  • Oculte a identidade do remetente
  • Envie mensagens excessivas ao mesmo número
  • Ignore pedidos de cancelamento

Template de mensagem de opt-in​

Solicite consentimento de forma clara:

SuaEmpresa: Deseja receber promoções exclusivas por SMS? 
Responda SIM para confirmar.
Para cancelar a qualquer momento, responda SAIR.
Custos conforme plano da operadora.

Perguntas frequentes​

Q: Preciso de consentimento para enviar cobrança?
A: Não, pois é necessário para execução do contrato. Mas respeite horários e opt-out.

Q: E se o cliente pedir para parar de receber?
A: Remova imediatamente. Atraso pode gerar multa da Anatel (até R$ 50 mil).

Q: Posso usar números de clientes cadastrados para marketing?
A: Apenas se eles consentiram especificamente. Separar bases transacional e marketing.

Q: Qual o prazo para responder um opt-out?
A: Imediato. A Notifica processa automaticamente em segundos.

Q: Posso enviar SMS no sábado e domingo?
A: Sim, desde que respeite o horário de silêncio (22h–08h).

Q: E feriados?
A: A Lei 9.296/96 não menciona feriados, mas evite envios em feriados nacionais como boa prática.


Próximo passo​

Explore outros recursos de SMS:

Ou configure outros canais de notificação na documentação principal.