Marketing Por Equipe DevBras

Capa do artigo: Comentar não é assinar a newsletter: consentimento separado, caixa desmarcada

Comentar não é assinar a newsletter: consentimento separado, caixa desmarcada

Separe o comentário da inscrição na newsletter, registre o consentimento com data e texto exibido, confirme por e-mail e nunca reinscreva quem saiu. Com exemplo em Node e MySQL.

A pessoa deixou um comentário num post sobre Docker, agradecendo a dica. Na semana seguinte, recebeu a primeira oferta do curso. Na outra, mais duas. Ela nunca pediu newsletter: a caixinha "quero receber novidades" vinha marcada embaixo do formulário, e ninguém lê a letra miúda depois de escrever um comentário. A resposta curta: comentar autoriza o comentário, e só. Newsletter é um gesto separado, com caixa desmarcada, texto claro e confirmação por e-mail.

O atalho parece inofensivo porque aumenta a lista. Na prática, ele enche a lista de gente que não quer estar ali, que marca suas mensagens como spam, e isso derruba a entrega para quem queria receber.

Por que a caixa pré-marcada sai cara

Há três custos, e eles se somam.

Reputação de envio. Quem recebe e-mail que não pediu não procura o link de descadastro. Aperta "spam". Os provedores contam essas reclamações contra o seu domínio, e a reputação ruim afeta todas as mensagens, inclusive as transacionais se elas saem do mesmo lugar. O guia sobre e-mail transacional que chega e se entende explica por que vale separar os dois fluxos.

Confiança. A pessoa voltou ao blog para comentar porque gostou do conteúdo. Ela sai com a sensação de que foi enganada, e o próximo artigo bom chega com o rótulo de "aquele site que manda propaganda".

Base legal. A LGPD define consentimento como manifestação livre, informada e inequívoca, para uma finalidade determinada. Uma caixa que já vem marcada, colada num formulário com outra finalidade, dificilmente se sustenta como manifestação inequívoca de querer receber marketing. E é você quem precisa provar que o consentimento existiu.

Este texto explica o mecanismo prático; ele não substitui a orientação de um profissional de direito para o seu caso. A página da ANPD e o guia de adequação à LGPD em sistema pequeno são bons pontos de partida.

Como separar comentário e inscrição

  1. Peça no formulário só o que o comentário precisa. Nome, e-mail (se você usa para moderação ou para avisar de respostas) e o texto.
  2. Coloque a newsletter como opção separada e desmarcada. O texto diz o que é, com que frequência e como sair: "Quero receber o resumo semanal do DevBras por e-mail. Dá para sair com um clique."
  3. Trate "avisar respostas" como outra finalidade. Se você oferece aviso de resposta ao comentário, ele também é uma escolha própria, e não autoriza newsletter.
  4. Registre o consentimento. Data, origem, o texto exato que estava na tela e o e-mail. Sem registro, você não consegue provar nada depois.
  5. Confirme por e-mail antes de ativar. A dupla confirmação garante que o dono do endereço quis entrar, e não alguém digitando o e-mail de outra pessoa.
  6. Respeite quem saiu. Antes de criar inscrição, consulte a lista de supressão. Comentar de novo não reinscreve ninguém.

O formulário

<form method="post" action="/blog/docker-no-servidor-primeiro-passo/comentarios">
  <label for="nome">Nome</label>
  <input id="nome" name="nome" required maxlength="80">

  <label for="email">E-mail (não aparece no comentário)</label>
  <input id="email" name="email" type="email" required maxlength="190">

  <label for="texto">Comentário</label>
  <textarea id="texto" name="texto" required maxlength="4000"></textarea>

  <label>
    <input type="checkbox" name="newsletter" value="sim">
    Quero receber o resumo semanal do DevBras por e-mail. Dá para sair com um clique.
  </label>

  <button type="submit">Publicar comentário</button>
</form>

Sem atributo checked. A caixa só fica marcada se a pessoa marcar.

O tratamento no servidor

const TEXTO_CONSENTIMENTO_V = 'newsletter-semanal-v3';

app.post('/blog/:slug/comentarios', express.urlencoded({ extended: false }), async (req, res, next) => {
  const { nome, email, texto } = req.body;
  const querNewsletter = req.body.newsletter === 'sim';
  let conn;
  try {
    conn = await pool.getConnection();
    await conn.beginTransaction();

    await conn.execute(
      'INSERT INTO comentarios (post_slug, nome, email, texto, status, criado_em) VALUES (?, ?, ?, ?, ?, NOW())',
      [req.params.slug, nome, email, texto, 'moderacao']
    );

    if (querNewsletter) {
      const [suprimido] = await conn.execute(
        'SELECT 1 FROM supressao WHERE email = ? LIMIT 1',
        [email]
      );
      if (suprimido.length === 0) {
        await conn.execute(
          'INSERT INTO consentimentos (email, finalidade, texto_versao, origem, criado_em) VALUES (?, ?, ?, ?, NOW())',
          [email, 'newsletter', TEXTO_CONSENTIMENTO_V, 'comentario:' + req.params.slug]
        );
        await conn.execute(
          'INSERT INTO fila_emails (tipo, destino, criado_em) VALUES (?, ?, NOW())',
          ['confirmar-newsletter', email]
        );
      }
    }

    await conn.commit();
    res.redirect(303, '/blog/' + encodeURIComponent(req.params.slug) + '#comentario-enviado');
  } catch (err) {
    if (conn) await conn.rollback().catch(() => {});
    next(err);
  } finally {
    if (conn) conn.release();
  }
});

O que este código garante: o comentário é gravado sempre; a inscrição só nasce se a caixa veio marcada; quem está na lista de supressão não volta; e o consentimento fica registrado com a versão do texto exibido, para você saber o que a pessoa leu. A inscrição ainda não está ativa: ela só passa a valer quando a pessoa clicar no link de confirmação que o worker vai enviar a partir da fila_emails.

As consultas usam parâmetro (?), nunca concatenação. Se esse padrão não é familiar, veja Node.js e MySQL com parâmetro. Validação de tamanho e de formato do e-mail também precisa existir no servidor; os atributos do HTML são só conveniência.

Repare que a tela de retorno não diz se o e-mail estava suprimido. Ela só confirma que o comentário foi recebido. Informar "este e-mail já saiu da lista" revelaria a terceiros quem é inscrito.

A confirmação que ativa a inscrição

O e-mail de confirmação é curto e honesto. Assunto: "Confirme sua inscrição no resumo semanal do DevBras". Primeira linha: "Você pediu para receber o resumo semanal ao comentar no post sobre Docker. Se não foi você, ignore esta mensagem e nada acontece." Depois, um botão com texto claro: "Confirmar inscrição".

O link carrega um token aleatório, de uso único e com prazo. Ao ser clicado, o servidor marca o consentimento como confirmado, grava a data da confirmação e ativa a inscrição. Se o prazo passar sem clique, a inscrição pendente é apagada. No blog do exemplo, cerca de metade das caixas marcadas nunca foram confirmadas, e essa metade é justamente a que mais reclamaria.

Erros comuns

  • Caixa de newsletter pré-marcada. A lista cresce com gente que não quer, e as reclamações de spam derrubam a entrega para todos.
  • Usar o e-mail do comentário para marketing "porque ele já está no banco". O dado foi coletado para outra finalidade, e a pessoa nunca escolheu receber.
  • Inscrição sem confirmação. Qualquer um inscreve o e-mail de outra pessoa, e você manda mensagem para quem nunca pediu.
  • Reinscrever quem saiu. A pessoa comenta de novo e volta à lista. Do ponto de vista dela, o descadastro não funcionou.
  • Não guardar o texto do consentimento. Se alguém questionar, você só tem um booleano "aceitou = 1", sem saber o que estava escrito na tela.
  • Texto vago na caixa. "Aceito comunicações" não diz o que, com que frequência nem como sair.

Checklist

  • Dá para publicar um comentário sem marcar nenhuma caixa extra.
  • A caixa da newsletter vem desmarcada e diz frequência e como sair.
  • Cada inscrição tem registro de data, origem e versão do texto exibido.
  • A inscrição só fica ativa depois do clique de confirmação.
  • A lista de supressão é consultada antes de qualquer nova inscrição.
  • O e-mail do comentário não alimenta nenhuma lista de marketing por outra via.

Para fechar: abra o formulário de comentário do seu site agora. Dá para comentar sem entrar em nenhuma lista?

Avalie este artigo

Referência: https://www.gov.br/anpd/pt-br