Seu widget de feedback não deveria exigir cadastro

Product

O quadro de feedback do Kookee fica no portal hospedado e pede uma conta antes de qualquer publicação. Gosto que seja assim. Uma conta é um voto, cada publicação tem um autor a quem você pode responder, e sua equipe decide o que fica visível ao público.

Agora pense em quem de fato encontra os bugs. Alguém está no meio de uma exportação, e o último gráfico não aparece no PDF. Para contar isso a você, a pessoa precisa sair da página, encontrar seu portal, criar uma conta, confirmar o e-mail e escrever uma publicação que desconhecidos vão ler. Algumas fazem isso. A maioria fecha a aba ou comenta com o suporte uma semana depois, em duas palavras.

Por isso o widget do site agora tem uma aba Feedback. O visitante escreve o que aconteceu, na página onde aconteceu, e envia sem conta. A mensagem vai para sua equipe e para mais ninguém. Na mesma versão fiz algo que vinha adiando havia um tempo: o chat com IA, Perguntar à IA, passou a ser opcional.

A aba Feedback do widget: Bug selecionado, uma mensagem sobre uma exportação em PDF e o e-mail do visitante já preenchido

Estas são as regras que segui.

1. Peça a mensagem, não uma conta

O formulário pede três coisas: o assunto (uma ideia, uma melhoria, um bug ou outra coisa), a mensagem em si e um e-mail, se a pessoa quiser resposta. Quando seu site já informa ao widget quem está logado, o e-mail vem preenchido. A página em que a pessoa estava vai junto com a mensagem, então “a exportação está quebrada” chega com o endereço da página onde quebrou.

Pensei, sim, no atalho óbvio. O Kookee já tem usuários convidados, então cada mensagem poderia criar um. Decidi que não. Uma conta de convidado por mensagem enche sua lista de usuários de gente que nunca se cadastrou e promete algo que não existe: uma conta em que ninguém consegue entrar, com uma publicação que ninguém encontra de novo. A mensagem do widget é guardada como o que ela é, uma mensagem, com os dados de contato que o visitante quis deixar.

2. Nada fica público antes de uma pessoa ler

Um formulário aberto na internet recebe três tipos de mensagem: as úteis, as ideias pela metade e o spam. Mandar tudo direto para um quadro público deixaria seu quadro com cara de caixa de entrada.

Por isso as mensagens esperam. A página Feedback do seu painel tem uma segunda visualização, Do widget, com cada mensagem, a categoria, quem enviou (se a pessoa disse), a página de onde veio e quando chegou.

Feedback → Do widget: quatro mensagens para revisar, cada uma com categoria, contato, página e horário, e Dispensar selecionado

Ao abrir uma mensagem, você tem três opções. Adicionar ao quadro a transforma em uma publicação na primeira coluna aberta, com o título que você escolher. Vincular a uma publicação existente serve para o pedido que você já tem: a mensagem entra nessa publicação em vez de virar uma duplicata dela. Dispensar apaga a mensagem.

Uma mensagem do widget do site, com o e-mail, o nome e a página do visitante, e as ações Adicionar ao quadro, Vincular a uma publicação existente e Dispensar

Acho que vincular é a opção que mais vai fazer diferença. Dez pessoas descrevendo de dez jeitos diferentes o mesmo recurso que falta devem virar uma publicação com dez pessoas por trás. A publicação guarda as mensagens delas, e quem deixou e-mail pode ter notícias suas quando o recurso sair.

3. Avise a equipe uma vez por hora, não a cada mensagem

Uma notificação por mensagem funciona até o primeiro dia movimentado. Depois disso, ensina todo mundo a ignorar notificações.

Por isso o widget não avisa ninguém em tempo real. Uma vez por hora, se chegaram mensagens novas, cada pessoa da equipe recebe uma notificação no painel e um e-mail dizendo que há mensagens esperando. Dez mensagens em uma hora geram um e-mail. Uma semana tranquila não gera nenhum.

4. Um formulário aberto precisa de limites que pessoas reais nunca atingem

Tudo o que um visitante consegue enviar sem conta, um script também consegue. Os limites ficam muito acima do que uma pessoa faz e bem abaixo do que um script faz: 30 mensagens por hora de um mesmo endereço, 120 por hora para o projeto inteiro e no máximo 1.000 aguardando revisão. Quando a fila enche, o widget recusa mensagens novas até alguém revisar algumas, e o painel explica o motivo.

Duas outras decisões vieram do mesmo raciocínio. Uma mensagem que ninguém adiciona ao quadro nem vincula a uma publicação é apagada depois de 90 dias, então a fila não cresce para sempre. E uma mensagem enviada não conta na sua cota mensal da API. Um formulário de feedback não deveria custar nada a você quando alguém o usa.

5. O chatbot também deveria ser opcional

Até esta semana, o chat era a única aba que não dava para desativar. Início, Ajuda e Feedback eram extras em volta dele. Tomei essa decisão cedo, quando o widget era só um chat, e ela durou mais que o motivo dela.

Algumas equipes ainda não querem uma IA respondendo aos clientes. Outras têm uma dúzia de artigos de ajuda e sabem que o assistente diria quase sempre que não tem certeza. Outras só querem um lugar para a documentação, o registro de alterações e um formulário de feedback. Para elas, um widget que insiste num chatbot é um widget que elas não instalam.

Perguntar à IA agora é uma aba como as outras. Se você desmarcar, o widget fica sem chat em lugar nenhum: o Início perde a caixa de pergunta, os artigos perdem Perguntar sobre este artigo, e até uma chamada KookeeChat.sendMessage() do seu próprio código não faz nada, para que não seja gerada uma resposta que ninguém leria.

O widget do site sem Perguntar à IA: o Início com um anúncio, links e novidades, e só as abas Início, Ajuda e Feedback

Um detalhe exigiu mais cuidado do que parece. O widget abria no chat e trocava para as abas salvas quando elas chegavam do servidor, um instante depois. Agora que o chat pode estar desligado, esse instante mostraria um chatbot que o dono desativou, e um visitante rápido poderia começar a digitar nele. Por isso, quando o widget abre junto com a página, ele agora espera as configurações por no máximo cinco segundos. Se a requisição travar, o visitante vê o chat em vez de um indicador de carregamento, e as abas configuradas tomam o lugar dele quando chegam.

O painel tem uma proteção própria: não dá para desmarcar a última aba ativa, então o widget sempre mostra alguma coisa.

O cartão Abas em Widget do site → Personalizar: Início, Ajuda e Feedback ativados, Perguntar à IA desativado e uma nota sobre arrastar as abas para mudar a ordem

O que deixei de fora

Respostas. Não há caixa de entrada nem conversa no widget. Se quiser responder a alguém, escreva para o e-mail que a pessoa deixou. Uma conversa com idas e vindas é ferramenta de suporte, e um formulário de feedback que tenta fazer esse papel acaba pior nas duas funções.

Votos. Os visitantes não votam pelo widget. A votação continua no portal, onde uma conta é um voto.

Confiança no que a página diz. O nome, o id e o e-mail que um site passa ao widget aparecem na mensagem marcados como não verificados. São rótulos, não identidades.

Como ativar

A tag de script recebe tudo isso sem nenhuma mudança no seu site. Pelo npm, a aba Feedback precisa do @kookee/react 1.13, e desativar Perguntar à IA precisa do 1.14. Depois, abra Widget do site → Personalizar, marque Feedback e desmarque Perguntar à IA se quiser um widget sem o chat.

Para abrir o formulário a partir de um link seu, como “Relatar um problema”:

js
KookeeChat.open('feedback');

O passo a passo completo está em Receba feedback pelo widget do site, e as outras abas estão em Adicione as abas Início e Ajuda ao seu widget.