El tablero de comentarios de Kookee vive en el portal alojado y pide una cuenta antes de que nadie pueda publicar. Me gusta así. Una cuenta es un voto, cada publicación tiene un autor al que puedes responder, y tu equipo decide qué queda a la vista del público.
Ahora piensa en quién encuentra de verdad los errores. Alguien va por la mitad de una exportación y al PDF le falta el último gráfico. Para contártelo, tiene que salir de la página, encontrar tu portal, crear una cuenta, confirmar su correo y escribir una publicación que leerán desconocidos. Algunos lo harán. La mayoría cerrará la pestaña, o se lo comentará a soporte una semana después en dos palabras.
Por eso el widget del sitio ahora tiene una pestaña Comentarios. Un visitante escribe lo que pasó, en la página donde pasó, y lo envía sin cuenta. El mensaje llega a tu equipo y a nadie más. En la misma versión hice algo que llevaba tiempo posponiendo: el chat con IA, Preguntar a la IA, pasó a ser opcional.

Estas son las reglas con las que lo construí.
1. Pide el mensaje, no una cuenta
El formulario pregunta tres cosas: de qué se trata (una idea, una mejora, un error u otra cosa), el mensaje en sí y un correo, si el visitante quiere respuesta. Si tu sitio ya le dice al widget quién ha iniciado sesión, el correo aparece rellenado. La página en la que estaba viaja con el mensaje, así que «la exportación no funciona» llega con la dirección de la página donde falló.
Sí consideré el atajo obvio. Kookee ya admite usuarios invitados, así que cada mensaje podría haber creado uno. Lo descarté. Una cuenta de invitado por mensaje llena tu lista de usuarios de gente que nunca se registró, y promete algo que no existe: una cuenta en la que nadie puede iniciar sesión, con una publicación que nadie volverá a encontrar. Un mensaje del widget se guarda como lo que es, un mensaje, con los datos de contacto que el visitante quiso dejar.
2. Nada se publica hasta que una persona lo lea
Un formulario abierto en internet recibe tres tipos de mensajes: los útiles, las ideas a medio pensar y el spam. Si fueran directos a un tablero público, tu tablero parecería tu bandeja de entrada.
Así que los mensajes esperan. La página Sugerencias de tu panel tiene una segunda vista, Desde el widget, con cada mensaje, su categoría, quién lo envió si lo dijo, la página de la que vino y cuándo llegó.

Al abrir uno tienes tres opciones. Añadir al tablero lo convierte en una publicación en tu primera columna abierta, con el título que elijas. Vincular a una publicación existente sirve para una petición que ya tienes: el mensaje se suma a esa publicación en lugar de duplicarla. Descartar lo elimina.

De las tres, espero que vincular sea la que más importe. Diez personas que describen la misma función que falta de diez maneras distintas deberían convertirse en una sola publicación con diez personas detrás. La publicación conserva sus mensajes, y quienes dejaron un correo pueden saber de ti cuando la función salga.
3. Avisa al equipo una vez por hora, no una vez por mensaje
Una notificación por cada mensaje funciona hasta el primer día con mucho movimiento. A partir de ahí, enseña a todos a ignorar las notificaciones.
Así que el widget no avisa a nadie en tiempo real. Una vez por hora, si llegaron mensajes nuevos, cada persona del equipo recibe una notificación en el panel y un correo que dice que hay mensajes esperando. Diez mensajes en una hora generan un correo. Una semana tranquila, ninguno.
4. Un formulario abierto necesita límites que una persona nunca alcanza
Todo lo que un visitante puede enviar sin cuenta también lo puede enviar un script. Los límites quedan muy por encima de lo que hace una persona y muy por debajo de lo que hace un script: 30 mensajes por hora desde una misma dirección, 120 por hora para todo el proyecto y como máximo 1000 esperando revisión. Cuando la cola está llena, el widget rechaza los mensajes nuevos hasta que alguien revise algunos, y el panel explica por qué.
Otras dos decisiones salieron de la misma idea. Un mensaje que nadie añade al tablero ni vincula a una publicación se elimina a los 90 días, para que la cola no crezca sin fin. Y un mensaje enviado no cuenta para tu cuota mensual de la API. Un formulario de comentarios no debería costarte nada cuando alguien lo usa.
5. El chatbot también debería ser opcional
Hasta esta semana, el chat era la única pestaña que no se podía desactivar. Inicio, Ayuda y Comentarios eran extras a su alrededor. Tomé esa decisión al principio, cuando el widget era solo un chat, y siguió en pie cuando su motivo ya había desaparecido.
Algunos equipos todavía no quieren que una IA responda a sus clientes. Otros tienen una docena de artículos de ayuda y saben que el asistente diría casi siempre que no está seguro. Otros solo quieren un lugar para su documentación, su registro de cambios y un formulario de comentarios. Para ellos, un widget que insiste en un chatbot es un widget que no instalan.
Preguntar a la IA ahora es una pestaña como las demás. Desmárcala y el widget no tiene chat en ninguna parte: Inicio pierde su cuadro de preguntas, los artículos pierden Preguntar sobre este artículo, e incluso una llamada a KookeeChat.sendMessage() desde tu propio código no hace nada, así que no se genera ninguna respuesta que nadie leería.

Un detalle requirió más cuidado del que parece. Antes, el widget se abría en el chat y cambiaba a las pestañas guardadas cuando estas llegaban del servidor, un instante después. Ahora que el chat puede estar desactivado, ese instante mostraría un chatbot que el propietario había apagado, y un visitante rápido podría empezar a escribir en él. Así que, si el widget se abre al cargar la página, ahora espera su configuración, como mucho cinco segundos. Si la petición se queda colgada, el visitante ve el chat en lugar de un indicador de carga, y las pestañas reales toman el relevo cuando llegan.
El panel de Kookee tiene una protección propia: la última pestaña activada no se puede desmarcar, así que un widget siempre muestra algo.

Lo que dejé fuera
Respuestas. El widget no tiene bandeja de entrada ni conversación. Si quieres responder a alguien, escribe al correo que dejó. Un hilo de respuestas es una herramienta de soporte, y un formulario de comentarios que intenta serlo acaba siendo una versión peor de ambos.
Votos. Los visitantes no pueden votar desde el widget. Los votos siguen en el portal, donde una cuenta es un voto.
Confiar en lo que dice la página. El nombre, el id y el correo que un sitio pasa al widget aparecen en el mensaje marcados como no verificados. Son etiquetas, no identidades.
Cómo activarlo
Con la etiqueta script, todo esto llega sin tocar tu sitio. Desde npm, la pestaña Comentarios necesita @kookee/react 1.13, y desactivar Preguntar a la IA necesita la 1.14. Después abre Widget del sitio → Personalizar, marca Sugerencias y desmarca Preguntar a la IA si quieres un widget sin chat.
Para abrir el formulario desde un enlace propio de «Informar de un problema»:
KookeeChat.open('feedback');
La guía completa está en Recopila comentarios desde el widget de tu sitio, y las demás pestañas se explican en Añade las pestañas Inicio y Ayuda a tu widget.