Compartir

Reportar un problema - Avisos de clientes en la ficha de producto, enlaces rotos y precios incorrectos con panel

Precio: 29,99 €
Sin impuestos

Deje que sus clientes le avisen cuando una ficha de producto no es correcta. Un discreto botón Reportar un problema abre un diálogo donde el visitante elige el tipo — enlace roto, precio incorrecto, información que falta u otro — y lo describe. Cada aviso se guarda primero en su tienda y se envía por correo después, así no se pierde nada si falla el correo. Gestiónelos desde un panel en el back office con filtros, acciones masivas y exportación CSV, y avise al cliente cuando lo solucione. Sin jQuery, sin overrides. Para PrestaShop 1.7 a 9.

Compartir
Compatible con:
PS 1.7 PS 8 PS 9
Disponible en:
Neerlandés Neerlandés Inglés Inglés Francés Francés Alemán Alemán Italiano Italiano Polaco Polaco Español Español Turco Turco

Sus clientes encuentran sus páginas rotas antes que usted

Todo catálogo se desgasta. Un enlace de proveedor deja de funcionar, un precio se queda de la temporada pasada, una descripción pierde justo el dato que el comprador necesita. Quienes lo detectan son sus visitantes — y si no les da una forma de decírselo, sencillamente se marchan.

Este módulo coloca un discreto botón Reportar un problema en cada ficha de producto. Un clic abre un diálogo, el visitante explica en una frase qué está mal, y el aviso aterriza en su back office.

Cuatro tipos de problema y una frase

El visitante elige entre enlace roto, precio incorrecto, información que falta y otro — usted decide cuáles de los cuatro ofrecer — y escribe una descripción breve, de entre 10 y 1000 caracteres, con un contador en vivo mientras escribe.

El nombre y el correo electrónico son opcionales y solo se muestran a los invitados; a los clientes registrados se les identifica desde su cuenta. La dirección de correo existe para una única finalidad: avisar al cliente de que ya está resuelto.

Se guarda primero y se envía después, y ahí está todo el asunto

El aviso se escribe en su base de datos antes de intentar enviar ningún correo. Si su servidor de correo tiene un mal día, el aviso sigue estando en su lista. El fallo se registra en sus logs en lugar de mostrarse al visitante como un error.

Este orden es la razón por la que existe la versión 4. Siga leyendo.

Un back office que es un flujo de trabajo de verdad

Los avisos llegan a una lista que puede ir despachando. Filtre por estado, tipo de problema, categoría, rango de fechas y texto libre en el mensaje, el nombre y el correo. Seleccione varios y márquelos en curso, resueltos, como spam o elimínelos en una sola acción.

Cada fila se despliega para mostrar el mensaje completo, el producto — con enlaces tanto a su página en la tienda como a su editor —, quien lo reportó, las marcas de tiempo, un selector de estado y un campo de notas para su respuesta. Los avisos pasan por abierto, en curso, resuelto, duplicado y spam.

La exportación a CSV le da exactamente lo que sus filtros seleccionan en ese momento, no la tabla entera.

Cifras que le dicen dónde están los problemas

Un panel de Resumen cuenta lo que está pendiente, lo que llegó esta semana y este mes, lo que ha resuelto y lo que era spam — y cada cifra es un enlace directo a la lista ya filtrada. A su lado están sus cinco productos más reportados, que suele ser el camino más rápido hasta la página que realmente hay que arreglar.

Un widget en la portada del Panel de control muestra cuántos avisos están esperando, y desaparece por completo cuando no hay ninguno.

Avise al cliente de que lo ha solucionado

Cuando marca un aviso como Resuelto, una casilla envía un correo a quien lo reportó. Solo se envía si dejó una dirección, y su nota se incluye en el mensaje. No cuesta nada y es la parte que el cliente recuerda.

Protección antispam que no castiga a las personas reales

Un campo trampa (honeypot), un tiempo mínimo de cumplimentación y un token firmado con HMAC y limitado en el tiempo están siempre activos y no requieren configuración alguna. El token dura dos horas y está vinculado al producto, de modo que no puede reutilizarse en el resto de su catálogo.

Además: un límite por visitante y por producto por hora (1 por defecto, 0 para desactivarlo) con un tope global fijo de 10 avisos por hora y visitante por encima. La deduplicación archiva como Duplicado el mismo problema reportado por la misma persona sobre el mismo producto en 24 horas, en lugar de avisarle a usted dos veces — y todos siguen estando en la lista.

El reCAPTCHA v3 opcional está disponible y desactivado por defecto. Carga código de Google en sus fichas de producto, así que menciónelo en su política de privacidad si lo activa.

La dirección IP de quien reporta nunca se almacena

La limitación de frecuencia tiene que reconocer a un visitante recurrente, así que el módulo guarda hash_hmac('sha256', $ip, _COOKIE_KEY_) — un hash con clave basada en el secreto de su propia tienda — y nunca la dirección en sí.

Que lleve clave es lo importante. Un SHA-256 sin clave de una dirección IP se puede revertir en minutos calculando el hash de los cuatro mil millones de direcciones IPv4; con una clave que solo su tienda conoce, no. La propia batería de tests del módulo lo comprueba de forma explícita.

Los avisos se eliminan cuando se elimina su producto, y todos ellos cuando usted desinstala. Si el módulo oficial de RGPD psgdpr está instalado y activo, su bloque de consentimiento se muestra en el formulario automáticamente.

La versión 4 arregló un módulo que no entregaba un solo aviso desde la 3.1.0

Conviene decirlo sin rodeos, porque es la verdadera razón para actualizar.

Cuando el endpoint de envío se trasladó a controllers/front/ en la 3.1.0, la ruta de la plantilla de correo que había junto a él no se actualizó, de modo que apuntaba a un directorio que no existe. Mail::Send() devolvía false, el módulo respondía die('0') — y como 0 es JSON válido, el front end lo interpretaba y ejecutaba el manejador de éxito.

Todas las tiendas con las versiones 3.1.0 a 3.2.2 estaban tirando a la basura los avisos de sus clientes mientras les daban las gracias por enviarlos. Cuatro versiones publicadas, y como nada se guardaba, no había nada que recuperar. Ahora las rutas de correo se resuelven desde _PS_MODULE_DIR_, y el guardado ocurre antes que el envío.

También cerró un relay de correo abierto

La versión 3.x leía el destinatario de las notificaciones de un campo oculto en la página. Nunca se validaba ni se comparaba con la dirección de la propia tienda, y se pasaba directamente a Mail::Send().

Cualquier visitante anónimo podía hacer que su tienda enviara correo a la dirección que quisiera, con HTML sin escapar en el cuerpo, tantas veces como le apeteciera. Apuntando contra su reputación como remitente. Ahora el destinatario sale de la configuración del módulo y de ningún otro sitio.

El secure_key que supuestamente debía impedirlo era md5(_COOKIE_KEY_ . 'reportbrokenlink') — constante durante toda la vida de la tienda e impreso en cada ficha de producto. Se leía una vez y se podía reutilizar para siempre. Ahora es un token firmado con HMAC, limitado en el tiempo y vinculado al producto.

Lo que escribe el visitante también se escapa a la salida, no solo se limpia a la entrada. PrestaShop sustituye las variables de los correos con un simple str_replace y no escapa nada, de modo que una cadena sin escapar permitiría a quien reporta colar un enlace de phishing en un correo que sale de verdad de su tienda.

El front end se deshizo de jQuery 1.8.2 y de todas las demás dependencias

La versión 3.x cargaba jQuery 1.8.2 desde el CDN de Google en cada ficha de producto. Eso enviaba la IP de todos sus visitantes a Google antes de cualquier consentimiento, servía una librería de 2012 con cuatro avisos de seguridad publicados y sobrescribía el propio jQuery de su plantilla para todo lo que se ejecutara después.

Ya no queda nada de eso. El front end es JavaScript y CSS vanilla, sin dependencias — un archivo pequeño de cada uno, registrados solo en las fichas de producto. Sin jQuery, sin Bootstrap.

Los envíos ahora son POST. La versión 3.x los enviaba como GET — con una opción post: "POST" que jQuery no tiene, así que usaba el método por defecto sin decir nada — lo que metía la dirección de correo de cada persona que reportaba en los logs de acceso de su servidor web.

Accesible porque se construyó así

El diálogo es un diálogo de verdad: el foco entra en él, el tabulador queda atrapado dentro, Escape lo cierra, y el foco vuelve al botón desde el que llegó. Los errores se anuncian a los lectores de pantalla, los indicadores de foco son visibles, se respeta prefers-reduced-motion y pasa a pantalla completa por debajo de 480 px.

Además, al abrirse se traslada a <body>. Renderizado en su sitio quedaba dentro del <form> de añadir al carrito de la plantilla — un formulario anidado que rompía la maquetación y podía enviar lo que no tocaba.

Compatibilidad

PrestaShop 1.7 a 9, PHP 7.2 a 8.3, y la interfaz del módulo en ocho idiomas: alemán, español, francés, inglés, italiano, neerlandés, polaco y turco — de modo que usted trabaja en un back office en español.

Sin overrides, sin modificar el núcleo ni la plantilla, sin jQuery. Cinco hooks, una tabla en la base de datos. Al desinstalar se eliminan la tabla, todos los avisos guardados y toda la configuración — así que exporte antes a CSV si quiere conservarlos.

Preguntas frecuentes

¿Mis clientes necesitan una cuenta para reportar algo?

No, y lo recomendable es dejar activados los avisos de invitados: normalmente son los invitados quienes detectan una página rota. Si lo prefiere, puede limitar el botón a los clientes registrados con un solo ajuste.

¿Dónde aparece el botón?

En las fichas de producto, junto a la información del producto o debajo de ella — displayProductAdditionalInfo o displayFooterProduct (los dos hooks disponibles). Si su plantilla oculta uno, cambie al otro en los ajustes del módulo.

¿Qué pasa si falla mi servidor de correo?

No se pierde nada. El aviso se guarda antes de intentar enviar ningún correo, el fallo va a Parámetros avanzados → Logs, y el aviso le está esperando en su lista. Esta es la mayor diferencia respecto a la versión 3.

¿Se almacenan las direcciones IP de quienes reportan?

No. La limitación de frecuencia usa un hash SHA-256 con clave basada en el secreto de su propia tienda, nunca la dirección en sí. El nombre y el correo son opcionales y se recogen solo para que usted pueda avisar de que ha resuelto el problema.

Un visitante dice que el formulario le indicó que había caducado.

El token firmado dura dos horas, así que quien haya dejado abierta una ficha de producto más tiempo verá ese mensaje. Recargando la página se soluciona. Los tokens están vinculados al producto, que es justo lo que impide reutilizarlos en otra parte de su catálogo.

¿Por qué algunos avisos se marcan como Duplicado y no me llegan por correo?

La deduplicación está activada por defecto: la misma persona, el mismo producto y el mismo tipo de problema en 24 horas se archiva como duplicado en lugar de avisarle a usted dos veces. Todos siguen en la lista — filtre por estado Duplicado, o desactive el ajuste.

¿Puedo sacar los avisos de PrestaShop?

Sí. La exportación a CSV le da exactamente lo que seleccionan sus filtros actuales. Las celdas que empiezan por un carácter que una hoja de cálculo interpretaría como fórmula (=, +, -, @, tabulador o retorno de carro) se neutralizan a propósito, para que nadie pueda colar una fórmula de hoja de cálculo en un archivo que usted va a abrir.

¿Necesita jQuery o Bootstrap?

Ninguno de los dos. El front end es JavaScript y CSS vanilla, un archivo pequeño de cada uno, cargados solo en las fichas de producto. Si está depurando un clic que no hace nada, mire en la consola por si hay un error de código ajeno en la página.

¿Qué ocurre con mis avisos si desinstalo el módulo?

Se eliminan, junto con toda la configuración — se le pide confirmación antes. Exporte a CSV de antemano si cree que los va a querer más adelante.

  • Marca
  • Referencia
    6662
  • ean13
    8691246266620

  • Compatibilidad
    Prestashop 1.4
    Prestashop 1.5
    Prestashop 1.6
    Prestashop 1.7
    Prestashop 8
    Prestashop 9
  • Traducciones Disponibles del Módulo
    Alemán
    Español
    Francés
    Inglés
    Italiano
    Neerlandés
    Polaco
    Turco

Compatibilidad
PS1.7 PS8 PS9
Traducciones
Neerlandés Neerlandés
Inglés Inglés
Francés Francés
Alemán Alemán
Italiano Italiano
Polaco Polaco
Español Español
Turco Turco
Demostración
Iniciar sesión: demo@demo.com / Demodemo123!
Desarrollador
MEG Venture MEG Venture

4 productos más en la misma categoría

Compartir
Cargando...

Utilizamos cookies para ofrecerte la mejor experiencia de compra. Al hacer clic en «Aceptar», aceptas su uso tal y como se describe en nuestra política de privacidad.

Más información
Volver arriba